From 9230369a383b8bdd4b51940c69000a4fbc4aa6b1 Mon Sep 17 00:00:00 2001 From: j180240 Date: Tue, 13 Sep 2016 15:37:48 +0800 Subject: [PATCH] clear the old code. Change-Id: I6e3116979251f69e728f2a20006421948e1c4b35 Signed-off-by: j180240 --- .gitattributes | 2 - .gitreview | 4 - nsoc-iui/pom.xml | 31 - .../main/resources/webroot/nsoc/csarPackage.html | 116 - .../resources/webroot/nsoc/css/datatable-sort.css | 30 - .../main/resources/webroot/nsoc/css/fileupload.css | 81 - .../main/resources/webroot/nsoc/css/hostMirror.css | 447 - .../main/resources/webroot/nsoc/css/package.css | 415 - .../webroot/nsoc/css/platform/animate.min.css | 21 - .../resources/webroot/nsoc/css/platform/skill.css | 89 - .../main/resources/webroot/nsoc/css/software.css | 423 - .../main/resources/webroot/nsoc/css/template.css | 405 - .../resources/webroot/nsoc/css/templateDetail.css | 480 - .../main/resources/webroot/nsoc/css/topology.css | 393 - .../webroot/nsoc/css/virtualApplication.css | 502 - .../src/main/resources/webroot/nsoc/css/vnfm.css | 492 - .../main/resources/webroot/nsoc/hostMirror.html | 176 - .../nsoc/i18n/nfv-nso-iui-i18n-en-US.properties | 316 - .../nsoc/i18n/nfv-nso-iui-i18n-zh-CN.properties | 316 - .../main/resources/webroot/nsoc/images/down.png | Bin 2938 -> 0 bytes .../resources/webroot/nsoc/images/pointes_blue.png | Bin 7411 -> 0 bytes .../webroot/nsoc/images/pointes_green.png | Bin 5329 -> 0 bytes .../resources/webroot/nsoc/images/sort_asc.png | Bin 1118 -> 0 bytes .../webroot/nsoc/images/sort_asc_disabled.png | Bin 148 -> 0 bytes .../resources/webroot/nsoc/images/sort_both.png | Bin 1136 -> 0 bytes .../resources/webroot/nsoc/images/sort_desc.png | Bin 1127 -> 0 bytes .../webroot/nsoc/images/sort_desc_disabled.png | Bin 146 -> 0 bytes .../src/main/resources/webroot/nsoc/images/up.png | Bin 2926 -> 0 bytes .../webroot/nsoc/js/component/commonUtil.js | 128 - .../webroot/nsoc/js/component/loadi18n_nsoc.js | 23 - .../webroot/nsoc/js/component/serverPageTable.js | 407 - .../webroot/nsoc/js/hostMirror/hmController.js | 254 - .../resources/webroot/nsoc/js/hostMirror/hmUtil.js | 59 - .../webroot/nsoc/js/hostMirror/host-validate.js | 56 - .../webroot/nsoc/js/package/pmController.js | 223 - .../resources/webroot/nsoc/js/package/pmUtil.js | 137 - .../webroot/nsoc/js/softwareMirror/smController.js | 147 - .../webroot/nsoc/js/softwareMirror/smUtil.js | 33 - .../webroot/nsoc/js/template/tmController.js | 83 - .../webroot/nsoc/js/template/tmDetailController.js | 241 - .../webroot/nsoc/js/template/tmDetailUtil.js | 44 - .../resources/webroot/nsoc/js/template/tmUtil.js | 46 - .../resources/webroot/nsoc/js/template/topoUtil.js | 617 - .../webroot/nsoc/js/virtualApplication/validate.js | 64 - .../nsoc/js/virtualApplication/vmAppController.js | 710 - .../js/virtualApplication/vmAppDetailController.js | 281 - .../nsoc/js/virtualApplication/vmAppDetailUtil.js | 80 - .../nsoc/js/virtualApplication/vmAppUtil.js | 510 - .../webroot/nsoc/js/vnfm/vnfm-validate.js | 66 - .../webroot/nsoc/js/vnfm/vnfmController.js | 275 - .../resources/webroot/nsoc/js/vnfm/vnfmUtil.js | 73 - .../resources/webroot/nsoc/softwareMirror.html | 163 - .../src/main/resources/webroot/nsoc/template.html | 71 - .../resources/webroot/nsoc/templateDetail.html | 126 - .../src/main/resources/webroot/nsoc/topology.html | 122 - .../resources/webroot/nsoc/virtualApplication.html | 280 - .../webroot/nsoc/virtualApplicationDetail.html | 144 - .../webroot/nsoc/virtualApplicationScale.html | 152 - .../src/main/resources/webroot/nsoc/vnfmView.html | 194 - openoiui-standlone/pom.xml | 195 - openoiui-standlone/src/main/assembly/run.bat | 20 - openoiui-standlone/src/main/assembly/run.sh | 5 - openoiui-standlone/src/main/assembly/stop.bat | 34 - openoiui-standlone/src/main/assembly/stop.sh | 43 - .../webroot/component/openotopo/openotopo.js | 302 - .../webroot/component/openotopo/openotopo.min.js | 18 - .../hsif/openo-nsoc/i18n/loadi18n-openo-nsoc.js | 20 - .../i18n/openo-nsoc-i18n-en-US.properties | 23 - .../i18n/openo-nsoc-i18n-zh-CN.properties | 23 - .../hsif/openo-roc/i18n/loadi18n-openo-roc.js | 21 - .../openo-roc/i18n/openo-roc-i18n-en-US.properties | 22 - .../openo-roc/i18n/openo-roc-i18n-zh-CN.properties | 22 - .../hsif/openo-umc/i18n/loadi18n-openo-umc.js | 19 - .../openo-umc/i18n/openo-umc-i18n-en-US.properties | 27 - .../openo-umc/i18n/openo-umc-i18n-zh-CN.properties | 27 - ...web-framework-integration-i18n-en-US.properties | 224 - ...web-framework-integration-i18n-zh-CN.properties | 224 - ...-portal-login-integration-i18n-en-US.properties | 53 - ...-portal-login-integration-i18n-zh-CN.properties | 53 - .../webroot/framework/img/integration/logo.png | Bin 5668 -> 0 bytes .../framework/img/integration/netnumenLogo.png | Bin 4097 -> 0 bytes .../framework/img/integration/zte_logo_16.gif | Bin 106 -> 0 bytes .../framework/img/integration/zte_logo_white.png | Bin 5717 -> 0 bytes .../webroot/framework/img/integration/ztelogo.png | Bin 2790 -> 0 bytes .../assembly/webroot/framework/js/core/const.js | 57 - .../assembly/webroot/framework/json/main-page.json | 105 - .../src/main/assembly/webroot/framework/login.html | 187 - .../webroot/framework/menus/main_Fmegabar.html | 62 - .../webroot/framework/menus/main_Fsiderbar.html | 297 - .../webroot/framework/menus/main_siderbar.html | 231 - .../assembly/webroot/framework/menus/readme.txt | 17 - pom.xml | 43 - roc-iui/pom.xml | 31 - .../main/resources/webroot/roc-rs-view/css/res.css | 593 - .../roc-rs-view/i18n/loadi18nApp_ngict-rs_view.js | 42 - .../i18n/roc-rs-view-iui-i18n-en-US.properties | 215 - .../i18n/roc-rs-view-iui-i18n-zh-CN.properties | 215 - .../resources/webroot/roc-rs-view/images/down.png | Bin 2938 -> 0 bytes .../resources/webroot/roc-rs-view/images/up.png | Bin 2926 -> 0 bytes .../webroot/roc-rs-view/js/resController.js | 306 - .../resources/webroot/roc-rs-view/js/resUtil.js | 215 - .../resources/webroot/roc-rs-view/resView.html | 1062 - .../src/main/resources/webroot/roc-sdn/css/sdn.css | 492 - .../resources/webroot/roc-sdn/i18n/loadi18nApp.js | 42 - .../roc-sdn/i18n/roc-sdn-iui-i18n-en-US.properties | 49 - .../roc-sdn/i18n/roc-sdn-iui-i18n-zh-CN.properties | 49 - .../resources/webroot/roc-sdn/js/sdn-validate.js | 67 - .../resources/webroot/roc-sdn/js/sdnController.js | 202 - .../main/resources/webroot/roc-sdn/js/sdnUtil.js | 89 - .../main/resources/webroot/roc-sdn/sdnView.html | 173 - .../resources/webroot/roc-vim/css/animate.min.css | 23 - .../resources/webroot/roc-vim/css/bootstrap.css | 4965 -- .../main/resources/webroot/roc-vim/css/skill.css | 89 - .../src/main/resources/webroot/roc-vim/css/vim.css | 482 - .../resources/webroot/roc-vim/css/vimChart.css | 54 - .../resources/webroot/roc-vim/i18n/loadi18nApp.js | 43 - .../roc-vim/i18n/roc-vim-iui-i18n-en-US.properties | 89 - .../roc-vim/i18n/roc-vim-iui-i18n-zh-CN.properties | 90 - .../resources/webroot/roc-vim/js/client-cometd.js | 63 - .../webroot/roc-vim/js/jqBootstrapValidation.js | 927 - .../resources/webroot/roc-vim/js/vim-validate.js | 101 - .../main/resources/webroot/roc-vim/js/vimChart.js | 383 - .../webroot/roc-vim/js/vimChartController.js | 162 - .../resources/webroot/roc-vim/js/vimController.js | 315 - .../main/resources/webroot/roc-vim/js/vimUtil.js | 51 - .../main/resources/webroot/roc-vim/vimChart.html | 113 - .../main/resources/webroot/roc-vim/vimView.html | 217 - uiframe-iui/pom.xml | 31 - .../webroot/component/css/ZteIctIcons/Read Me.txt | 7 - .../component/css/ZteIctIcons/demo-files/demo.css | 152 - .../component/css/ZteIctIcons/demo-files/demo.js | 30 - .../webroot/component/css/ZteIctIcons/demo.html | 5015 -- .../css/ZteIctIcons/fonts/ZteIctIcons.eot | Bin 96492 -> 0 bytes .../css/ZteIctIcons/fonts/ZteIctIcons.svg | 321 - .../css/ZteIctIcons/fonts/ZteIctIcons.ttf | Bin 96312 -> 0 bytes .../css/ZteIctIcons/fonts/ZteIctIcons.woff | Bin 96388 -> 0 bytes .../component/css/ZteIctIcons/selection.json | 9569 ---- .../webroot/component/css/ZteIctIcons/style.css | 960 - .../resources/webroot/component/css/component.css | 34 - .../backstretch/jquery.backstretch.min.js | 4 - .../component/thirdparty/bootbox/LICENSE.md | 23 - .../webroot/component/thirdparty/bootbox/README.md | 91 - .../component/thirdparty/bootbox/bootbox.min.js | 6 - .../thirdparty/bootstrap-hover-dropdown/LICENSE | 24 - .../thirdparty/bootstrap-hover-dropdown/README.md | 122 - .../bootstrap-hover-dropdown.js | 14 - .../bootstrap-hover-dropdown.min.js | 13 - .../thirdparty/bootstrap/css/bootstrap-dt.css | 5804 -- .../thirdparty/bootstrap/css/bootstrap.min.css | 7 - .../fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes .../fonts/glyphicons-halflings-regular.svg | 288 - .../fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes .../component/thirdparty/bootstrap/js/bootstrap.js | 1951 - .../thirdparty/bootstrap/js/bootstrap.min.js | 6 - .../bootstrap/js/bootstrap2-typeahead.min.js | 21 - .../webroot/component/thirdparty/cometd/cometd.js | 3045 -- .../thirdparty/cometd/cometd/AckExtension.js | 112 - .../thirdparty/cometd/cometd/ReloadExtension.js | 234 - .../thirdparty/cometd/cometd/TimeStampExtension.js | 42 - .../thirdparty/cometd/cometd/TimeSyncExtension.js | 216 - .../thirdparty/cometd/jquery/jquery.cometd-ack.js | 34 - .../cometd/jquery/jquery.cometd-reload.js | 42 - .../cometd/jquery/jquery.cometd-timestamp.js | 34 - .../cometd/jquery/jquery.cometd-timesync.js | 34 - .../thirdparty/cometd/jquery/jquery.cometd.js | 139 - .../data-tables/images/loading-spinner-grey.gif | Bin 5203 -> 0 bytes .../thirdparty/data-tables/images/sort_asc.png | Bin 1118 -> 0 bytes .../thirdparty/data-tables/images/sort_both.png | Bin 1136 -> 0 bytes .../thirdparty/data-tables/images/sort_desc.png | Bin 1127 -> 0 bytes .../thirdparty/data-tables/jquery.dataTables.js | 12101 ---- .../data-tables/jquery.dataTables.min.js | 155 - .../component/thirdparty/fakeLoader/fakeLoader.css | 382 - .../thirdparty/fakeLoader/fakeLoader.min.js | 174 - .../thirdparty/font-awesome/css/font-awesome.css | 1672 - .../font-awesome/css/font-awesome.min.css | 4 - .../thirdparty/font-awesome/fonts/FontAwesome.otf | Bin 85908 -> 0 bytes .../font-awesome/fonts/fontawesome-webfont.eot | Bin 56006 -> 0 bytes .../font-awesome/fonts/fontawesome-webfont.svg | 520 - .../font-awesome/fonts/fontawesome-webfont.ttf | Bin 112160 -> 0 bytes .../font-awesome/fonts/fontawesome-webfont.woff | Bin 65452 -> 0 bytes .../font-awesome/less/bordered-pulled.less | 16 - .../thirdparty/font-awesome/less/core.less | 11 - .../thirdparty/font-awesome/less/fixed-width.less | 6 - .../thirdparty/font-awesome/less/font-awesome.less | 17 - .../thirdparty/font-awesome/less/icons.less | 552 - .../thirdparty/font-awesome/less/larger.less | 13 - .../thirdparty/font-awesome/less/list.less | 19 - .../thirdparty/font-awesome/less/mixins.less | 25 - .../thirdparty/font-awesome/less/path.less | 14 - .../font-awesome/less/rotated-flipped.less | 20 - .../thirdparty/font-awesome/less/spinning.less | 29 - .../thirdparty/font-awesome/less/stacked.less | 20 - .../thirdparty/font-awesome/less/variables.less | 561 - .../font-awesome/scss/_bordered-pulled.scss | 16 - .../thirdparty/font-awesome/scss/_core.scss | 11 - .../thirdparty/font-awesome/scss/_fixed-width.scss | 6 - .../thirdparty/font-awesome/scss/_icons.scss | 552 - .../thirdparty/font-awesome/scss/_larger.scss | 13 - .../thirdparty/font-awesome/scss/_list.scss | 19 - .../thirdparty/font-awesome/scss/_mixins.scss | 25 - .../thirdparty/font-awesome/scss/_path.scss | 14 - .../font-awesome/scss/_rotated-flipped.scss | 20 - .../thirdparty/font-awesome/scss/_spinning.scss | 29 - .../thirdparty/font-awesome/scss/_stacked.scss | 20 - .../thirdparty/font-awesome/scss/_variables.scss | 561 - .../thirdparty/font-awesome/scss/font-awesome.scss | 17 - .../component/thirdparty/freewall/freewall.js | 1306 - .../jquery-blockui/jquery.blockui.min.js | 15 - .../thirdparty/jquery-cokie/jquery.cokie.min.js | 9 - .../thirdparty/jquery-validation/README.md | 72 - .../jquery-validation/dist/additional-methods.js | 617 - .../dist/additional-methods.min.js | 11 - .../jquery-validation/dist/jquery.validate.js | 1231 - .../jquery-validation/dist/jquery.validate.min.js | 12 - .../jquery-validation/js/additional-methods.js | 928 - .../jquery-validation/js/additional-methods.min.js | 4 - .../jquery-validation/js/jquery.validate.js | 1357 - .../jquery-validation/js/jquery.validate.min.js | 4 - .../js/localization/messages_ar.js | 33 - .../js/localization/messages_ar.min.js | 4 - .../js/localization/messages_bg.js | 33 - .../js/localization/messages_bg.min.js | 4 - .../js/localization/messages_ca.js | 33 - .../js/localization/messages_ca.min.js | 4 - .../js/localization/messages_cs.js | 33 - .../js/localization/messages_cs.min.js | 4 - .../js/localization/messages_da.js | 30 - .../js/localization/messages_da.min.js | 4 - .../js/localization/messages_de.js | 30 - .../js/localization/messages_de.min.js | 4 - .../js/localization/messages_el.js | 33 - .../js/localization/messages_el.min.js | 4 - .../js/localization/messages_es.js | 36 - .../js/localization/messages_es.min.js | 4 - .../js/localization/messages_es_AR.js | 37 - .../js/localization/messages_es_AR.min.js | 4 - .../js/localization/messages_et.js | 31 - .../js/localization/messages_et.min.js | 4 - .../js/localization/messages_eu.js | 33 - .../js/localization/messages_eu.min.js | 4 - .../js/localization/messages_fa.js | 36 - .../js/localization/messages_fa.min.js | 4 - .../js/localization/messages_fi.js | 31 - .../js/localization/messages_fi.min.js | 4 - .../js/localization/messages_fr.js | 59 - .../js/localization/messages_fr.min.js | 4 - .../js/localization/messages_gl.js | 38 - .../js/localization/messages_gl.min.js | 4 - .../js/localization/messages_he.js | 33 - .../js/localization/messages_he.min.js | 4 - .../js/localization/messages_hr.js | 33 - .../js/localization/messages_hr.min.js | 4 - .../js/localization/messages_hu.js | 32 - .../js/localization/messages_hu.min.js | 4 - .../js/localization/messages_id.js | 32 - .../js/localization/messages_id.min.js | 4 - .../js/localization/messages_is.js | 31 - .../js/localization/messages_is.min.js | 4 - .../js/localization/messages_it.js | 36 - .../js/localization/messages_it.min.js | 4 - .../js/localization/messages_ja.js | 33 - .../js/localization/messages_ja.min.js | 4 - .../js/localization/messages_ka.js | 33 - .../js/localization/messages_ka.min.js | 4 - .../js/localization/messages_kk.js | 33 - .../js/localization/messages_kk.min.js | 4 - .../js/localization/messages_ko.js | 33 - .../js/localization/messages_ko.min.js | 4 - .../js/localization/messages_lt.js | 33 - .../js/localization/messages_lt.min.js | 4 - .../js/localization/messages_lv.js | 33 - .../js/localization/messages_lv.min.js | 4 - .../js/localization/messages_my.js | 33 - .../js/localization/messages_my.min.js | 4 - .../js/localization/messages_nl.js | 43 - .../js/localization/messages_nl.min.js | 4 - .../js/localization/messages_no.js | 33 - .../js/localization/messages_no.min.js | 4 - .../js/localization/messages_pl.js | 33 - .../js/localization/messages_pl.min.js | 4 - .../js/localization/messages_pt_BR.js | 37 - .../js/localization/messages_pt_BR.min.js | 4 - .../js/localization/messages_pt_PT.js | 37 - .../js/localization/messages_pt_PT.min.js | 4 - .../js/localization/messages_ro.js | 33 - .../js/localization/messages_ro.min.js | 4 - .../js/localization/messages_ru.js | 33 - .../js/localization/messages_ru.min.js | 4 - .../js/localization/messages_si.js | 33 - .../js/localization/messages_si.min.js | 4 - .../js/localization/messages_sk.js | 30 - .../js/localization/messages_sk.min.js | 4 - .../js/localization/messages_sl.js | 33 - .../js/localization/messages_sl.min.js | 4 - .../js/localization/messages_sr.js | 33 - .../js/localization/messages_sr.min.js | 4 - .../js/localization/messages_sr_lat.js | 33 - .../js/localization/messages_sr_lat.min.js | 4 - .../js/localization/messages_sv.js | 31 - .../js/localization/messages_sv.min.js | 4 - .../js/localization/messages_th.js | 33 - .../js/localization/messages_th.min.js | 4 - .../js/localization/messages_tj.js | 33 - .../js/localization/messages_tj.min.js | 4 - .../js/localization/messages_tr.js | 33 - .../js/localization/messages_tr.min.js | 4 - .../js/localization/messages_uk.js | 33 - .../js/localization/messages_uk.min.js | 4 - .../js/localization/messages_vi.js | 33 - .../js/localization/messages_vi.min.js | 4 - .../js/localization/messages_zh.js | 33 - .../js/localization/messages_zh.min.js | 4 - .../js/localization/messages_zh_TW.js | 34 - .../js/localization/messages_zh_TW.min.js | 4 - .../js/localization/methods_de.js | 22 - .../js/localization/methods_de.min.js | 4 - .../js/localization/methods_es_CL.js | 22 - .../js/localization/methods_es_CL.min.js | 4 - .../js/localization/methods_fi.js | 22 - .../js/localization/methods_fi.min.js | 4 - .../js/localization/methods_nl.js | 19 - .../js/localization/methods_nl.min.js | 4 - .../js/localization/methods_pt.js | 19 - .../js/localization/methods_pt.min.js | 4 - .../jquery.i18n/jquery.i18n.properties-1.0.9.js | 479 - .../thirdparty/jquery/jquery-1.10.2.min.js | 4 - .../component/thirdparty/jquery/jquery-1.11.2.js | 10346 ---- .../thirdparty/jquery/jquery-1.11.2.min.js | 4 - .../thirdparty/jquery/jquery-1.11.2.min.map | 1 - .../thirdparty/jquery/jquery-1.4.4.min.js | 167 - .../component/thirdparty/jquery/jquery-2.1.3.js | 9205 ---- .../thirdparty/jquery/jquery-2.1.3.min.js | 4 - .../thirdparty/jquery/jquery-2.1.3.min.map | 1 - .../thirdparty/jquery/jquery-migrate-1.2.1.js | 521 - .../thirdparty/jquery/jquery-migrate-1.2.1.min.js | 2 - .../component/thirdparty/jquery/jquery.reveal.js | 152 - .../thirdparty/select2/select2-custom.css | 234 - .../component/thirdparty/select2/select2.css | 607 - .../component/thirdparty/select2/select2.min.js | 22 - .../webroot/component/thirdparty/uniform/README.md | 389 - .../thirdparty/uniform/css/uniform.default.css | 366 - .../thirdparty/uniform/css/uniform.default.min.css | 1 - .../thirdparty/uniform/css/uniform.default.scss | 150 - .../thirdparty/uniform/images/bg-input-focus.png | Bin 143 -> 0 bytes .../thirdparty/uniform/images/bg-input.png | Bin 143 -> 0 bytes .../component/thirdparty/uniform/images/sprite.png | Bin 31815 -> 0 bytes .../thirdparty/uniform/images/sprite_original.png | Bin 34229 -> 0 bytes .../component/thirdparty/uniform/jquery.uniform.js | 1068 - .../thirdparty/uniform/jquery.uniform.min.js | 1 - .../main/resources/webroot/framework/about.html | 55 - .../webroot/framework/appRes/i18n/readme.txt | 38 - .../webroot/framework/appRes/img/readme.txt | 31 - .../webroot/framework/appRes/js/custom-const.js | 1 - .../webroot/framework/appRes/js/custom.js | 1 - .../resources/webroot/framework/changepwd.html | 92 - .../resources/webroot/framework/css/animate.css | 3278 -- .../resources/webroot/framework/css/animate.css.gz | Bin 5947 -> 0 bytes .../webroot/framework/css/changepwd-apk.css | 84 - .../resources/webroot/framework/css/changepwd.css | 84 - .../webroot/framework/css/custom_default.css | 16 - .../resources/webroot/framework/css/login-apk.css | 183 - .../main/resources/webroot/framework/css/login.css | 201 - .../webroot/framework/css/more-operation.css | 167 - .../webroot/framework/css/ngict-component.css | 773 - .../resources/webroot/framework/css/plugins.css | 1561 - .../resources/webroot/framework/css/plugins.css.gz | Bin 6002 -> 0 bytes .../main/resources/webroot/framework/css/print.css | 53 - .../resources/webroot/framework/css/print.css.gz | Bin 216 -> 0 bytes .../webroot/framework/css/style-custom.css | 1510 - .../webroot/framework/css/style-custom.css.gz | Bin 5338 -> 0 bytes .../webroot/framework/css/style-ict-bootstrap.css | 838 - .../resources/webroot/framework/css/style-ict.css | 820 - .../webroot/framework/css/style-responsive.css | 989 - .../main/resources/webroot/framework/css/style.css | 4715 -- .../webroot/framework/css/themes/black.css | 388 - .../webroot/framework/css/themes/black.css.gz | Bin 1810 -> 0 bytes .../webroot/framework/css/themes/black_ifrm.css | 207 - .../webroot/framework/css/themes/black_ifrm.css.gz | Bin 896 -> 0 bytes .../webroot/framework/css/themes/blue.css | 374 - .../webroot/framework/css/themes/blue.css.gz | Bin 1819 -> 0 bytes .../webroot/framework/css/themes/blue_ifrm.css | 207 - .../webroot/framework/css/themes/blue_ifrm.css.gz | Bin 901 -> 0 bytes .../webroot/framework/css/themes/brown.css | 376 - .../webroot/framework/css/themes/brown.css.gz | Bin 1849 -> 0 bytes .../webroot/framework/css/themes/brown_ifrm.css | 207 - .../webroot/framework/css/themes/brown_ifrm.css.gz | Bin 904 -> 0 bytes .../webroot/framework/css/themes/grey.css | 372 - .../webroot/framework/css/themes/grey.css.gz | Bin 1778 -> 0 bytes .../webroot/framework/css/themes/grey_ifrm.css | 209 - .../webroot/framework/css/themes/grey_ifrm.css.gz | Bin 901 -> 0 bytes .../webroot/framework/css/themes/light.css | 479 - .../webroot/framework/css/themes/light.css.gz | Bin 2139 -> 0 bytes .../webroot/framework/css/themes/light_ifrm.css | 207 - .../webroot/framework/css/themes/light_ifrm.css.gz | Bin 914 -> 0 bytes .../webroot/framework/css/themes/purple.css | 375 - .../webroot/framework/css/themes/purple.css.gz | Bin 1858 -> 0 bytes .../webroot/framework/css/themes/purple_ifrm.css | 207 - .../framework/css/themes/purple_ifrm.css.gz | Bin 916 -> 0 bytes .../webroot/framework/css/themes/zteblue.css | 398 - .../webroot/framework/css/themes/zteblue.css.gz | Bin 1986 -> 0 bytes .../webroot/framework/css/themes/zteblue_ifrm.css | 206 - .../framework/css/themes/zteblue_ifrm.css.gz | Bin 915 -> 0 bytes .../webroot/framework/css/themes/ztebluelight.css | 435 - .../framework/css/themes/ztebluelight.css.gz | Bin 2456 -> 0 bytes .../webroot/framework/css/themes/ztebluelight2.css | 505 - .../framework/css/themes/ztebluelight2.css.gz | Bin 2163 -> 0 bytes .../framework/css/themes/ztebluelight2_ifrm.css | 229 - .../framework/css/themes/ztebluelight2_ifrm.css.gz | Bin 1469 -> 0 bytes .../webroot/framework/css/themes/ztebluelight3.css | 497 - .../framework/css/themes/ztebluelight3.css.gz | Bin 2354 -> 0 bytes .../framework/css/themes/ztebluelight3_ifrm.css | 220 - .../framework/css/themes/ztebluelight3_ifrm.css.gz | Bin 930 -> 0 bytes .../webroot/framework/css/themes/ztebluelight4.css | 605 - .../framework/css/themes/ztebluelight4.css.gz | Bin 2430 -> 0 bytes .../framework/css/themes/ztebluelight4_ifrm.css | 209 - .../framework/css/themes/ztebluelight4_ifrm.css.gz | Bin 1308 -> 0 bytes .../framework/css/themes/ztebluelight_ifrm.css | 228 - .../framework/css/themes/ztebluelight_ifrm.css.gz | Bin 1450 -> 0 bytes .../resources/webroot/framework/css/zte-style.css | 255 - .../main/resources/webroot/framework/default.html | 564 - .../i18n/web-framework-i18n-en-US.properties | 225 - .../i18n/web-framework-i18n-zh-CN.properties | 226 - ...web-framework-integration-i18n-en-US.properties | 210 - ...web-framework-integration-i18n-zh-CN.properties | 210 - .../i18n/web-portal-login-i18n-en-US.properties | 49 - .../i18n/web-portal-login-i18n-zh-CN.properties | 49 - ...-portal-login-integration-i18n-en-US.properties | 50 - ...-portal-login-integration-i18n-zh-CN.properties | 50 - .../webroot/framework/img/about/about-bg-dark.png | Bin 87487 -> 0 bytes .../webroot/framework/img/about/about-bg-light.png | Bin 95527 -> 0 bytes .../webroot/framework/img/about/about-netnumen.png | Bin 14772 -> 0 bytes .../webroot/framework/img/accordion-plusminus.png | Bin 162 -> 0 bytes .../webroot/framework/img/ajax-loading.gif | Bin 29959 -> 0 bytes .../webroot/framework/img/ajax-modal-loading.gif | Bin 27953 -> 0 bytes .../resources/webroot/framework/img/arrow-down.png | Bin 966 -> 0 bytes .../resources/webroot/framework/img/avatar.png | Bin 2016 -> 0 bytes .../resources/webroot/framework/img/bg-opacity.png | Bin 130 -> 0 bytes .../webroot/framework/img/bg-white-lock.png | Bin 2816 -> 0 bytes .../resources/webroot/framework/img/bg-white.png | Bin 2816 -> 0 bytes .../checkbox-radio/checkbox-checked-disabled.png | Bin 3087 -> 0 bytes .../img/checkbox-radio/checkbox-checked.png | Bin 3053 -> 0 bytes .../img/checkbox-radio/checkbox-disabled.png | Bin 2830 -> 0 bytes .../img/checkbox-radio/checkbox-hover.png | Bin 2835 -> 0 bytes .../framework/img/checkbox-radio/checkbox-init.png | Bin 2833 -> 0 bytes .../img/checkbox-radio/radio-checked-disabled.png | Bin 2993 -> 0 bytes .../framework/img/checkbox-radio/radio-checked.png | Bin 3235 -> 0 bytes .../img/checkbox-radio/radio-disabled.png | Bin 3045 -> 0 bytes .../framework/img/checkbox-radio/radio-hover.png | Bin 3068 -> 0 bytes .../framework/img/checkbox-radio/radio-init.png | Bin 3036 -> 0 bytes .../webroot/framework/img/chrome_icon.png | Bin 3856 -> 0 bytes .../framework/img/datatable-row-openclose.png | Bin 299 -> 0 bytes .../main/resources/webroot/framework/img/empty.png | Bin 2790 -> 0 bytes .../webroot/framework/img/firefox_icon.png | Bin 3759 -> 0 bytes .../framework/img/hor-menu-search-close-white.png | Bin 191 -> 0 bytes .../framework/img/hor-menu-search-close.png | Bin 162 -> 0 bytes .../webroot/framework/img/hor-menu-search.jpg | Bin 306 -> 0 bytes .../webroot/framework/img/hor-menu-search.png | Bin 299 -> 0 bytes .../webroot/framework/img/icon-color-close.png | Bin 1031 -> 0 bytes .../resources/webroot/framework/img/icon-color.png | Bin 1240 -> 0 bytes .../webroot/framework/img/icon-img-down.png | Bin 1023 -> 0 bytes .../webroot/framework/img/icon-img-up.png | Bin 999 -> 0 bytes .../webroot/framework/img/input-spinner.gif | Bin 1849 -> 0 bytes .../webroot/framework/img/integration/logo.png | Bin 16838 -> 0 bytes .../framework/img/integration/logo_white.png | Bin 13710 -> 0 bytes .../framework/img/integration/netnumenLogo.png | Bin 5379 -> 0 bytes .../webroot/framework/img/integration/zte_bg_1.jpg | Bin 143465 -> 0 bytes .../webroot/framework/img/integration/zte_bg_2.jpg | Bin 152396 -> 0 bytes .../webroot/framework/img/integration/zte_bg_3.jpg | Bin 155899 -> 0 bytes .../framework/img/integration/zte_logo_16.gif | Bin 583 -> 0 bytes .../framework/img/integration/zte_logo_white.png | Bin 16838 -> 0 bytes .../webroot/framework/img/integration/ztelogo.png | Bin 2790 -> 0 bytes .../webroot/framework/img/loading-spinner-grey.gif | Bin 5203 -> 0 bytes .../resources/webroot/framework/img/loading.gif | Bin 2906 -> 0 bytes .../webroot/framework/img/mainpage/icon/1.png | Bin 4053 -> 0 bytes .../webroot/framework/img/mainpage/icon/2.png | Bin 3397 -> 0 bytes .../webroot/framework/img/mainpage/icon/3.png | Bin 3948 -> 0 bytes .../webroot/framework/img/mainpage/icon/4.png | Bin 3927 -> 0 bytes .../webroot/framework/img/mainpage/icon/5.png | Bin 3185 -> 0 bytes .../webroot/framework/img/mainpage/icon/6.png | Bin 3361 -> 0 bytes .../webroot/framework/img/mainpage/logo.png | Bin 16103 -> 0 bytes .../webroot/framework/img/mainpage/pic/1.png | Bin 179653 -> 0 bytes .../webroot/framework/img/mainpage/pic/2.png | Bin 64321 -> 0 bytes .../webroot/framework/img/mainpage/pic/3.png | Bin 65383 -> 0 bytes .../webroot/framework/img/mainpage/pic/4.png | Bin 105028 -> 0 bytes .../webroot/framework/img/mainpage/pic/5.png | Bin 143644 -> 0 bytes .../webroot/framework/img/menu-toggler.png | Bin 948 -> 0 bytes .../webroot/framework/img/overlay-icon.png | Bin 514 -> 0 bytes .../framework/img/portlet-collapse-icon-white.png | Bin 240 -> 0 bytes .../framework/img/portlet-collapse-icon.png | Bin 269 -> 0 bytes .../framework/img/portlet-config-icon-white.png | Bin 320 -> 0 bytes .../webroot/framework/img/portlet-config-icon.png | Bin 330 -> 0 bytes .../framework/img/portlet-expand-icon-white.png | Bin 239 -> 0 bytes .../webroot/framework/img/portlet-expand-icon.png | Bin 256 -> 0 bytes .../framework/img/portlet-reload-icon-white.png | Bin 324 -> 0 bytes .../webroot/framework/img/portlet-reload-icon.png | Bin 345 -> 0 bytes .../framework/img/portlet-remove-icon-white.png | Bin 260 -> 0 bytes .../webroot/framework/img/portlet-remove-icon.png | Bin 312 -> 0 bytes .../webroot/framework/img/remove-icon-small.png | Bin 193 -> 0 bytes .../webroot/framework/img/reset_password.png | Bin 3516 -> 0 bytes .../webroot/framework/img/ressvgs/NFV.svg | 58 - .../resources/webroot/framework/img/ressvgs/NS.svg | 29 - .../webroot/framework/img/ressvgs/VDU.svg | 26 - .../webroot/framework/img/ressvgs/VIM.svg | 19 - .../webroot/framework/img/ressvgs/VNF.svg | 14 - .../webroot/framework/img/ressvgs/VNFC.svg | 20 - .../webroot/framework/img/ressvgs/VNFM.svg | 17 - .../webroot/framework/img/ressvgs/breakLink.svg | 9 - .../webroot/framework/img/ressvgs/common_dc.svg | 72 - .../webroot/framework/img/ressvgs/common_ncd.svg | 40 - .../webroot/framework/img/ressvgs/common_sc.svg | 71 - .../webroot/framework/img/ressvgs/host.svg | 14 - .../framework/img/ressvgs/it-Virtual network.svg | 186 - .../webroot/framework/img/ressvgs/it-app-bind.svg | 58 - .../webroot/framework/img/ressvgs/it-app-dns.svg | 58 - .../webroot/framework/img/ressvgs/it-app-ems.svg | 75 - .../framework/img/ressvgs/it-app-mediator.svg | 78 - .../framework/img/ressvgs/it-app-netnumen.svg | 57 - .../webroot/framework/img/ressvgs/it-app-ntp.svg | 61 - .../webroot/framework/img/ressvgs/it-app-ota.svg | 58 - .../framework/img/ressvgs/it-app-tomcat.svg | 52 - .../webroot/framework/img/ressvgs/it-app-trend.svg | 58 - .../webroot/framework/img/ressvgs/it-app-tsm.svg | 62 - .../framework/img/ressvgs/it-app-weblogic.svg | 58 - .../webroot/framework/img/ressvgs/it-app.svg | 62 - .../framework/img/ressvgs/it-cluster-hacmp.svg | 54 - .../framework/img/ressvgs/it-cluster-nec.svg | 55 - .../framework/img/ressvgs/it-cluster-ns.svg | 58 - .../framework/img/ressvgs/it-cluster-sg.svg | 65 - .../framework/img/ressvgs/it-cluster-vcs.svg | 78 - .../webroot/framework/img/ressvgs/it-cluster.svg | 77 - .../framework/img/ressvgs/it-database-mssql.svg | 77 - .../framework/img/ressvgs/it-database-oracle.svg | 77 - .../framework/img/ressvgs/it-database-sybase.svg | 71 - .../framework/img/ressvgs/it-database-sybaseiq.svg | 51 - .../webroot/framework/img/ressvgs/it-database.svg | 71 - .../framework/img/ressvgs/it-diskraid-dellmd.svg | 199 - .../framework/img/ressvgs/it-diskraid-emc.svg | 198 - .../framework/img/ressvgs/it-diskraid-eternus.svg | 195 - .../framework/img/ressvgs/it-diskraid-fujitsu.svg | 215 - .../framework/img/ressvgs/it-diskraid-hds.svg | 103 - .../framework/img/ressvgs/it-diskraid-hpaio.svg | 203 - .../framework/img/ressvgs/it-diskraid-hpeva.svg | 207 - .../framework/img/ressvgs/it-diskraid-hpmsa.svg | 203 - .../framework/img/ressvgs/it-diskraid-ibm.svg | 203 - .../framework/img/ressvgs/it-diskraid-ibmsm.svg | 95 - .../framework/img/ressvgs/it-diskraid-macrosan.svg | 28 - .../framework/img/ressvgs/it-diskraid-netapp.svg | 146 - .../framework/img/ressvgs/it-diskraid-sun.svg | 146 - .../framework/img/ressvgs/it-diskraid-zte.svg | 146 - .../img/ressvgs/it-firewall-checkpoint.svg | 95 - .../framework/img/ressvgs/it-firewall-cisco.svg | 95 - .../framework/img/ressvgs/it-firewall-cisco2.svg | 95 - .../framework/img/ressvgs/it-firewall-h3c.svg | 116 - .../framework/img/ressvgs/it-firewall-juniper.svg | 109 - .../framework/img/ressvgs/it-firewall-neteye.svg | 120 - .../framework/img/ressvgs/it-firewall-zte.svg | 127 - .../framework/img/ressvgs/it-firewall-ztemf.svg | 127 - .../framework/img/ressvgs/it-firewall-zteutm.svg | 128 - .../webroot/framework/img/ressvgs/it-firewall.svg | 102 - .../webroot/framework/img/ressvgs/it-gather.svg | 295 - .../webroot/framework/img/ressvgs/it-group-dev.svg | 121 - .../framework/img/ressvgs/it-ibp-ibp2000.svg | 133 - .../webroot/framework/img/ressvgs/it-ibp.svg | 128 - .../webroot/framework/img/ressvgs/it-net.svg | 105 - .../framework/img/ressvgs/it-other-alteon.svg | 19 - .../framework/img/ressvgs/it-other-appdirector.svg | 25 - .../framework/img/ressvgs/it-other-atca-lb10.svg | 121 - .../framework/img/ressvgs/it-other-cisco-ucs.svg | 121 - .../webroot/framework/img/ressvgs/it-other-dcs.svg | 137 - .../framework/img/ressvgs/it-other-delta.svg | 129 - .../webroot/framework/img/ressvgs/it-other-dp.svg | 20 - .../framework/img/ressvgs/it-other-f5bigip.svg | 145 - .../framework/img/ressvgs/it-other-f5bigip2.svg | 161 - .../framework/img/ressvgs/it-other-gbe2c.svg | 166 - .../framework/img/ressvgs/it-other-hpblc.svg | 174 - .../framework/img/ressvgs/it-other-ibm-blade.svg | 156 - .../webroot/framework/img/ressvgs/it-other-imm.svg | 160 - .../framework/img/ressvgs/it-other-secfox.svg | 20 - .../framework/img/ressvgs/it-other-secsis.svg | 30 - .../framework/img/ressvgs/it-other-segw.svg | 153 - .../webroot/framework/img/ressvgs/it-other-vc.svg | 173 - .../framework/img/ressvgs/it-other-zteatca.svg | 191 - .../framework/img/ressvgs/it-other-zteips.svg | 53 - .../framework/img/ressvgs/it-other-ztepower.svg | 223 - .../framework/img/ressvgs/it-other-ztesgs.svg | 54 - .../framework/img/ressvgs/it-other-zxsdr-nt.svg | 186 - .../webroot/framework/img/ressvgs/it-other.svg | 110 - .../framework/img/ressvgs/it-router-cisco.svg | 186 - .../framework/img/ressvgs/it-router-juniper.svg | 170 - .../framework/img/ressvgs/it-router-zte.svg | 178 - .../webroot/framework/img/ressvgs/it-router.svg | 175 - .../framework/img/ressvgs/it-sdn-controller.svg | 176 - .../webroot/framework/img/ressvgs/it-sdn-host.svg | 167 - .../framework/img/ressvgs/it-sdn-switch.svg | 167 - .../webroot/framework/img/ressvgs/it-sdn-vnet.svg | 167 - .../framework/img/ressvgs/it-server-aix.svg | 170 - .../framework/img/ressvgs/it-server-hpux.svg | 181 - .../framework/img/ressvgs/it-server-klinux.svg | 191 - .../framework/img/ressvgs/it-server-redhat.svg | 171 - .../framework/img/ressvgs/it-server-solaris.svg | 173 - .../framework/img/ressvgs/it-server-suse.svg | 185 - .../framework/img/ressvgs/it-server-windows.svg | 176 - .../framework/img/ressvgs/it-server-zxve.svg | 179 - .../webroot/framework/img/ressvgs/it-server.svg | 195 - .../framework/img/ressvgs/it-storage-cisco-mds.svg | 177 - .../framework/img/ressvgs/it-storage-md3000.svg | 168 - .../framework/img/ressvgs/it-storage-netvault.svg | 186 - .../framework/img/ressvgs/it-storage-ops.svg | 186 - .../img/ressvgs/it-storage-sanswitch-brocade.svg | 187 - .../img/ressvgs/it-storage-sanswitch-hp.svg | 187 - .../img/ressvgs/it-storage-sanswitch-zte.svg | 13 - .../webroot/framework/img/ressvgs/it-storage.svg | 183 - .../webroot/framework/img/ressvgs/it-switch-at.svg | 201 - .../framework/img/ressvgs/it-switch-cisco.svg | 176 - .../framework/img/ressvgs/it-switch-h3c.svg | 31 - .../framework/img/ressvgs/it-switch-juniper.svg | 176 - .../framework/img/ressvgs/it-switch-zte.svg | 177 - .../webroot/framework/img/ressvgs/it-switch.svg | 182 - .../framework/img/ressvgs/it-tapelib-hpmsl.svg | 176 - .../framework/img/ressvgs/it-tapelib-ibmts.svg | 183 - .../framework/img/ressvgs/it-tapelib-sunts.svg | 196 - .../resources/webroot/framework/img/ressvgs/it.svg | 111 - .../webroot/framework/img/ressvgs/networkTree.svg | 349 - .../webroot/framework/img/ressvgs/new.svg | 7 - .../framework/img/ressvgs/popupmenufollower.svg | 15 - .../webroot/framework/img/ressvgs/resourceType.svg | 211 - .../webroot/framework/img/ressvgs/stop.svg | 18 - .../webroot/framework/img/ressvgs/tree-icon.svg | 291 - .../webroot/framework/img/ressvgs/uep-moc-root.svg | 355 - .../framework/img/ressvgs/uep-moc-uca-public.svg | 329 - .../img/ressvgs/uep-topo-commongroup20x20.svg | 278 - .../framework/img/ressvgs/uep-topo-group20x20.svg | 277 - .../framework/img/ressvgs/uep-topo-root.svg | 259 - .../img/ressvgs/uep-topo-undefinedgroup20x20.svg | 342 - .../img/ressvgs/uep-topo-virtual20x20.svg | 355 - .../img/ressvgs/uep-topo-wsf-disconnected8x8.svg | 37 - .../framework/img/ressvgs/usf-amf-try-activate.svg | 44 - .../img/ressvgs/usf-amf-try-active-wait.svg | 40 - .../webroot/framework/img/search-icon-blue.png | Bin 318 -> 0 bytes .../webroot/framework/img/search-icon-brown.png | Bin 357 -> 0 bytes .../webroot/framework/img/search-icon-purple.png | Bin 318 -> 0 bytes .../webroot/framework/img/search-icon-red.png | Bin 318 -> 0 bytes .../webroot/framework/img/search-icon-white.png | Bin 317 -> 0 bytes .../webroot/framework/img/search-icon.png | Bin 1132 -> 0 bytes .../webroot/framework/img/select-caret.png | Bin 1027 -> 0 bytes .../framework/img/sidebar-menu-arrow-right.png | Bin 247 -> 0 bytes .../framework/img/sidebar-menu-arrow-rtl.png | Bin 247 -> 0 bytes .../webroot/framework/img/sidebar-menu-arrow.png | Bin 3007 -> 0 bytes .../framework/img/sidebar-search-close-blue.png | Bin 163 -> 0 bytes .../framework/img/sidebar-search-close-brown.png | Bin 163 -> 0 bytes .../framework/img/sidebar-search-close-light.png | Bin 162 -> 0 bytes .../framework/img/sidebar-search-close-purple.png | Bin 163 -> 0 bytes .../webroot/framework/img/sidebar-search-close.png | Bin 163 -> 0 bytes .../webroot/framework/img/sidebar-toggler-grey.jpg | Bin 14801 -> 0 bytes .../framework/img/sidebar-toggler-light.jpg | Bin 538 -> 0 bytes .../webroot/framework/img/source/logo.png | Bin 16838 -> 0 bytes .../webroot/framework/img/source/logo_white.png | Bin 13710 -> 0 bytes .../webroot/framework/img/source/netnumenLogo.png | Bin 5379 -> 0 bytes .../webroot/framework/img/source/zte_bg_1.jpg | Bin 143465 -> 0 bytes .../webroot/framework/img/source/zte_bg_2.jpg | Bin 152396 -> 0 bytes .../webroot/framework/img/source/zte_bg_3.jpg | Bin 155899 -> 0 bytes .../framework/img/source/zte_logo_ white.png | Bin 16838 -> 0 bytes .../webroot/framework/img/source/zte_logo_16.gif | Bin 583 -> 0 bytes .../framework/img/source/zte_logo_white.png | Bin 16838 -> 0 bytes .../webroot/framework/img/source/ztelogo.png | Bin 2790 -> 0 bytes .../framework/img/syncfusion-icons-white.png | Bin 5550 -> 0 bytes .../main/resources/webroot/framework/img/user.png | Bin 3100 -> 0 bytes .../main/resources/webroot/framework/index.html | 25 - .../webroot/framework/js/Main2moreMenu.js | 17 - .../webroot/framework/js/core/ZteFrameWork.js | 3997 -- .../webroot/framework/js/core/ZteFrameWork.min.js | 150 - .../resources/webroot/framework/js/core/const.js | 56 - .../resources/webroot/framework/js/core/hk.min.js | 806 - .../resources/webroot/framework/js/core/pym.min.js | 2 - .../resources/webroot/framework/js/fm_light.js | 169 - .../framework/js/international/loadi18n-login.js | 53 - .../webroot/framework/js/international/loadi18n.js | 110 - .../js/international/loadi18nApp_universal.js | 24 - .../main/resources/webroot/framework/js/json2.js | 501 - .../main/resources/webroot/framework/js/login.js | 225 - .../webroot/framework/js/mainpage/about.js | 142 - .../webroot/framework/js/mainpage/ict.main.page.js | 142 - .../webroot/framework/js/moreOperation.js | 151 - .../resources/webroot/framework/js/security/aes.js | 50 - .../webroot/framework/js/security/changepwd.js | 191 - .../framework/js/security/framework-util.js | 38 - .../webroot/framework/js/security/security.js | 127 - .../main/resources/webroot/framework/js/tools.js | 1039 - .../webroot/framework/json/main-page.json | 103 - .../main/resources/webroot/framework/login.html | 198 - .../resources/webroot/framework/main-page.html | 102 - .../webroot/framework/menus/main_Fmegabar.html | 17 - .../webroot/framework/menus/main_Fsiderbar.html | 17 - .../webroot/framework/menus/main_siderbar.html | 17 - .../resources/webroot/framework/menus/readme.txt | 17 - .../webroot/vendor/animate/animate.min.css | 6 - .../main/resources/webroot/vendor/avalon/avalon.js | 5819 -- .../webroot/vendor/avalon/avalon.modern.js | 4440 -- .../daterangepicker-bs3.css | 319 - .../bootstrap-daterangepicker/daterangepicker.js | 1257 - .../vendor/bootstrap-daterangepicker/moment.js | 2808 - .../vendor/bootstrap-daterangepicker/moment.min.js | 6 - .../bootstrap-fileinput/css/fileinput.min.css | 11 - .../vendor/bootstrap-fileinput/img/loading-sm.gif | Bin 2670 -> 0 bytes .../vendor/bootstrap-fileinput/img/loading.gif | Bin 847 -> 0 bytes .../vendor/bootstrap-fileinput/js/fileinput.min.js | 19 - .../js/fileinput_locale_LANG.js | 45 - .../bootstrap-fileinput/js/fileinput_locale_zh.js | 49 - .../vendor/bootstrap-growl/bootstrap-growl.min.js | 2 - .../css/bootstrap-modal-bs3patch.css | 51 - .../vendor/bootstrap-modal/css/bootstrap-modal.css | 214 - .../vendor/bootstrap-modal/img/ajax-loader.gif | Bin 1737 -> 0 bytes .../vendor/bootstrap-modal/js/bootstrap-modal.js | 378 - .../bootstrap-modal/js/bootstrap-modalmanager.js | 423 - .../bootstrap-select/bootstrap-select.min.css | 7 - .../bootstrap-select/bootstrap-select.min.js | 8 - .../bootstrap-validation/jqBootstrapValidation.js | 912 - .../jquery.bootstrap.wizard.min.js | 20 - .../main/resources/webroot/vendor/cometd/cometd.js | 3045 -- .../webroot/vendor/cometd/jquery.cometd.js | 139 - .../webroot/vendor/data-tables/DT_bootstrap.css | 240 - .../webroot/vendor/data-tables/DT_bootstrap.js | 363 - .../webroot/vendor/data-tables/DataTableICT.js | 1459 - .../vendor/data-tables/DataTableSmartClient.js | 1215 - .../vendor/data-tables/DataTableSmartClientApp.js | 1312 - .../data-tables/app-test-i18n-datatable-zh-CN.json | 51 - .../app-universal-i18n-datatable-en-US.json | 89 - .../app-universal-i18n-datatable-zh-CN.json | 90 - .../webroot/vendor/data-tables/dataTable.html | 155 - .../data-tables/images/loading-spinner-grey.gif | Bin 5203 -> 0 bytes .../webroot/vendor/data-tables/images/sort_asc.png | Bin 1118 -> 0 bytes .../vendor/data-tables/images/sort_both.png | Bin 1136 -> 0 bytes .../vendor/data-tables/images/sort_desc.png | Bin 1127 -> 0 bytes .../vendor/data-tables/jquery.dataTables.js | 15268 ------ .../vendor/data-tables/jquery.dataTables.min.js | 166 - .../webroot/vendor/data-tables/style-datatable.css | 154 - .../src/main/resources/webroot/vendor/delete.me | 0 .../webroot/vendor/echarts/echarts-all.js | 50 - .../resources/webroot/vendor/icheck/CHANGELOG.md | 51 - .../main/resources/webroot/vendor/icheck/README.md | 424 - .../resources/webroot/vendor/icheck/bower.json | 42 - .../webroot/vendor/icheck/demo/css/Thumbs.db | Bin 5120 -> 0 bytes .../webroot/vendor/icheck/demo/css/banner.jpg | Bin 32768 -> 0 bytes .../webroot/vendor/icheck/demo/css/custom.css | 261 - .../webroot/vendor/icheck/demo/css/custom.styl | 1191 - .../webroot/vendor/icheck/demo/css/icheck.png | Bin 2382 -> 0 bytes .../vendor/icheck/demo/css/ie/arrow-bottom.png | Bin 184 -> 0 bytes .../vendor/icheck/demo/css/ie/arrow-top.png | Bin 175 -> 0 bytes .../vendor/icheck/demo/css/ie/header-line.png | Bin 611 -> 0 bytes .../vendor/icheck/demo/css/ie/icon-fork.png | Bin 213 -> 0 bytes .../vendor/icheck/demo/css/ie/icon-github.png | Bin 634 -> 0 bytes .../webroot/vendor/icheck/demo/css/ie/icon-lab.png | Bin 683 -> 0 bytes .../vendor/icheck/demo/css/ie/icon-options.png | Bin 666 -> 0 bytes .../vendor/icheck/demo/css/ie/icon-star.png | Bin 348 -> 0 bytes .../vendor/icheck/demo/css/montserrat-bold.eot | Bin 13099 -> 0 bytes .../vendor/icheck/demo/css/montserrat-bold.svg | 1490 - .../vendor/icheck/demo/css/montserrat-bold.ttf | Bin 32768 -> 0 bytes .../vendor/icheck/demo/css/montserrat-bold.woff | Bin 15736 -> 0 bytes .../vendor/icheck/demo/css/montserrat-regular.eot | Bin 13114 -> 0 bytes .../vendor/icheck/demo/css/montserrat-regular.svg | 1365 - .../vendor/icheck/demo/css/montserrat-regular.ttf | Bin 32768 -> 0 bytes .../vendor/icheck/demo/css/montserrat-regular.woff | Bin 15692 -> 0 bytes .../webroot/vendor/icheck/demo/css/normalize.css | 527 - .../webroot/vendor/icheck/demo/index.html | 1544 - .../webroot/vendor/icheck/demo/js/custom.js | 109 - .../webroot/vendor/icheck/demo/js/custom.min.js | 5 - .../webroot/vendor/icheck/demo/js/jquery.js | 4 - .../webroot/vendor/icheck/demo/js/zepto.js | 41 - .../webroot/vendor/icheck/icheck.jquery.json | 48 - .../main/resources/webroot/vendor/icheck/icheck.js | 509 - .../resources/webroot/vendor/icheck/icheck.min.js | 11 - .../resources/webroot/vendor/icheck/skins/all.css | 61 - .../webroot/vendor/icheck/skins/flat/_all.css | 530 - .../webroot/vendor/icheck/skins/flat/aero.css | 53 - .../webroot/vendor/icheck/skins/flat/aero.png | Bin 1520 -> 0 bytes .../webroot/vendor/icheck/skins/flat/aero@2x.png | Bin 3218 -> 0 bytes .../webroot/vendor/icheck/skins/flat/blue.css | 53 - .../webroot/vendor/icheck/skins/flat/blue.png | Bin 1518 -> 0 bytes .../webroot/vendor/icheck/skins/flat/blue@2x.png | Bin 3217 -> 0 bytes .../webroot/vendor/icheck/skins/flat/flat.css | 53 - .../webroot/vendor/icheck/skins/flat/flat.png | Bin 1515 -> 0 bytes .../webroot/vendor/icheck/skins/flat/flat@2x.png | Bin 3217 -> 0 bytes .../webroot/vendor/icheck/skins/flat/green.css | 53 - .../webroot/vendor/icheck/skins/flat/green.png | Bin 1444 -> 0 bytes .../webroot/vendor/icheck/skins/flat/green@2x.png | Bin 3117 -> 0 bytes .../webroot/vendor/icheck/skins/flat/grey.css | 53 - .../webroot/vendor/icheck/skins/flat/grey.png | Bin 1516 -> 0 bytes .../webroot/vendor/icheck/skins/flat/grey@2x.png | Bin 3217 -> 0 bytes .../webroot/vendor/icheck/skins/flat/orange.css | 53 - .../webroot/vendor/icheck/skins/flat/orange.png | Bin 1518 -> 0 bytes .../webroot/vendor/icheck/skins/flat/orange@2x.png | Bin 3275 -> 0 bytes .../webroot/vendor/icheck/skins/flat/pink.css | 53 - .../webroot/vendor/icheck/skins/flat/pink.png | Bin 1522 -> 0 bytes .../webroot/vendor/icheck/skins/flat/pink@2x.png | Bin 3218 -> 0 bytes .../webroot/vendor/icheck/skins/flat/purple.css | 53 - .../webroot/vendor/icheck/skins/flat/purple.png | Bin 1519 -> 0 bytes .../webroot/vendor/icheck/skins/flat/purple@2x.png | Bin 3218 -> 0 bytes .../webroot/vendor/icheck/skins/flat/red.css | 53 - .../webroot/vendor/icheck/skins/flat/red.png | Bin 1516 -> 0 bytes .../webroot/vendor/icheck/skins/flat/red@2x.png | Bin 3276 -> 0 bytes .../webroot/vendor/icheck/skins/flat/yellow.css | 53 - .../webroot/vendor/icheck/skins/flat/yellow.png | Bin 1516 -> 0 bytes .../webroot/vendor/icheck/skins/flat/yellow@2x.png | Bin 3216 -> 0 bytes .../vendor/icheck/skins/futurico/futurico.css | 53 - .../vendor/icheck/skins/futurico/futurico.png | Bin 1734 -> 0 bytes .../vendor/icheck/skins/futurico/futurico@2x.png | Bin 3446 -> 0 bytes .../webroot/vendor/icheck/skins/line/Thumbs.db | Bin 4608 -> 0 bytes .../webroot/vendor/icheck/skins/line/_all.css | 710 - .../webroot/vendor/icheck/skins/line/aero.css | 71 - .../webroot/vendor/icheck/skins/line/blue.css | 71 - .../webroot/vendor/icheck/skins/line/green.css | 71 - .../webroot/vendor/icheck/skins/line/grey.css | 71 - .../webroot/vendor/icheck/skins/line/line.css | 71 - .../webroot/vendor/icheck/skins/line/line.png | Bin 588 -> 0 bytes .../webroot/vendor/icheck/skins/line/line@2x.png | Bin 1073 -> 0 bytes .../webroot/vendor/icheck/skins/line/orange.css | 71 - .../webroot/vendor/icheck/skins/line/pink.css | 71 - .../webroot/vendor/icheck/skins/line/purple.css | 71 - .../webroot/vendor/icheck/skins/line/red.css | 71 - .../webroot/vendor/icheck/skins/line/yellow.css | 71 - .../webroot/vendor/icheck/skins/minimal/_all.css | 590 - .../webroot/vendor/icheck/skins/minimal/aero.css | 59 - .../webroot/vendor/icheck/skins/minimal/aero.png | Bin 1151 -> 0 bytes .../vendor/icheck/skins/minimal/aero@2x.png | Bin 1409 -> 0 bytes .../webroot/vendor/icheck/skins/minimal/blue.css | 59 - .../webroot/vendor/icheck/skins/minimal/blue.png | Bin 1132 -> 0 bytes .../vendor/icheck/skins/minimal/blue@2x.png | Bin 1410 -> 0 bytes .../webroot/vendor/icheck/skins/minimal/green.css | 59 - .../webroot/vendor/icheck/skins/minimal/green.png | Bin 1143 -> 0 bytes .../vendor/icheck/skins/minimal/green@2x.png | Bin 1408 -> 0 bytes .../webroot/vendor/icheck/skins/minimal/grey.css | 59 - .../webroot/vendor/icheck/skins/minimal/grey.png | Bin 1142 -> 0 bytes .../vendor/icheck/skins/minimal/grey@2x.png | Bin 1407 -> 0 bytes .../vendor/icheck/skins/minimal/minimal.css | 59 - .../vendor/icheck/skins/minimal/minimal.png | Bin 1114 -> 0 bytes .../vendor/icheck/skins/minimal/minimal@2x.png | Bin 1410 -> 0 bytes .../webroot/vendor/icheck/skins/minimal/orange.css | 59 - .../webroot/vendor/icheck/skins/minimal/orange.png | Bin 1139 -> 0 bytes .../vendor/icheck/skins/minimal/orange@2x.png | Bin 1407 -> 0 bytes .../webroot/vendor/icheck/skins/minimal/pink.css | 59 - .../webroot/vendor/icheck/skins/minimal/pink.png | Bin 1150 -> 0 bytes .../vendor/icheck/skins/minimal/pink@2x.png | Bin 1409 -> 0 bytes .../webroot/vendor/icheck/skins/minimal/purple.css | 59 - .../webroot/vendor/icheck/skins/minimal/purple.png | Bin 1132 -> 0 bytes .../vendor/icheck/skins/minimal/purple@2x.png | Bin 1409 -> 0 bytes .../webroot/vendor/icheck/skins/minimal/red.css | 59 - .../webroot/vendor/icheck/skins/minimal/red.png | Bin 1130 -> 0 bytes .../webroot/vendor/icheck/skins/minimal/red@2x.png | Bin 1410 -> 0 bytes .../webroot/vendor/icheck/skins/minimal/yellow.css | 59 - .../webroot/vendor/icheck/skins/minimal/yellow.png | Bin 1135 -> 0 bytes .../vendor/icheck/skins/minimal/yellow@2x.png | Bin 1406 -> 0 bytes .../vendor/icheck/skins/polaris/polaris.css | 59 - .../vendor/icheck/skins/polaris/polaris.png | Bin 6401 -> 0 bytes .../vendor/icheck/skins/polaris/polaris@2x.png | Bin 32768 -> 0 bytes .../webroot/vendor/icheck/skins/square/Thumbs.db | Bin 32768 -> 0 bytes .../webroot/vendor/icheck/skins/square/_all.css | 590 - .../webroot/vendor/icheck/skins/square/aero.css | 59 - .../webroot/vendor/icheck/skins/square/aero.png | Bin 4436 -> 0 bytes .../webroot/vendor/icheck/skins/square/aero@2x.png | Bin 4455 -> 0 bytes .../webroot/vendor/icheck/skins/square/blue.css | 59 - .../webroot/vendor/icheck/skins/square/blue.png | Bin 2185 -> 0 bytes .../webroot/vendor/icheck/skins/square/blue@2x.png | Bin 4485 -> 0 bytes .../webroot/vendor/icheck/skins/square/green.css | 59 - .../webroot/vendor/icheck/skins/square/green.png | Bin 2193 -> 0 bytes .../vendor/icheck/skins/square/green@2x.png | Bin 4498 -> 0 bytes .../webroot/vendor/icheck/skins/square/grey.css | 59 - .../webroot/vendor/icheck/skins/square/grey.png | Bin 2186 -> 0 bytes .../webroot/vendor/icheck/skins/square/grey@2x.png | Bin 4483 -> 0 bytes .../webroot/vendor/icheck/skins/square/orange.css | 59 - .../webroot/vendor/icheck/skins/square/orange.png | Bin 2181 -> 0 bytes .../vendor/icheck/skins/square/orange@2x.png | Bin 4474 -> 0 bytes .../webroot/vendor/icheck/skins/square/pink.css | 59 - .../webroot/vendor/icheck/skins/square/pink.png | Bin 2189 -> 0 bytes .../webroot/vendor/icheck/skins/square/pink@2x.png | Bin 4479 -> 0 bytes .../webroot/vendor/icheck/skins/square/purple.css | 59 - .../webroot/vendor/icheck/skins/square/purple.png | Bin 2188 -> 0 bytes .../vendor/icheck/skins/square/purple@2x.png | Bin 4501 -> 0 bytes .../webroot/vendor/icheck/skins/square/red.css | 59 - .../webroot/vendor/icheck/skins/square/red.png | Bin 2190 -> 0 bytes .../webroot/vendor/icheck/skins/square/red@2x.png | Bin 4490 -> 0 bytes .../webroot/vendor/icheck/skins/square/square.css | 59 - .../webroot/vendor/icheck/skins/square/square.png | Bin 2175 -> 0 bytes .../vendor/icheck/skins/square/square@2x.png | Bin 4478 -> 0 bytes .../webroot/vendor/icheck/skins/square/yellow.css | 59 - .../webroot/vendor/icheck/skins/square/yellow.png | Bin 2131 -> 0 bytes .../vendor/icheck/skins/square/yellow@2x.png | Bin 4385 -> 0 bytes .../ict/dashboard-jq/DashboardConfig-jq.json | 33 - .../vendor/ict/dashboard-jq/DashboardICT-jq.js | 246 - .../vendor/ict/dashboard-jq/DashboardICT.css | 203 - .../vendor/ict/dashboard-jq/assets/css/c3.css | 241 - .../vendor/ict/dashboard-jq/assets/css/c3.min.css | 175 - .../ict/dashboard-jq/assets/css/components.css | 14133 ----- .../vendor/ict/dashboard-jq/assets/css/facebox.css | 83 - .../assets/css/ict-chart-dashboard.css | 143 - .../ict/dashboard-jq/assets/css/transition.css | 63 - .../ict/dashboard-jq/assets/js/c3-angular.js | 544 - .../ict/dashboard-jq/assets/js/c3-angular.min.js | 206 - .../dashboard-jq/assets/js/c3-angular.min.js.map | 157 - .../vendor/ict/dashboard-jq/assets/js/c3.js | 7473 --- .../vendor/ict/dashboard-jq/assets/js/c3.min.js | 2665 - .../vendor/ict/dashboard-jq/assets/js/d3.min.js | 6152 --- .../vendor/ict/dashboard-jq/assets/js/facebox.js | 382 - .../dashboard-jq/assets/js/portlet-draggable-jq.js | 65 - .../vendor/ict/dashboard-jq/demo/c3Chart.js | 59 - .../ict/dashboard-jq/demo/demo-barchart-c3.js | 29 - .../ict/dashboard-jq/demo/demo-linechart-c3.js | 41 - .../ict/dashboard-jq/demo/ict-barchart-c3.js | 67 - .../ict/dashboard-jq/demo/ict-linechart-c3.js | 81 - .../vendor/ict/dashboard-jq/demo/index3.html | 143 - .../images/CPU\347\273\237\350\256\241.png" | Bin 8273 -> 0 bytes .../vendor/ict/dashboard-jq/images/Thumbs.db | Bin 25600 -> 0 bytes .../vendor/ict/dashboard-jq/images/closelabel.png | Bin 168 -> 0 bytes .../vendor/ict/dashboard-jq/images/delete.png | Bin 3029 -> 0 bytes .../vendor/ict/dashboard-jq/images/loading.gif | Bin 2767 -> 0 bytes .../vendor/ict/dashboard-jq/images/open.png | Bin 3692 -> 0 bytes .../vendor/ict/dashboard-jq/images/remove.png | Bin 3391 -> 0 bytes .../vendor/ict/dashboard-jq/images/remove_red.png | Bin 3405 -> 0 bytes .../vendor/ict/dashboard-jq/images/shrink.png | Bin 3602 -> 0 bytes ...21\212\350\255\246\347\273\237\350\256\241.png" | Bin 9662 -> 0 bytes ...0\247\350\203\275\347\273\237\350\256\241A.png" | Bin 5805 -> 0 bytes ...0\247\350\203\275\347\273\237\350\256\241B.png" | Bin 4343 -> 0 bytes ...0\247\350\203\275\347\273\237\350\256\241C.png" | Bin 9994 -> 0 bytes ...27\245\345\277\227\347\273\237\350\256\241.png" | Bin 5935 -> 0 bytes .../vendor/ict/ict-chart/demo/demo-barchart-c3.js | 34 - .../vendor/ict/ict-chart/demo/demo-linechart-c3.js | 40 - .../vendor/ict/ict-chart/ict-barchart-c3.js | 68 - .../vendor/ict/ict-chart/ict-linechart-c3.js | 98 - .../ict/ict-dashboard/DashboardConfig-jq.json | 86 - .../ict/ict-dashboard/DashboardConfig-jq.json.sdn | 36 - .../vendor/ict/ict-dashboard/DashboardConfig.json | 83 - .../vendor/ict/ict-dashboard/DashboardICT.js | 291 - .../vendor/ict/ict-dashboard/assets/css/c3.css | 257 - .../vendor/ict/ict-dashboard/assets/css/c3.min.css | 175 - .../ict/ict-dashboard/assets/css/components.css | 14135 ----- .../ict/ict-dashboard/assets/css/facebox.css | 83 - .../assets/css/ict-chart-dashboard.css | 155 - .../ict/ict-dashboard/assets/css/transition.css | 64 - .../ict/ict-dashboard/assets/js/angular.min.js | 6194 --- .../ict/ict-dashboard/assets/js/angular.min.js.map | 2369 - .../ict/ict-dashboard/assets/js/c3-angular.js | 544 - .../ict/ict-dashboard/assets/js/c3-angular.min.js | 206 - .../ict-dashboard/assets/js/c3-angular.min.js.map | 157 - .../vendor/ict/ict-dashboard/assets/js/c3.js | 7473 --- .../vendor/ict/ict-dashboard/assets/js/c3.min.js | 2665 - .../vendor/ict/ict-dashboard/assets/js/d3.min.js | 6152 --- .../vendor/ict/ict-dashboard/assets/js/facebox.js | 388 - .../assets/js/portlet-draggable-jq.js | 66 - .../vendor/ict/ict-dashboard/demo/c3Chart.js | 59 - .../ict/ict-dashboard/demo/demo-barchart-c3.js | 29 - .../ict/ict-dashboard/demo/demo-linechart-c3.js | 41 - .../ict/ict-dashboard/demo/ict-barchart-c3.js | 67 - .../ict/ict-dashboard/demo/ict-linechart-c3.js | 81 - .../vendor/ict/ict-dashboard/demo/index3.html | 142 - .../vendor/ict/ict-dashboard/ict.dashboard.css | 293 - .../vendor/ict/ict-dashboard/ict.dashboard.js | 435 - .../vendor/ict/ict-dashboard/ict.dashboard.js.bak | 413 - .../images/CPU\347\273\237\350\256\241.png" | Bin 8273 -> 0 bytes .../vendor/ict/ict-dashboard/images/Thumbs.db | Bin 27136 -> 0 bytes .../vendor/ict/ict-dashboard/images/alarm.png | Bin 4152 -> 0 bytes .../vendor/ict/ict-dashboard/images/bar.svg | 27 - .../vendor/ict/ict-dashboard/images/closelabel.png | Bin 168 -> 0 bytes .../vendor/ict/ict-dashboard/images/cpu.png | Bin 7559 -> 0 bytes .../vendor/ict/ict-dashboard/images/delete.png | Bin 3029 -> 0 bytes .../vendor/ict/ict-dashboard/images/gauge.svg | 15 - .../vendor/ict/ict-dashboard/images/line.svg | 36 - .../vendor/ict/ict-dashboard/images/lineBar.svg | 37 - .../vendor/ict/ict-dashboard/images/loading.gif | Bin 2767 -> 0 bytes .../vendor/ict/ict-dashboard/images/map.svg | 53 - .../vendor/ict/ict-dashboard/images/open.png | Bin 3535 -> 0 bytes .../vendor/ict/ict-dashboard/images/pie.svg | 14 - .../vendor/ict/ict-dashboard/images/remove.png | Bin 3216 -> 0 bytes .../vendor/ict/ict-dashboard/images/remove_red.png | Bin 3214 -> 0 bytes .../vendor/ict/ict-dashboard/images/shrink.png | Bin 3347 -> 0 bytes .../vendor/ict/ict-dashboard/images/stacked.svg | 12 - .../vendor/ict/ict-dashboard/images/zoom.png | Bin 3100 -> 0 bytes ...21\212\350\255\246\347\273\237\350\256\241.png" | Bin 9662 -> 0 bytes ...0\247\350\203\275\347\273\237\350\256\241A.png" | Bin 5805 -> 0 bytes ...0\247\350\203\275\347\273\237\350\256\241B.png" | Bin 4343 -> 0 bytes ...0\247\350\203\275\347\273\237\350\256\241C.png" | Bin 9994 -> 0 bytes ...27\245\345\277\227\347\273\237\350\256\241.png" | Bin 5935 -> 0 bytes .../webroot/vendor/ict/ict-dashboard/index4.html | 99 - .../webroot/vendor/ict/ict-dashboard/js/avalon.js | 5279 -- .../webroot/vendor/ict/ict-dashboard/js/d3.js | 9925 ---- .../webroot/vendor/ict/ict-dashboard/js/facebox.js | 380 - .../vendor/ict/ict-dashboard/js/freewall.js | 1317 - .../ict-serverpagetable/css/serverPageTable.css | 29 - .../ict-serverpagetable/images/details_close.png | Bin 3300 -> 0 bytes .../ict-serverpagetable/images/details_open.png | Bin 3304 -> 0 bytes .../vendor/ict/ict-serverpagetable/readme.txt | 70 - .../ict/ict-serverpagetable/serverPageTable.js | 217 - .../ict-serverpagetable/serverPageTable_demo.html | 51 - .../ict/ict-serverpagetable/serverpagetable.css | 70 - .../ict/ict-slider/bootstrap/css/bootstrap-dt.css | 7067 --- .../ict/ict-slider/bootstrap/css/bootstrap.min.css | 6235 --- .../ict/ict-slider/bootstrap/js/bootstrap.js | 1972 - .../ict/ict-slider/bootstrap/js/bootstrap.min.js | 619 - .../bootstrap/js/bootstrap2-typeahead.min.js | 145 - .../vendor/ict/ict-slider/css/jquery-ui.css | 1908 - .../ict/ict-slider/css/multi-handle-slider.css | 53 - .../webroot/vendor/ict/ict-slider/index.html | 67 - .../external/jquery/jquery.js | 9815 ---- .../jquery-ui-1.11.4.custom/images/Thumbs.db | Bin 8704 -> 0 bytes .../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 418 -> 0 bytes .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 312 -> 0 bytes .../images/ui-bg_flat_10_000000_40x100.png | Bin 205 -> 0 bytes .../images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 262 -> 0 bytes .../images/ui-bg_glass_100_fdf5ce_1x400.png | Bin 348 -> 0 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 207 -> 0 bytes .../images/ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 5815 -> 0 bytes .../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 278 -> 0 bytes .../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 328 -> 0 bytes .../images/ui-icons_222222_256x240.png | Bin 6922 -> 0 bytes .../images/ui-icons_228ef1_256x240.png | Bin 4549 -> 0 bytes .../images/ui-icons_ef8c08_256x240.png | Bin 4549 -> 0 bytes .../images/ui-icons_ffd27a_256x240.png | Bin 4549 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6299 -> 0 bytes .../ict-slider/jquery-ui-1.11.4.custom/index.html | 684 - .../jquery-ui-1.11.4.custom/jquery-ui.css | 1908 - .../jquery-ui-1.11.4.custom/jquery-ui.js | 16753 ------ .../jquery-ui-1.11.4.custom/jquery-ui.min.css | 1775 - .../jquery-ui-1.11.4.custom/jquery-ui.min.js | 5102 -- .../jquery-ui.structure.css | 963 - .../jquery-ui.structure.min.css | 894 - .../jquery-ui-1.11.4.custom/jquery-ui.theme.css | 962 - .../jquery-ui.theme.min.css | 882 - .../vendor/ict/ict-slider/js/avalon.modern.js | 4481 -- .../vendor/ict/ict-slider/js/jquery-1.10.2.min.js | 2640 - .../ict/ict-slider/js/multi-handle-slider.js | 64 - .../webroot/vendor/ict/ict-sunburst/demo.html | 17 - .../webroot/vendor/ict/ict-sunburst/skill.css | 74 - .../webroot/vendor/ict/ict-sunburst/skillsData.js | 38 - .../webroot/vendor/ict/ict-sunburst/sunburst.js | 321 - .../jquery.bootstrap.wizard.min.js | 152 - .../ict/ict-wizard/bootstrap/css/bootstrap-dt.css | 7067 --- .../ict/ict-wizard/bootstrap/css/bootstrap.min.css | 6246 --- .../fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes .../fonts/glyphicons-halflings-regular.svg | 288 - .../fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes .../ict/ict-wizard/bootstrap/js/bootstrap.js | 1972 - .../ict/ict-wizard/bootstrap/js/bootstrap.min.js | 619 - .../bootstrap/js/bootstrap2-typeahead.min.js | 145 - .../webroot/vendor/ict/ict-wizard/ict-wizard.js | 129 - .../vendor/ict/ict-wizard/ict_wizard_view.html | 141 - .../ict/ict-wizard/jquery/jquery-1.10.2.min.js | 2640 - .../vendor/ict/ict-wizard/jquery/jquery-1.11.2.js | 10319 ---- .../ict/ict-wizard/jquery/jquery-1.11.2.min.js | 2625 - .../ict/ict-wizard/jquery/jquery-1.11.2.min.map | 1209 - .../vendor/ict/ict-wizard/jquery/jquery-2.1.3.js | 9179 ---- .../ict/ict-wizard/jquery/jquery-2.1.3.min.js | 2393 - .../ict/ict-wizard/jquery/jquery-2.1.3.min.map | 1130 - .../ict/ict-wizard/jquery/jquery-migrate-1.2.1.js | 526 - .../ict-wizard/jquery/jquery-migrate-1.2.1.min.js | 125 - .../vendor/ict/ict-wizard/ngict-component.css | 467 - .../webroot/vendor/ict/ict-wizard/plugins.css | 1532 - .../jQuery-File-Upload/css/jquery.fileupload.css | 37 - .../vendor/jQuery-File-Upload/img/loading.gif | Bin 3897 -> 0 bytes .../vendor/jQuery-File-Upload/img/progressbar.gif | Bin 3323 -> 0 bytes .../jQuery-File-Upload/js/jquery.fileupload.js | 1477 - .../js/jquery.iframe-transport.js | 217 - .../js/vendor/jquery.ui.widget.js | 572 - .../resources/webroot/vendor/ystep/css/ystep.css | 293 - .../main/resources/webroot/vendor/ystep/ystep.js | 682 - ...41\206\346\236\266\344\273\213\347\273\215.txt" | 6 - .../main/resources/webroot/vendor/zTree/README.md | 48 - .../resources/webroot/vendor/zTree/api/API_cn.html | 103 - .../resources/webroot/vendor/zTree/api/API_en.html | 102 - .../webroot/vendor/zTree/api/apiCss/api.js | 592 - .../webroot/vendor/zTree/api/apiCss/common.css | 219 - .../webroot/vendor/zTree/api/apiCss/common_ie6.css | 23 - .../vendor/zTree/api/apiCss/img/apiMenu.gif | Bin 1736 -> 0 bytes .../vendor/zTree/api/apiCss/img/apiMenu.png | Bin 3954 -> 0 bytes .../vendor/zTree/api/apiCss/img/background.jpg | Bin 36520 -> 0 bytes .../vendor/zTree/api/apiCss/img/chinese.png | Bin 1556 -> 0 bytes .../webroot/vendor/zTree/api/apiCss/img/close.png | Bin 1908 -> 0 bytes .../vendor/zTree/api/apiCss/img/contact-bg.png | Bin 177 -> 0 bytes .../vendor/zTree/api/apiCss/img/english.png | Bin 1356 -> 0 bytes .../vendor/zTree/api/apiCss/img/header-bg.png | Bin 148 -> 0 bytes .../vendor/zTree/api/apiCss/img/lightbulb.png | Bin 27355 -> 0 bytes .../vendor/zTree/api/apiCss/img/overlay_arrow.gif | Bin 625 -> 0 bytes .../vendor/zTree/api/apiCss/img/overlay_arrow.png | Bin 830 -> 0 bytes .../vendor/zTree/api/apiCss/img/overlay_bg.png | Bin 109 -> 0 bytes .../zTree/api/apiCss/img/overlay_close_IE6.gif | Bin 441 -> 0 bytes .../vendor/zTree/api/apiCss/img/zTreeStandard.gif | Bin 6851 -> 0 bytes .../vendor/zTree/api/apiCss/img/zTreeStandard.png | Bin 12573 -> 0 bytes .../vendor/zTree/api/apiCss/jquery-1.6.2.min.js | 18 - .../zTree/api/apiCss/jquery.ztree.core-3.5.js | 69 - .../vendor/zTree/api/apiCss/zTreeStyleForApi.css | 49 - .../webroot/vendor/zTree/api/cn/fn.zTree._z.html | 13 - .../vendor/zTree/api/cn/fn.zTree.destroy.html | 28 - .../vendor/zTree/api/cn/fn.zTree.getZTreeObj.html | 24 - .../webroot/vendor/zTree/api/cn/fn.zTree.init.html | 74 - .../zTree/api/cn/setting.async.autoParam.html | 39 - .../zTree/api/cn/setting.async.contentType.html | 29 - .../zTree/api/cn/setting.async.dataFilter.html | 45 - .../zTree/api/cn/setting.async.dataType.html | 29 - .../vendor/zTree/api/cn/setting.async.enable.html | 30 - .../zTree/api/cn/setting.async.otherParam.html | 40 - .../vendor/zTree/api/cn/setting.async.type.html | 30 - .../vendor/zTree/api/cn/setting.async.url.html | 50 - .../zTree/api/cn/setting.callback.beforeAsync.html | 35 - .../zTree/api/cn/setting.callback.beforeCheck.html | 34 - .../zTree/api/cn/setting.callback.beforeClick.html | 49 - .../api/cn/setting.callback.beforeCollapse.html | 34 - .../api/cn/setting.callback.beforeDblClick.html | 36 - .../zTree/api/cn/setting.callback.beforeDrag.html | 39 - .../api/cn/setting.callback.beforeDragOpen.html | 37 - .../zTree/api/cn/setting.callback.beforeDrop.html | 48 - .../api/cn/setting.callback.beforeEditName.html | 38 - .../api/cn/setting.callback.beforeExpand.html | 34 - .../api/cn/setting.callback.beforeMouseDown.html | 35 - .../api/cn/setting.callback.beforeMouseUp.html | 35 - .../api/cn/setting.callback.beforeRemove.html | 37 - .../api/cn/setting.callback.beforeRename.html | 46 - .../api/cn/setting.callback.beforeRightClick.html | 35 - .../api/cn/setting.callback.onAsyncError.html | 42 - .../api/cn/setting.callback.onAsyncSuccess.html | 38 - .../zTree/api/cn/setting.callback.onCheck.html | 34 - .../zTree/api/cn/setting.callback.onClick.html | 49 - .../zTree/api/cn/setting.callback.onCollapse.html | 34 - .../zTree/api/cn/setting.callback.onDblClick.html | 35 - .../zTree/api/cn/setting.callback.onDrag.html | 34 - .../zTree/api/cn/setting.callback.onDragMove.html | 34 - .../zTree/api/cn/setting.callback.onDrop.html | 46 - .../zTree/api/cn/setting.callback.onExpand.html | 34 - .../zTree/api/cn/setting.callback.onMouseDown.html | 35 - .../zTree/api/cn/setting.callback.onMouseUp.html | 35 - .../api/cn/setting.callback.onNodeCreated.html | 35 - .../zTree/api/cn/setting.callback.onRemove.html | 34 - .../zTree/api/cn/setting.callback.onRename.html | 40 - .../api/cn/setting.callback.onRightClick.html | 36 - .../api/cn/setting.check.autoCheckTrigger.html | 28 - .../api/cn/setting.check.chkDisabledInherit.html | 28 - .../zTree/api/cn/setting.check.chkStyle.html | 48 - .../zTree/api/cn/setting.check.chkboxType.html | 31 - .../vendor/zTree/api/cn/setting.check.enable.html | 25 - .../zTree/api/cn/setting.check.nocheckInherit.html | 28 - .../zTree/api/cn/setting.check.radioType.html | 29 - .../zTree/api/cn/setting.data.keep.leaf.html | 28 - .../zTree/api/cn/setting.data.keep.parent.html | 28 - .../zTree/api/cn/setting.data.key.checked.html | 24 - .../zTree/api/cn/setting.data.key.children.html | 23 - .../vendor/zTree/api/cn/setting.data.key.name.html | 23 - .../zTree/api/cn/setting.data.key.title.html | 24 - .../vendor/zTree/api/cn/setting.data.key.url.html | 24 - .../api/cn/setting.data.simpleData.enable.html | 38 - .../api/cn/setting.data.simpleData.idKey.html | 32 - .../api/cn/setting.data.simpleData.pIdKey.html | 32 - .../api/cn/setting.data.simpleData.rootPId.html | 32 - .../cn/setting.edit.drag.autoExpandTrigger.html | 28 - .../api/cn/setting.edit.drag.autoOpenTime.html | 25 - .../zTree/api/cn/setting.edit.drag.borderMax.html | 25 - .../zTree/api/cn/setting.edit.drag.borderMin.html | 25 - .../zTree/api/cn/setting.edit.drag.inner.html | 59 - .../zTree/api/cn/setting.edit.drag.isCopy.html | 32 - .../zTree/api/cn/setting.edit.drag.isMove.html | 32 - .../api/cn/setting.edit.drag.maxShowNodeNum.html | 25 - .../api/cn/setting.edit.drag.minMoveSize.html | 25 - .../zTree/api/cn/setting.edit.drag.next.html | 58 - .../zTree/api/cn/setting.edit.drag.prev.html | 58 - .../api/cn/setting.edit.editNameSelectAll.html | 27 - .../vendor/zTree/api/cn/setting.edit.enable.html | 38 - .../zTree/api/cn/setting.edit.removeTitle.html | 48 - .../zTree/api/cn/setting.edit.renameTitle.html | 48 - .../zTree/api/cn/setting.edit.showRemoveBtn.html | 49 - .../zTree/api/cn/setting.edit.showRenameBtn.html | 51 - .../vendor/zTree/api/cn/setting.treeId.html | 14 - .../vendor/zTree/api/cn/setting.treeObj.html | 14 - .../zTree/api/cn/setting.view.addDiyDom.html | 40 - .../zTree/api/cn/setting.view.addHoverDom.html | 45 - .../api/cn/setting.view.autoCancelSelected.html | 26 - .../zTree/api/cn/setting.view.dblClickExpand.html | 44 - .../zTree/api/cn/setting.view.expandSpeed.html | 31 - .../vendor/zTree/api/cn/setting.view.fontCss.html | 42 - .../zTree/api/cn/setting.view.nameIsHTML.html | 27 - .../zTree/api/cn/setting.view.removeHoverDom.html | 45 - .../zTree/api/cn/setting.view.selectedMulti.html | 27 - .../vendor/zTree/api/cn/setting.view.showIcon.html | 44 - .../vendor/zTree/api/cn/setting.view.showLine.html | 25 - .../zTree/api/cn/setting.view.showTitle.html | 46 - .../api/cn/setting.view.txtSelectedEnable.html | 25 - .../zTree/api/cn/treeNode.check_Child_State.html | 43 - .../vendor/zTree/api/cn/treeNode.check_Focus.html | 19 - .../vendor/zTree/api/cn/treeNode.checked.html | 32 - .../vendor/zTree/api/cn/treeNode.checkedOld.html | 25 - .../vendor/zTree/api/cn/treeNode.children.html | 35 - .../vendor/zTree/api/cn/treeNode.chkDisabled.html | 28 - .../vendor/zTree/api/cn/treeNode.click.html | 24 - .../webroot/vendor/zTree/api/cn/treeNode.diy.html | 15 - .../vendor/zTree/api/cn/treeNode.editNameFlag.html | 19 - .../zTree/api/cn/treeNode.getCheckStatus.html | 63 - .../vendor/zTree/api/cn/treeNode.getNextNode.html | 27 - .../zTree/api/cn/treeNode.getParentNode.html | 27 - .../vendor/zTree/api/cn/treeNode.getPreNode.html | 27 - .../vendor/zTree/api/cn/treeNode.halfCheck.html | 29 - .../webroot/vendor/zTree/api/cn/treeNode.icon.html | 33 - .../vendor/zTree/api/cn/treeNode.iconClose.html | 33 - .../vendor/zTree/api/cn/treeNode.iconOpen.html | 33 - .../vendor/zTree/api/cn/treeNode.iconSkin.html | 43 - .../vendor/zTree/api/cn/treeNode.isAjaxing.html | 26 - .../vendor/zTree/api/cn/treeNode.isFirstNode.html | 28 - .../vendor/zTree/api/cn/treeNode.isHidden.html | 27 - .../vendor/zTree/api/cn/treeNode.isHover.html | 19 - .../vendor/zTree/api/cn/treeNode.isLastNode.html | 28 - .../vendor/zTree/api/cn/treeNode.isParent.html | 28 - .../vendor/zTree/api/cn/treeNode.level.html | 25 - .../webroot/vendor/zTree/api/cn/treeNode.name.html | 25 - .../vendor/zTree/api/cn/treeNode.nocheck.html | 26 - .../webroot/vendor/zTree/api/cn/treeNode.open.html | 30 - .../vendor/zTree/api/cn/treeNode.parentTId.html | 27 - .../webroot/vendor/zTree/api/cn/treeNode.tId.html | 25 - .../vendor/zTree/api/cn/treeNode.target.html | 24 - .../webroot/vendor/zTree/api/cn/treeNode.url.html | 25 - .../vendor/zTree/api/cn/treeNode.zAsync.html | 28 - .../vendor/zTree/api/cn/zTreeObj.addNodes.html | 42 - .../zTree/api/cn/zTreeObj.cancelEditName.html | 30 - .../zTree/api/cn/zTreeObj.cancelSelectedNode.html | 35 - .../zTree/api/cn/zTreeObj.checkAllNodes.html | 29 - .../vendor/zTree/api/cn/zTreeObj.checkNode.html | 44 - .../vendor/zTree/api/cn/zTreeObj.copyNode.html | 44 - .../vendor/zTree/api/cn/zTreeObj.destroy.html | 25 - .../vendor/zTree/api/cn/zTreeObj.editName.html | 29 - .../vendor/zTree/api/cn/zTreeObj.expandAll.html | 30 - .../vendor/zTree/api/cn/zTreeObj.expandNode.html | 50 - .../api/cn/zTreeObj.getChangeCheckedNodes.html | 24 - .../zTree/api/cn/zTreeObj.getCheckedNodes.html | 28 - .../zTree/api/cn/zTreeObj.getNodeByParam.html | 32 - .../vendor/zTree/api/cn/zTreeObj.getNodeByTId.html | 27 - .../vendor/zTree/api/cn/zTreeObj.getNodeIndex.html | 30 - .../vendor/zTree/api/cn/zTreeObj.getNodes.html | 26 - .../zTree/api/cn/zTreeObj.getNodesByFilter.html | 43 - .../zTree/api/cn/zTreeObj.getNodesByParam.html | 31 - .../api/cn/zTreeObj.getNodesByParamFuzzy.html | 32 - .../zTree/api/cn/zTreeObj.getSelectedNodes.html | 23 - .../vendor/zTree/api/cn/zTreeObj.hideNode.html | 29 - .../vendor/zTree/api/cn/zTreeObj.hideNodes.html | 29 - .../vendor/zTree/api/cn/zTreeObj.moveNode.html | 46 - .../zTree/api/cn/zTreeObj.reAsyncChildNodes.html | 42 - .../vendor/zTree/api/cn/zTreeObj.refresh.html | 24 - .../zTree/api/cn/zTreeObj.removeChildNodes.html | 32 - .../vendor/zTree/api/cn/zTreeObj.removeNode.html | 34 - .../vendor/zTree/api/cn/zTreeObj.selectNode.html | 34 - .../zTree/api/cn/zTreeObj.setChkDisabled.html | 44 - .../vendor/zTree/api/cn/zTreeObj.setEditable.html | 27 - .../vendor/zTree/api/cn/zTreeObj.setting.html | 13 - .../vendor/zTree/api/cn/zTreeObj.showNode.html | 31 - .../vendor/zTree/api/cn/zTreeObj.showNodes.html | 29 - .../zTree/api/cn/zTreeObj.transformToArray.html | 25 - .../api/cn/zTreeObj.transformTozTreeNodes.html | 43 - .../vendor/zTree/api/cn/zTreeObj.updateNode.html | 37 - .../webroot/vendor/zTree/api/en/fn.zTree._z.html | 13 - .../vendor/zTree/api/en/fn.zTree.destroy.html | 28 - .../vendor/zTree/api/en/fn.zTree.getZTreeObj.html | 25 - .../webroot/vendor/zTree/api/en/fn.zTree.init.html | 75 - .../zTree/api/en/setting.async.autoParam.html | 39 - .../zTree/api/en/setting.async.contentType.html | 29 - .../zTree/api/en/setting.async.dataFilter.html | 45 - .../zTree/api/en/setting.async.dataType.html | 29 - .../vendor/zTree/api/en/setting.async.enable.html | 30 - .../zTree/api/en/setting.async.otherParam.html | 40 - .../vendor/zTree/api/en/setting.async.type.html | 30 - .../vendor/zTree/api/en/setting.async.url.html | 50 - .../zTree/api/en/setting.callback.beforeAsync.html | 35 - .../zTree/api/en/setting.callback.beforeCheck.html | 34 - .../zTree/api/en/setting.callback.beforeClick.html | 49 - .../api/en/setting.callback.beforeCollapse.html | 34 - .../api/en/setting.callback.beforeDblClick.html | 36 - .../zTree/api/en/setting.callback.beforeDrag.html | 39 - .../api/en/setting.callback.beforeDragOpen.html | 37 - .../zTree/api/en/setting.callback.beforeDrop.html | 50 - .../api/en/setting.callback.beforeEditName.html | 38 - .../api/en/setting.callback.beforeExpand.html | 34 - .../api/en/setting.callback.beforeMouseDown.html | 35 - .../api/en/setting.callback.beforeMouseUp.html | 35 - .../api/en/setting.callback.beforeRemove.html | 37 - .../api/en/setting.callback.beforeRename.html | 46 - .../api/en/setting.callback.beforeRightClick.html | 35 - .../api/en/setting.callback.onAsyncError.html | 42 - .../api/en/setting.callback.onAsyncSuccess.html | 38 - .../zTree/api/en/setting.callback.onCheck.html | 34 - .../zTree/api/en/setting.callback.onClick.html | 49 - .../zTree/api/en/setting.callback.onCollapse.html | 34 - .../zTree/api/en/setting.callback.onDblClick.html | 35 - .../zTree/api/en/setting.callback.onDrag.html | 34 - .../zTree/api/en/setting.callback.onDragMove.html | 34 - .../zTree/api/en/setting.callback.onDrop.html | 48 - .../zTree/api/en/setting.callback.onExpand.html | 34 - .../zTree/api/en/setting.callback.onMouseDown.html | 35 - .../zTree/api/en/setting.callback.onMouseUp.html | 35 - .../api/en/setting.callback.onNodeCreated.html | 35 - .../zTree/api/en/setting.callback.onRemove.html | 34 - .../zTree/api/en/setting.callback.onRename.html | 40 - .../api/en/setting.callback.onRightClick.html | 36 - .../api/en/setting.check.autoCheckTrigger.html | 29 - .../api/en/setting.check.chkDisabledInherit.html | 28 - .../zTree/api/en/setting.check.chkStyle.html | 48 - .../zTree/api/en/setting.check.chkboxType.html | 31 - .../vendor/zTree/api/en/setting.check.enable.html | 26 - .../zTree/api/en/setting.check.nocheckInherit.html | 28 - .../zTree/api/en/setting.check.radioType.html | 29 - .../zTree/api/en/setting.data.keep.leaf.html | 28 - .../zTree/api/en/setting.data.keep.parent.html | 28 - .../zTree/api/en/setting.data.key.checked.html | 24 - .../zTree/api/en/setting.data.key.children.html | 23 - .../vendor/zTree/api/en/setting.data.key.name.html | 23 - .../zTree/api/en/setting.data.key.title.html | 24 - .../vendor/zTree/api/en/setting.data.key.url.html | 24 - .../api/en/setting.data.simpleData.enable.html | 39 - .../api/en/setting.data.simpleData.idKey.html | 32 - .../api/en/setting.data.simpleData.pIdKey.html | 32 - .../api/en/setting.data.simpleData.rootPId.html | 32 - .../en/setting.edit.drag.autoExpandTrigger.html | 29 - .../api/en/setting.edit.drag.autoOpenTime.html | 25 - .../zTree/api/en/setting.edit.drag.borderMax.html | 25 - .../zTree/api/en/setting.edit.drag.borderMin.html | 25 - .../zTree/api/en/setting.edit.drag.inner.html | 60 - .../zTree/api/en/setting.edit.drag.isCopy.html | 32 - .../zTree/api/en/setting.edit.drag.isMove.html | 32 - .../api/en/setting.edit.drag.maxShowNodeNum.html | 25 - .../api/en/setting.edit.drag.minMoveSize.html | 25 - .../zTree/api/en/setting.edit.drag.next.html | 59 - .../zTree/api/en/setting.edit.drag.prev.html | 59 - .../api/en/setting.edit.editNameSelectAll.html | 27 - .../vendor/zTree/api/en/setting.edit.enable.html | 39 - .../zTree/api/en/setting.edit.removeTitle.html | 48 - .../zTree/api/en/setting.edit.renameTitle.html | 48 - .../zTree/api/en/setting.edit.showRemoveBtn.html | 50 - .../zTree/api/en/setting.edit.showRenameBtn.html | 52 - .../vendor/zTree/api/en/setting.treeId.html | 14 - .../vendor/zTree/api/en/setting.treeObj.html | 14 - .../zTree/api/en/setting.view.addDiyDom.html | 40 - .../zTree/api/en/setting.view.addHoverDom.html | 45 - .../api/en/setting.view.autoCancelSelected.html | 27 - .../zTree/api/en/setting.view.dblClickExpand.html | 45 - .../zTree/api/en/setting.view.expandSpeed.html | 31 - .../vendor/zTree/api/en/setting.view.fontCss.html | 42 - .../zTree/api/en/setting.view.nameIsHTML.html | 28 - .../zTree/api/en/setting.view.removeHoverDom.html | 45 - .../zTree/api/en/setting.view.selectedMulti.html | 28 - .../vendor/zTree/api/en/setting.view.showIcon.html | 45 - .../vendor/zTree/api/en/setting.view.showLine.html | 26 - .../zTree/api/en/setting.view.showTitle.html | 47 - .../api/en/setting.view.txtSelectedEnable.html | 26 - .../zTree/api/en/treeNode.check_Child_State.html | 43 - .../vendor/zTree/api/en/treeNode.check_Focus.html | 19 - .../vendor/zTree/api/en/treeNode.checked.html | 32 - .../vendor/zTree/api/en/treeNode.checkedOld.html | 25 - .../vendor/zTree/api/en/treeNode.children.html | 35 - .../vendor/zTree/api/en/treeNode.chkDisabled.html | 28 - .../vendor/zTree/api/en/treeNode.click.html | 24 - .../webroot/vendor/zTree/api/en/treeNode.diy.html | 15 - .../vendor/zTree/api/en/treeNode.editNameFlag.html | 19 - .../zTree/api/en/treeNode.getCheckStatus.html | 63 - .../vendor/zTree/api/en/treeNode.getNextNode.html | 27 - .../zTree/api/en/treeNode.getParentNode.html | 27 - .../vendor/zTree/api/en/treeNode.getPreNode.html | 27 - .../vendor/zTree/api/en/treeNode.halfCheck.html | 29 - .../webroot/vendor/zTree/api/en/treeNode.icon.html | 33 - .../vendor/zTree/api/en/treeNode.iconClose.html | 33 - .../vendor/zTree/api/en/treeNode.iconOpen.html | 33 - .../vendor/zTree/api/en/treeNode.iconSkin.html | 43 - .../vendor/zTree/api/en/treeNode.isAjaxing.html | 26 - .../vendor/zTree/api/en/treeNode.isFirstNode.html | 28 - .../vendor/zTree/api/en/treeNode.isHidden.html | 28 - .../vendor/zTree/api/en/treeNode.isHover.html | 19 - .../vendor/zTree/api/en/treeNode.isLastNode.html | 28 - .../vendor/zTree/api/en/treeNode.isParent.html | 28 - .../vendor/zTree/api/en/treeNode.level.html | 25 - .../webroot/vendor/zTree/api/en/treeNode.name.html | 25 - .../vendor/zTree/api/en/treeNode.nocheck.html | 26 - .../webroot/vendor/zTree/api/en/treeNode.open.html | 30 - .../vendor/zTree/api/en/treeNode.parentTId.html | 27 - .../webroot/vendor/zTree/api/en/treeNode.tId.html | 25 - .../vendor/zTree/api/en/treeNode.target.html | 24 - .../webroot/vendor/zTree/api/en/treeNode.url.html | 25 - .../vendor/zTree/api/en/treeNode.zAsync.html | 28 - .../vendor/zTree/api/en/zTreeObj.addNodes.html | 42 - .../zTree/api/en/zTreeObj.cancelEditName.html | 30 - .../zTree/api/en/zTreeObj.cancelSelectedNode.html | 35 - .../zTree/api/en/zTreeObj.checkAllNodes.html | 29 - .../vendor/zTree/api/en/zTreeObj.checkNode.html | 44 - .../vendor/zTree/api/en/zTreeObj.copyNode.html | 47 - .../vendor/zTree/api/en/zTreeObj.destroy.html | 25 - .../vendor/zTree/api/en/zTreeObj.editName.html | 29 - .../vendor/zTree/api/en/zTreeObj.expandAll.html | 30 - .../vendor/zTree/api/en/zTreeObj.expandNode.html | 50 - .../api/en/zTreeObj.getChangeCheckedNodes.html | 24 - .../zTree/api/en/zTreeObj.getCheckedNodes.html | 28 - .../zTree/api/en/zTreeObj.getNodeByParam.html | 32 - .../vendor/zTree/api/en/zTreeObj.getNodeByTId.html | 27 - .../vendor/zTree/api/en/zTreeObj.getNodeIndex.html | 30 - .../vendor/zTree/api/en/zTreeObj.getNodes.html | 26 - .../zTree/api/en/zTreeObj.getNodesByFilter.html | 43 - .../zTree/api/en/zTreeObj.getNodesByParam.html | 31 - .../api/en/zTreeObj.getNodesByParamFuzzy.html | 32 - .../zTree/api/en/zTreeObj.getSelectedNodes.html | 23 - .../vendor/zTree/api/en/zTreeObj.hideNode.html | 29 - .../vendor/zTree/api/en/zTreeObj.hideNodes.html | 29 - .../vendor/zTree/api/en/zTreeObj.moveNode.html | 49 - .../zTree/api/en/zTreeObj.reAsyncChildNodes.html | 42 - .../vendor/zTree/api/en/zTreeObj.refresh.html | 24 - .../zTree/api/en/zTreeObj.removeChildNodes.html | 32 - .../vendor/zTree/api/en/zTreeObj.removeNode.html | 34 - .../vendor/zTree/api/en/zTreeObj.selectNode.html | 34 - .../zTree/api/en/zTreeObj.setChkDisabled.html | 44 - .../vendor/zTree/api/en/zTreeObj.setEditable.html | 27 - .../vendor/zTree/api/en/zTreeObj.setting.html | 14 - .../vendor/zTree/api/en/zTreeObj.showNode.html | 31 - .../vendor/zTree/api/en/zTreeObj.showNodes.html | 29 - .../zTree/api/en/zTreeObj.transformToArray.html | 27 - .../api/en/zTreeObj.transformTozTreeNodes.html | 44 - .../vendor/zTree/api/en/zTreeObj.updateNode.html | 37 - .../resources/webroot/vendor/zTree/css/demo.css | 33 - .../webroot/vendor/zTree/css/zTreeStyle/ReadMe.txt | 1 - .../vendor/zTree/css/zTreeStyle/img/Thumbs.db | Bin 23552 -> 0 bytes .../zTree/css/zTreeStyle/img/diy/1_close.png | Bin 601 -> 0 bytes .../vendor/zTree/css/zTreeStyle/img/diy/1_open.png | Bin 580 -> 0 bytes .../vendor/zTree/css/zTreeStyle/img/diy/2.png | Bin 570 -> 0 bytes .../vendor/zTree/css/zTreeStyle/img/diy/3.png | Bin 762 -> 0 bytes .../vendor/zTree/css/zTreeStyle/img/diy/4.png | Bin 399 -> 0 bytes .../vendor/zTree/css/zTreeStyle/img/diy/5.png | Bin 710 -> 0 bytes .../vendor/zTree/css/zTreeStyle/img/diy/6.png | Bin 432 -> 0 bytes .../vendor/zTree/css/zTreeStyle/img/diy/7.png | Bin 534 -> 0 bytes .../vendor/zTree/css/zTreeStyle/img/diy/8.png | Bin 529 -> 0 bytes .../vendor/zTree/css/zTreeStyle/img/diy/9.png | Bin 467 -> 0 bytes .../vendor/zTree/css/zTreeStyle/img/diy/Thumbs.db | Bin 19968 -> 0 bytes .../vendor/zTree/css/zTreeStyle/img/line_conn.gif | Bin 45 -> 0 bytes .../vendor/zTree/css/zTreeStyle/img/loading.gif | Bin 381 -> 0 bytes .../zTree/css/zTreeStyle/img/zTreeStandard.gif | Bin 5564 -> 0 bytes .../zTree/css/zTreeStyle/img/zTreeStandard.gifbak | Bin 5564 -> 0 bytes .../zTree/css/zTreeStyle/img/zTreeStandard.png | Bin 11206 -> 0 bytes .../zTree/css/zTreeStyle/img/zTreeStandard.pngbak | Bin 11173 -> 0 bytes .../zTree/css/zTreeStyle/img/zTreeStandard.psd | Bin 93494 -> 0 bytes .../vendor/zTree/css/zTreeStyle/zTreeStyle.css | 107 - .../webroot/vendor/zTree/js/jquery.ztree.all.js | 3506 -- .../vendor/zTree/js/jquery.ztree.all.min.js | 160 - .../webroot/vendor/zTree/js/jquery.ztree.core.js | 1684 - .../vendor/zTree/js/jquery.ztree.core.min.js | 69 - .../vendor/zTree/js/jquery.ztree.excheck.js | 629 - .../vendor/zTree/js/jquery.ztree.excheck.min.js | 34 - .../webroot/vendor/zTree/js/jquery.ztree.exedit.js | 1191 - .../vendor/zTree/js/jquery.ztree.exedit.min.js | 53 - .../webroot/vendor/zTree/js/jquery.ztree.exhide.js | 363 - .../vendor/zTree/js/jquery.ztree.exhide.min.js | 22 - .../resources/webroot/vendor/zTree/log v3.x.txt | 207 - .../main/resources/webroot/vendor/zTree/readme.txt | 2 - .../webroot/vendor/zTree/zTree.v3.jquery.json | 35 - umc-iui/pom.xml | 31 - .../webroot/umc-drill/createtestdata.html | 618 - .../main/resources/webroot/umc-drill/css/itm.css | 342 - .../main/resources/webroot/umc-drill/css/vnf.css | 916 - .../i18n/ngict-umc-monitor-i18n-en-US.properties | 24 - .../i18n/ngict-umc-monitor-i18n-zh-CN.properties | 24 - .../webroot/umc-drill/images/aos_view-fm.gif | Bin 205 -> 0 bytes .../resources/webroot/umc-drill/images/arrow.png | Bin 3075 -> 0 bytes .../webroot/umc-drill/images/details_close.png | Bin 3306 -> 0 bytes .../webroot/umc-drill/images/details_open1.png | Bin 3304 -> 0 bytes .../resources/webroot/umc-drill/images/down.png | Bin 2938 -> 0 bytes .../resources/webroot/umc-drill/images/filter.png | Bin 6756 -> 0 bytes .../main/resources/webroot/umc-drill/images/up.png | Bin 2926 -> 0 bytes .../main/resources/webroot/umc-drill/index.html | 26 - .../resources/webroot/umc-drill/js/Constants.js | 26 - .../webroot/umc-drill/js/avalon.modern.js | 4455 -- .../resources/webroot/umc-drill/js/commonUtil.js | 52 - .../src/main/resources/webroot/umc-drill/js/d3.js | 9253 ---- .../resources/webroot/umc-drill/js/echarts-all.js | 40 - .../webroot/umc-drill/js/jquery-1.10.2.min.js | 19 - .../webroot/umc-drill/js/mockdataController.js | 587 - .../webroot/umc-drill/js/monitorHeadChart.js | 94 - .../resources/webroot/umc-drill/js/monitors.js | 494 - .../webroot/umc-drill/js/vnfController.js | 607 - .../resources/webroot/umc-drill/monitorns.html | 613 - .../resources/webroot/umc-fm/css/alarmsQuery.css | 735 - .../main/resources/webroot/umc-fm/css/delete.me | 0 .../webroot/umc-fm/html/fm_currentAlarm_view.html | 364 - .../main/resources/webroot/umc-fm/i18n/delete.me | 0 .../i18n/ngict-curalarms-iui-i18n-en-US.properties | 108 - .../i18n/ngict-curalarms-iui-i18n-zh-CN.properties | 98 - .../main/resources/webroot/umc-fm/images/Thumbs.db | Bin 20992 -> 0 bytes .../webroot/umc-fm/images/aos_view-fm.gif | Bin 205 -> 0 bytes .../main/resources/webroot/umc-fm/images/arrow.png | Bin 5680 -> 0 bytes .../webroot/umc-fm/images/details_close.png | Bin 3300 -> 0 bytes .../webroot/umc-fm/images/details_open.png | Bin 3304 -> 0 bytes .../main/resources/webroot/umc-fm/images/down.png | Bin 2938 -> 0 bytes .../resources/webroot/umc-fm/images/filter.png | Bin 7780 -> 0 bytes .../resources/webroot/umc-fm/images/statistics.png | Bin 25116 -> 0 bytes .../main/resources/webroot/umc-fm/images/up.png | Bin 2926 -> 0 bytes .../main/resources/webroot/umc-fm/js/CommonUtil.js | 42 - .../main/resources/webroot/umc-fm/js/alarmConds.js | 261 - .../webroot/umc-fm/js/alarmsServerPageTable.js | 514 - .../main/resources/webroot/umc-fm/js/alarmsUtil.js | 1154 - .../resources/webroot/umc-fm/js/avalon.modern.js | 4935 -- .../webroot/umc-fm/js/curAlarmsController.js | 475 - .../src/main/resources/webroot/umc-fm/js/delete.me | 0 .../main/resources/webroot/umc-monitor/css/dac.css | 220 - .../umc-monitor/css/dataTables.bootstrap.css | 331 - .../webroot/umc-monitor/css/monitorSetting.css | 167 - .../resources/webroot/umc-monitor/dacList.html | 253 - .../i18n/loadi18nApp_ngict-umc-monitor.js | 42 - .../i18n/umc-monitor-iui-i18n-en-US.properties | 103 - .../i18n/umc-monitor-iui-i18n-zh-CN.properties | 103 - .../webroot/umc-monitor/images/throbber.gif | Bin 9257 -> 0 bytes .../webroot/umc-monitor/js/dacController.js | 275 - .../umc-monitor/js/monitorSettingController.js | 435 - .../webroot/umc-monitor/js/monitorSettingUtil.js | 169 - .../webroot/umc-monitor/monitorSetting.html | 487 - .../webroot/umc-monitor/monitorSettingList.html | 126 - .../main/resources/webroot/umc-pm/css/delete.me | 0 .../resources/webroot/umc-pm/css/meataskQuery.css | 872 - .../webroot/umc-pm/css/performanceChart.css | 45 - .../resources/webroot/umc-pm/css/pmQueryBox.css | 299 - .../webroot/umc-pm/html/index/indexManage.html | 163 - .../webroot/umc-pm/html/index/indexView.html | 74 - .../umc-pm/html/meatask/meataskQueryRule.html | 184 - .../umc-pm/html/meatask/meataskQueryView.html | 151 - .../webroot/umc-pm/html/meataskQueryView.html | 149 - .../main/resources/webroot/umc-pm/i18n/delete.me | 0 .../umc-pm/i18n/ngict-pm-iui-i18n-en-US.properties | 130 - .../umc-pm/i18n/ngict-pm-iui-i18n-zh-CN.properties | 131 - .../webroot/umc-pm/images/aos_view-fm.gif | Bin 205 -> 0 bytes .../main/resources/webroot/umc-pm/images/arrow.png | Bin 5680 -> 0 bytes .../main/resources/webroot/umc-pm/images/chart.png | Bin 1727 -> 0 bytes .../resources/webroot/umc-pm/images/delete.png | Bin 3029 -> 0 bytes .../webroot/umc-pm/images/details_close.png | Bin 3300 -> 0 bytes .../webroot/umc-pm/images/details_open.png | Bin 3304 -> 0 bytes .../main/resources/webroot/umc-pm/images/down.png | Bin 2938 -> 0 bytes .../resources/webroot/umc-pm/images/filter.png | Bin 7780 -> 0 bytes .../resources/webroot/umc-pm/images/statistics.png | Bin 25116 -> 0 bytes .../main/resources/webroot/umc-pm/images/table.png | Bin 1668 -> 0 bytes .../main/resources/webroot/umc-pm/images/up.png | Bin 2926 -> 0 bytes .../src/main/resources/webroot/umc-pm/js/avalon.js | 5875 -- .../main/resources/webroot/umc-pm/js/commonUtil.js | 69 - .../resources/webroot/umc-pm/js/dataRangeUtil.js | 354 - .../src/main/resources/webroot/umc-pm/js/delete.me | 0 .../resources/webroot/umc-pm/js/i18n/loadi18n.js | 23 - .../webroot/umc-pm/js/index/indexController.js | 228 - .../webroot/umc-pm/js/index/indexManage.js | 187 - .../resources/webroot/umc-pm/js/meatask/echarts.js | 54502 ------------------- .../umc-pm/js/meatask/meataskQueryController.js | 843 - .../webroot/umc-pm/js/meatask/performanceChart.js | 181 - .../src/main/resources/webroot/umc-pm/js/pmUtil.js | 458 - .../resources/webroot/umc-pm/json/counters.json | 25 - .../main/resources/webroot/umc-pm/json/index.json | 18 - .../resources/webroot/umc-pm/json/indexes.json | 50 - .../umc-pm/json/meatask/meatasks_content.json | 97 - .../webroot/umc-pm/json/meatask/moType.json | 25 - .../webroot/umc-pm/json/meatask/moType1.json | 9 - .../webroot/umc-pm/json/meatask/resourceType.json | 29 - .../webroot/umc-pm/json/meatask/resources.json | 115 - .../webroot/umc-pm/json/meatask/resources1.json | 35 - .../webroot/umc-pm/json/meatask/resources2.json | 30 - .../resources/webroot/umc-pm/json/meatasks.json | 97 - .../webroot/umc-pm/json/meatasks_content.json | 94 - .../webroot/umc-pm/json/resourceType.json | 8 - .../main/resources/webroot/umc-pm/json/test.json | 152 - .../webroot/umc-pm/json/thresholdList.json | 116 - .../main/resources/webroot/umc-topo/css/main.css | 161 - .../main/resources/webroot/umc-topo/images/NS.png | Bin 22438 -> 0 bytes .../main/resources/webroot/umc-topo/images/NS1.png | Bin 23065 -> 0 bytes .../main/resources/webroot/umc-topo/images/VDU.png | Bin 21080 -> 0 bytes .../resources/webroot/umc-topo/images/VDU1.png | Bin 21168 -> 0 bytes .../main/resources/webroot/umc-topo/images/VNF.png | Bin 22868 -> 0 bytes .../resources/webroot/umc-topo/images/VNF1.png | Bin 23757 -> 0 bytes .../resources/webroot/umc-topo/images/VNFC.png | Bin 20496 -> 0 bytes .../resources/webroot/umc-topo/images/VNFC1 .png | Bin 21207 -> 0 bytes .../webroot/umc-topo/images/off/Bridge.gif | Bin 426 -> 0 bytes .../webroot/umc-topo/images/off/Computer.gif | Bin 328 -> 0 bytes .../resources/webroot/umc-topo/images/off/Hub.gif | Bin 441 -> 0 bytes .../webroot/umc-topo/images/off/InternetServer.gif | Bin 1106 -> 0 bytes .../webroot/umc-topo/images/off/MiniComputer.gif | Bin 600 -> 0 bytes .../webroot/umc-topo/images/off/Multiplexer.gif | Bin 571 -> 0 bytes .../webroot/umc-topo/images/off/Router.gif | Bin 631 -> 0 bytes .../webroot/umc-topo/images/off/Server.gif | Bin 523 -> 0 bytes .../webroot/umc-topo/images/off/Switch.gif | Bin 1052 -> 0 bytes .../webroot/umc-topo/images/off/TerminalServer.gif | Bin 455 -> 0 bytes .../resources/webroot/umc-topo/images/off/vim.png | Bin 2990 -> 0 bytes .../webroot/umc-topo/images/on/Bridge.gif | Bin 443 -> 0 bytes .../webroot/umc-topo/images/on/BridgeMinus.gif | Bin 476 -> 0 bytes .../webroot/umc-topo/images/on/BridgePlus.gif | Bin 491 -> 0 bytes .../webroot/umc-topo/images/on/Computer.png | Bin 14541 -> 0 bytes .../umc-topo/images/on/ComputerMinusbak.gif | Bin 507 -> 0 bytes .../webroot/umc-topo/images/on/ComputerPlusbak.gif | Bin 520 -> 0 bytes .../webroot/umc-topo/images/on/Computerbak.gif | Bin 1180 -> 0 bytes .../resources/webroot/umc-topo/images/on/Hub.gif | Bin 5813 -> 0 bytes .../webroot/umc-topo/images/on/HubPlus.gif | Bin 805 -> 0 bytes .../webroot/umc-topo/images/on/InternetServer.gif | Bin 1103 -> 0 bytes .../webroot/umc-topo/images/on/MiniComputer.gif | Bin 710 -> 0 bytes .../webroot/umc-topo/images/on/Multiplexer.gif | Bin 594 -> 0 bytes .../webroot/umc-topo/images/on/Router.gif | Bin 672 -> 0 bytes .../webroot/umc-topo/images/on/Server.gif | Bin 519 -> 0 bytes .../webroot/umc-topo/images/on/Switch.gif | Bin 1818 -> 0 bytes .../webroot/umc-topo/images/on/TerminalServer.gif | Bin 489 -> 0 bytes .../webroot/umc-topo/images/on/hostMinus.png | Bin 11968 -> 0 bytes .../webroot/umc-topo/images/on/hostPlus.png | Bin 12005 -> 0 bytes .../resources/webroot/umc-topo/images/on/vdu.png | Bin 8569 -> 0 bytes .../webroot/umc-topo/images/on/vimMinus.png | Bin 20055 -> 0 bytes .../webroot/umc-topo/images/on/vimMinusbak.png | Bin 3109 -> 0 bytes .../webroot/umc-topo/images/on/vimPlus.png | Bin 20150 -> 0 bytes .../webroot/umc-topo/images/on/vimPlusbak.png | Bin 3157 -> 0 bytes .../main/resources/webroot/umc-topo/images/vim.png | Bin 27134 -> 0 bytes .../webroot/umc-topo/js/physicalTopology.js | 356 - .../webroot/umc-topo/js/serviceTopology.js | 503 - .../resources/webroot/umc-topo/js/topoDialog.js | 165 - .../main/resources/webroot/umc-topo/js/topoTool.js | 344 - .../webroot/umc-topo/physicalTopology.html | 24 - .../webroot/umc-topo/serviceTopology.html | 24 - 1609 files changed, 535667 deletions(-) delete mode 100644 .gitattributes delete mode 100644 .gitreview delete mode 100644 nsoc-iui/pom.xml delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/csarPackage.html delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/datatable-sort.css delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/fileupload.css delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/hostMirror.css delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/package.css delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/platform/animate.min.css delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/platform/skill.css delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/software.css delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/template.css delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/templateDetail.css delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/topology.css delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/virtualApplication.css delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/vnfm.css delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/hostMirror.html delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/i18n/nfv-nso-iui-i18n-en-US.properties delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/i18n/nfv-nso-iui-i18n-zh-CN.properties delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/images/down.png delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/images/pointes_blue.png delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/images/pointes_green.png delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/images/sort_asc.png delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/images/sort_asc_disabled.png delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/images/sort_both.png delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/images/sort_desc.png delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/images/sort_desc_disabled.png delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/images/up.png delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/component/commonUtil.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/component/loadi18n_nsoc.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/component/serverPageTable.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/hostMirror/hmController.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/hostMirror/hmUtil.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/hostMirror/host-validate.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/package/pmController.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/package/pmUtil.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/softwareMirror/smController.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/softwareMirror/smUtil.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/template/tmController.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/template/tmDetailController.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/template/tmDetailUtil.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/template/tmUtil.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/template/topoUtil.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/virtualApplication/validate.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/virtualApplication/vmAppController.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/virtualApplication/vmAppDetailController.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/virtualApplication/vmAppDetailUtil.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/virtualApplication/vmAppUtil.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/vnfm/vnfm-validate.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/vnfm/vnfmController.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/vnfm/vnfmUtil.js delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/softwareMirror.html delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/template.html delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/templateDetail.html delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/topology.html delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/virtualApplication.html delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/virtualApplicationDetail.html delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/virtualApplicationScale.html delete mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/vnfmView.html delete mode 100644 openoiui-standlone/pom.xml delete mode 100644 openoiui-standlone/src/main/assembly/run.bat delete mode 100644 openoiui-standlone/src/main/assembly/run.sh delete mode 100644 openoiui-standlone/src/main/assembly/stop.bat delete mode 100644 openoiui-standlone/src/main/assembly/stop.sh delete mode 100644 openoiui-standlone/src/main/assembly/webroot/component/openotopo/openotopo.js delete mode 100644 openoiui-standlone/src/main/assembly/webroot/component/openotopo/openotopo.min.js delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/hsif/openo-nsoc/i18n/loadi18n-openo-nsoc.js delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/hsif/openo-nsoc/i18n/openo-nsoc-i18n-en-US.properties delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/hsif/openo-nsoc/i18n/openo-nsoc-i18n-zh-CN.properties delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/hsif/openo-roc/i18n/loadi18n-openo-roc.js delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/hsif/openo-roc/i18n/openo-roc-i18n-en-US.properties delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/hsif/openo-roc/i18n/openo-roc-i18n-zh-CN.properties delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/hsif/openo-umc/i18n/loadi18n-openo-umc.js delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/hsif/openo-umc/i18n/openo-umc-i18n-en-US.properties delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/hsif/openo-umc/i18n/openo-umc-i18n-zh-CN.properties delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/i18n/web-framework-integration-i18n-en-US.properties delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/i18n/web-framework-integration-i18n-zh-CN.properties delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/i18n/web-portal-login-integration-i18n-en-US.properties delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/i18n/web-portal-login-integration-i18n-zh-CN.properties delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/img/integration/logo.png delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/img/integration/netnumenLogo.png delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/img/integration/zte_logo_16.gif delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/img/integration/zte_logo_white.png delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/img/integration/ztelogo.png delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/js/core/const.js delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/json/main-page.json delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/login.html delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/menus/main_Fmegabar.html delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/menus/main_Fsiderbar.html delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/menus/main_siderbar.html delete mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/menus/readme.txt delete mode 100644 pom.xml delete mode 100644 roc-iui/pom.xml delete mode 100644 roc-iui/src/main/resources/webroot/roc-rs-view/css/res.css delete mode 100644 roc-iui/src/main/resources/webroot/roc-rs-view/i18n/loadi18nApp_ngict-rs_view.js delete mode 100644 roc-iui/src/main/resources/webroot/roc-rs-view/i18n/roc-rs-view-iui-i18n-en-US.properties delete mode 100644 roc-iui/src/main/resources/webroot/roc-rs-view/i18n/roc-rs-view-iui-i18n-zh-CN.properties delete mode 100644 roc-iui/src/main/resources/webroot/roc-rs-view/images/down.png delete mode 100644 roc-iui/src/main/resources/webroot/roc-rs-view/images/up.png delete mode 100644 roc-iui/src/main/resources/webroot/roc-rs-view/js/resController.js delete mode 100644 roc-iui/src/main/resources/webroot/roc-rs-view/js/resUtil.js delete mode 100644 roc-iui/src/main/resources/webroot/roc-rs-view/resView.html delete mode 100644 roc-iui/src/main/resources/webroot/roc-sdn/css/sdn.css delete mode 100644 roc-iui/src/main/resources/webroot/roc-sdn/i18n/loadi18nApp.js delete mode 100644 roc-iui/src/main/resources/webroot/roc-sdn/i18n/roc-sdn-iui-i18n-en-US.properties delete mode 100644 roc-iui/src/main/resources/webroot/roc-sdn/i18n/roc-sdn-iui-i18n-zh-CN.properties delete mode 100644 roc-iui/src/main/resources/webroot/roc-sdn/js/sdn-validate.js delete mode 100644 roc-iui/src/main/resources/webroot/roc-sdn/js/sdnController.js delete mode 100644 roc-iui/src/main/resources/webroot/roc-sdn/js/sdnUtil.js delete mode 100644 roc-iui/src/main/resources/webroot/roc-sdn/sdnView.html delete mode 100644 roc-iui/src/main/resources/webroot/roc-vim/css/animate.min.css delete mode 100644 roc-iui/src/main/resources/webroot/roc-vim/css/bootstrap.css delete mode 100644 roc-iui/src/main/resources/webroot/roc-vim/css/skill.css delete mode 100644 roc-iui/src/main/resources/webroot/roc-vim/css/vim.css delete mode 100644 roc-iui/src/main/resources/webroot/roc-vim/css/vimChart.css delete mode 100644 roc-iui/src/main/resources/webroot/roc-vim/i18n/loadi18nApp.js delete mode 100644 roc-iui/src/main/resources/webroot/roc-vim/i18n/roc-vim-iui-i18n-en-US.properties delete mode 100644 roc-iui/src/main/resources/webroot/roc-vim/i18n/roc-vim-iui-i18n-zh-CN.properties delete mode 100644 roc-iui/src/main/resources/webroot/roc-vim/js/client-cometd.js delete mode 100644 roc-iui/src/main/resources/webroot/roc-vim/js/jqBootstrapValidation.js delete mode 100644 roc-iui/src/main/resources/webroot/roc-vim/js/vim-validate.js delete mode 100644 roc-iui/src/main/resources/webroot/roc-vim/js/vimChart.js delete mode 100644 roc-iui/src/main/resources/webroot/roc-vim/js/vimChartController.js delete mode 100644 roc-iui/src/main/resources/webroot/roc-vim/js/vimController.js delete mode 100644 roc-iui/src/main/resources/webroot/roc-vim/js/vimUtil.js delete mode 100644 roc-iui/src/main/resources/webroot/roc-vim/vimChart.html delete mode 100644 roc-iui/src/main/resources/webroot/roc-vim/vimView.html delete mode 100644 uiframe-iui/pom.xml delete mode 100644 uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/Read Me.txt delete mode 100644 uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo-files/demo.css delete mode 100644 uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo-files/demo.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo.html delete mode 100644 uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.eot delete mode 100644 uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.ttf delete mode 100644 uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.woff delete mode 100644 uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/selection.json delete mode 100644 uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/style.css delete mode 100644 uiframe-iui/src/main/resources/webroot/component/css/component.css delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/backstretch/jquery.backstretch.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/LICENSE.md delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/README.md delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/bootbox.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/LICENSE delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/README.md delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/bootstrap-hover-dropdown.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/css/bootstrap-dt.css delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/css/bootstrap.min.css delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.eot delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.ttf delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff2 delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/js/bootstrap.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/js/bootstrap.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/js/bootstrap2-typeahead.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/cometd/cometd.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/cometd/cometd/AckExtension.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/cometd/cometd/ReloadExtension.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/cometd/cometd/TimeStampExtension.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/cometd/cometd/TimeSyncExtension.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/cometd/jquery/jquery.cometd-ack.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/cometd/jquery/jquery.cometd-reload.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/cometd/jquery/jquery.cometd-timestamp.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/cometd/jquery/jquery.cometd-timesync.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/cometd/jquery/jquery.cometd.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/data-tables/images/loading-spinner-grey.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/data-tables/images/sort_asc.png delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/data-tables/images/sort_both.png delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/data-tables/images/sort_desc.png delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/data-tables/jquery.dataTables.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/data-tables/jquery.dataTables.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/fakeLoader/fakeLoader.css delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/fakeLoader/fakeLoader.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/css/font-awesome.css delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/css/font-awesome.min.css delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/FontAwesome.otf delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.eot delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.ttf delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.woff delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/bordered-pulled.less delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/core.less delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/fixed-width.less delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/font-awesome.less delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/icons.less delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/larger.less delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/list.less delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/mixins.less delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/path.less delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/rotated-flipped.less delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/spinning.less delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/stacked.less delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/variables.less delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_bordered-pulled.scss delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_core.scss delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_fixed-width.scss delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_icons.scss delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_larger.scss delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_list.scss delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_mixins.scss delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_path.scss delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_rotated-flipped.scss delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_spinning.scss delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_stacked.scss delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_variables.scss delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/font-awesome.scss delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/freewall/freewall.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-blockui/jquery.blockui.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-cokie/jquery.cokie.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/README.md delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/dist/additional-methods.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/dist/additional-methods.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/dist/jquery.validate.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/dist/jquery.validate.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/additional-methods.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/additional-methods.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/jquery.validate.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/jquery.validate.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ar.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ar.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_bg.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_bg.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ca.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ca.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_cs.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_cs.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_da.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_da.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_de.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_de.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_el.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_el.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_es.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_es.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_es_AR.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_es_AR.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_et.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_et.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_eu.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_eu.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_fa.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_fa.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_fi.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_fi.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_fr.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_fr.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_gl.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_gl.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_he.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_he.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_hr.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_hr.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_hu.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_hu.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_id.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_id.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_is.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_is.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_it.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_it.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ja.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ja.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ka.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ka.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_kk.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_kk.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ko.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ko.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_lt.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_lt.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_lv.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_lv.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_my.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_my.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_nl.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_nl.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_no.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_no.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_pl.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_pl.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_pt_BR.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_pt_BR.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_pt_PT.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_pt_PT.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ro.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ro.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ru.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ru.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_si.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_si.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_sk.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_sk.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_sl.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_sl.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_sr.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_sr.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_sr_lat.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_sr_lat.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_sv.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_sv.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_th.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_th.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_tj.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_tj.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_tr.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_tr.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_uk.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_uk.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_vi.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_vi.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_zh.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_zh.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_zh_TW.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_zh_TW.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/methods_de.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/methods_de.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/methods_es_CL.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/methods_es_CL.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/methods_fi.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/methods_fi.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/methods_nl.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/methods_nl.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/methods_pt.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/methods_pt.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery.i18n/jquery.i18n.properties-1.0.9.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery-1.10.2.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery-1.11.2.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery-1.11.2.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery-1.11.2.min.map delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery-1.4.4.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery-2.1.3.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery-2.1.3.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery-2.1.3.min.map delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery-migrate-1.2.1.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery-migrate-1.2.1.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery.reveal.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/select2/select2-custom.css delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/select2/select2.css delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/select2/select2.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/uniform/README.md delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/uniform/css/uniform.default.css delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/uniform/css/uniform.default.min.css delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/uniform/css/uniform.default.scss delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/uniform/images/bg-input-focus.png delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/uniform/images/bg-input.png delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/uniform/images/sprite.png delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/uniform/images/sprite_original.png delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/uniform/jquery.uniform.js delete mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/uniform/jquery.uniform.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/about.html delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/appRes/i18n/readme.txt delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/appRes/img/readme.txt delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/appRes/js/custom-const.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/appRes/js/custom.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/changepwd.html delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/animate.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/animate.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/changepwd-apk.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/changepwd.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/custom_default.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/login-apk.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/login.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/more-operation.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/ngict-component.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/plugins.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/plugins.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/print.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/print.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/style-custom.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/style-custom.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/style-ict-bootstrap.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/style-ict.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/style-responsive.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/style.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/black.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/black.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/black_ifrm.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/black_ifrm.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/blue.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/blue.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/blue_ifrm.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/blue_ifrm.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/brown.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/brown.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/brown_ifrm.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/brown_ifrm.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/grey.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/grey.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/grey_ifrm.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/grey_ifrm.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/light.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/light.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/light_ifrm.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/light_ifrm.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/purple.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/purple.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/purple_ifrm.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/purple_ifrm.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/zteblue.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/zteblue.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/zteblue_ifrm.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/zteblue_ifrm.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight2.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight2.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight2_ifrm.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight2_ifrm.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight3.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight3.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight3_ifrm.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight3_ifrm.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight4.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight4.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight4_ifrm.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight4_ifrm.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight_ifrm.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight_ifrm.css.gz delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/zte-style.css delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/default.html delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/i18n/web-framework-i18n-en-US.properties delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/i18n/web-framework-i18n-zh-CN.properties delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/i18n/web-framework-integration-i18n-en-US.properties delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/i18n/web-framework-integration-i18n-zh-CN.properties delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/i18n/web-portal-login-i18n-en-US.properties delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/i18n/web-portal-login-i18n-zh-CN.properties delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/i18n/web-portal-login-integration-i18n-en-US.properties delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/i18n/web-portal-login-integration-i18n-zh-CN.properties delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/about/about-bg-dark.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/about/about-bg-light.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/about/about-netnumen.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/accordion-plusminus.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ajax-loading.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ajax-modal-loading.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/arrow-down.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/avatar.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/bg-opacity.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/bg-white-lock.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/bg-white.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/checkbox-radio/checkbox-checked-disabled.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/checkbox-radio/checkbox-checked.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/checkbox-radio/checkbox-disabled.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/checkbox-radio/checkbox-hover.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/checkbox-radio/checkbox-init.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/checkbox-radio/radio-checked-disabled.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/checkbox-radio/radio-checked.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/checkbox-radio/radio-disabled.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/checkbox-radio/radio-hover.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/checkbox-radio/radio-init.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/chrome_icon.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/datatable-row-openclose.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/empty.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/firefox_icon.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/hor-menu-search-close-white.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/hor-menu-search-close.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/hor-menu-search.jpg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/hor-menu-search.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/icon-color-close.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/icon-color.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/icon-img-down.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/icon-img-up.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/input-spinner.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/integration/logo.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/integration/logo_white.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/integration/netnumenLogo.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/integration/zte_bg_1.jpg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/integration/zte_bg_2.jpg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/integration/zte_bg_3.jpg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/integration/zte_logo_16.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/integration/zte_logo_white.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/integration/ztelogo.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/loading-spinner-grey.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/loading.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/icon/1.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/icon/2.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/icon/3.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/icon/4.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/icon/5.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/icon/6.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/logo.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/pic/1.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/pic/2.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/pic/3.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/pic/4.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/pic/5.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/menu-toggler.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/overlay-icon.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/portlet-collapse-icon-white.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/portlet-collapse-icon.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/portlet-config-icon-white.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/portlet-config-icon.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/portlet-expand-icon-white.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/portlet-expand-icon.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/portlet-reload-icon-white.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/portlet-reload-icon.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/portlet-remove-icon-white.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/portlet-remove-icon.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/remove-icon-small.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/reset_password.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/NFV.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/NS.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/VDU.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/VIM.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/VNF.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/VNFC.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/VNFM.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/breakLink.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/common_dc.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/common_ncd.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/common_sc.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/host.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-Virtual network.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-bind.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-dns.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-ems.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-mediator.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-netnumen.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-ntp.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-ota.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-tomcat.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-trend.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-tsm.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-weblogic.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-cluster-hacmp.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-cluster-nec.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-cluster-ns.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-cluster-sg.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-cluster-vcs.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-cluster.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-database-mssql.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-database-oracle.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-database-sybase.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-database-sybaseiq.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-database.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-dellmd.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-emc.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-eternus.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-fujitsu.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-hds.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-hpaio.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-hpeva.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-hpmsa.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-ibm.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-ibmsm.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-macrosan.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-netapp.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-sun.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-zte.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-firewall-checkpoint.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-firewall-cisco.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-firewall-cisco2.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-firewall-h3c.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-firewall-juniper.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-firewall-neteye.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-firewall-zte.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-firewall-ztemf.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-firewall-zteutm.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-firewall.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-gather.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-group-dev.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-ibp-ibp2000.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-ibp.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-net.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-alteon.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-appdirector.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-atca-lb10.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-cisco-ucs.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-dcs.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-delta.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-dp.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-f5bigip.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-f5bigip2.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-gbe2c.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-hpblc.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-ibm-blade.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-imm.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-secfox.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-secsis.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-segw.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-vc.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-zteatca.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-zteips.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-ztepower.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-ztesgs.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-zxsdr-nt.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-router-cisco.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-router-juniper.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-router-zte.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-router.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-sdn-controller.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-sdn-host.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-sdn-switch.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-sdn-vnet.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-server-aix.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-server-hpux.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-server-klinux.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-server-redhat.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-server-solaris.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-server-suse.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-server-windows.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-server-zxve.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-server.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-storage-cisco-mds.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-storage-md3000.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-storage-netvault.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-storage-ops.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-storage-sanswitch-brocade.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-storage-sanswitch-hp.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-storage-sanswitch-zte.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-storage.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-switch-at.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-switch-cisco.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-switch-h3c.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-switch-juniper.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-switch-zte.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-switch.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-tapelib-hpmsl.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-tapelib-ibmts.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-tapelib-sunts.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/networkTree.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/new.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/popupmenufollower.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/resourceType.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/stop.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/tree-icon.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/uep-moc-root.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/uep-moc-uca-public.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/uep-topo-commongroup20x20.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/uep-topo-group20x20.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/uep-topo-root.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/uep-topo-undefinedgroup20x20.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/uep-topo-virtual20x20.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/uep-topo-wsf-disconnected8x8.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/usf-amf-try-activate.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/usf-amf-try-active-wait.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/search-icon-blue.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/search-icon-brown.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/search-icon-purple.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/search-icon-red.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/search-icon-white.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/search-icon.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/select-caret.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/sidebar-menu-arrow-right.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/sidebar-menu-arrow-rtl.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/sidebar-menu-arrow.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/sidebar-search-close-blue.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/sidebar-search-close-brown.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/sidebar-search-close-light.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/sidebar-search-close-purple.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/sidebar-search-close.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/sidebar-toggler-grey.jpg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/sidebar-toggler-light.jpg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/source/logo.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/source/logo_white.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/source/netnumenLogo.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/source/zte_bg_1.jpg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/source/zte_bg_2.jpg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/source/zte_bg_3.jpg delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/source/zte_logo_ white.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/source/zte_logo_16.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/source/zte_logo_white.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/source/ztelogo.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/syncfusion-icons-white.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/user.png delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/index.html delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/Main2moreMenu.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/core/ZteFrameWork.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/core/ZteFrameWork.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/core/const.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/core/hk.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/core/pym.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/fm_light.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/international/loadi18n-login.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/international/loadi18n.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/international/loadi18nApp_universal.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/json2.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/login.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/mainpage/about.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/mainpage/ict.main.page.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/moreOperation.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/security/aes.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/security/changepwd.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/security/framework-util.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/security/security.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/tools.js delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/json/main-page.json delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/login.html delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/main-page.html delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/menus/main_Fmegabar.html delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/menus/main_Fsiderbar.html delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/menus/main_siderbar.html delete mode 100644 uiframe-iui/src/main/resources/webroot/framework/menus/readme.txt delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/animate/animate.min.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/avalon/avalon.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/avalon/avalon.modern.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/daterangepicker-bs3.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/daterangepicker.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/moment.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/moment.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/css/fileinput.min.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/img/loading-sm.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/img/loading.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput_locale_LANG.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput_locale_zh.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-growl/bootstrap-growl.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/css/bootstrap-modal-bs3patch.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/css/bootstrap-modal.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/img/ajax-loader.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/js/bootstrap-modal.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/js/bootstrap-modalmanager.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-select/bootstrap-select.min.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-select/bootstrap-select.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-validation/jqBootstrapValidation.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-wizard/jquery.bootstrap.wizard.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/cometd/cometd.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/cometd/jquery.cometd.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/DT_bootstrap.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/DT_bootstrap.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/DataTableICT.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/DataTableSmartClient.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/DataTableSmartClientApp.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/app-test-i18n-datatable-zh-CN.json delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/app-universal-i18n-datatable-en-US.json delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/app-universal-i18n-datatable-zh-CN.json delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/dataTable.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/images/loading-spinner-grey.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/images/sort_asc.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/images/sort_both.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/images/sort_desc.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/jquery.dataTables.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/jquery.dataTables.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/style-datatable.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/delete.me delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/echarts/echarts-all.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/CHANGELOG.md delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/README.md delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/bower.json delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/Thumbs.db delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/banner.jpg delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/custom.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/custom.styl delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/icheck.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/ie/arrow-bottom.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/ie/arrow-top.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/ie/header-line.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/ie/icon-fork.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/ie/icon-github.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/ie/icon-lab.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/ie/icon-options.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/ie/icon-star.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/montserrat-bold.eot delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/montserrat-bold.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/montserrat-bold.ttf delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/montserrat-bold.woff delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/montserrat-regular.eot delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/montserrat-regular.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/montserrat-regular.ttf delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/montserrat-regular.woff delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/normalize.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/index.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/js/custom.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/js/custom.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/js/jquery.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/js/zepto.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/icheck.jquery.json delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/icheck.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/icheck.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/all.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/_all.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/aero.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/aero.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/aero@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/blue.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/blue.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/blue@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/flat.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/flat.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/flat@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/green.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/green.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/green@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/grey.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/grey.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/grey@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/orange.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/orange.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/orange@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/pink.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/pink.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/pink@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/purple.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/purple.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/purple@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/red.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/red.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/red@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/yellow.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/yellow.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/yellow@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/futurico/futurico.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/futurico/futurico.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/futurico/futurico@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/Thumbs.db delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/_all.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/aero.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/blue.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/green.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/grey.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/line.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/line.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/line@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/orange.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/pink.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/purple.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/red.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/yellow.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/_all.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/aero.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/aero.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/aero@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/blue.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/blue.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/blue@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/green.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/green.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/green@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/grey.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/grey.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/grey@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/minimal.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/minimal.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/minimal@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/orange.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/orange.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/orange@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/pink.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/pink.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/pink@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/purple.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/purple.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/purple@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/red.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/red.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/red@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/yellow.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/yellow.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/yellow@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/polaris/polaris.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/polaris/polaris.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/polaris/polaris@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/Thumbs.db delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/_all.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/aero.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/aero.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/aero@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/blue.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/blue.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/blue@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/green.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/green.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/green@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/grey.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/grey.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/grey@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/orange.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/orange.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/orange@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/pink.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/pink.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/pink@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/purple.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/purple.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/purple@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/red.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/red.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/red@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/square.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/square.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/square@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/yellow.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/yellow.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/yellow@2x.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/DashboardConfig-jq.json delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/DashboardICT-jq.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/DashboardICT.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/css/c3.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/css/c3.min.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/css/components.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/css/facebox.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/css/ict-chart-dashboard.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/css/transition.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/js/c3-angular.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/js/c3-angular.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/js/c3-angular.min.js.map delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/js/c3.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/js/c3.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/js/d3.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/js/facebox.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/js/portlet-draggable-jq.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/demo/c3Chart.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/demo/demo-barchart-c3.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/demo/demo-linechart-c3.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/demo/ict-barchart-c3.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/demo/ict-linechart-c3.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/demo/index3.html delete mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/CPU\347\273\237\350\256\241.png" delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/Thumbs.db delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/closelabel.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/delete.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/loading.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/open.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/remove.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/remove_red.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/shrink.png delete mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/\345\221\212\350\255\246\347\273\237\350\256\241.png" delete mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/\346\200\247\350\203\275\347\273\237\350\256\241A.png" delete mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/\346\200\247\350\203\275\347\273\237\350\256\241B.png" delete mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/\346\200\247\350\203\275\347\273\237\350\256\241C.png" delete mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/\346\227\245\345\277\227\347\273\237\350\256\241.png" delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-chart/demo/demo-barchart-c3.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-chart/demo/demo-linechart-c3.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-chart/ict-barchart-c3.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-chart/ict-linechart-c3.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/DashboardConfig-jq.json delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/DashboardConfig-jq.json.sdn delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/DashboardConfig.json delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/DashboardICT.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/css/c3.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/css/c3.min.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/css/components.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/css/facebox.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/css/ict-chart-dashboard.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/css/transition.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/js/angular.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/js/angular.min.js.map delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/js/c3-angular.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/js/c3-angular.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/js/c3-angular.min.js.map delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/js/c3.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/js/c3.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/js/d3.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/js/facebox.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/js/portlet-draggable-jq.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/demo/c3Chart.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/demo/demo-barchart-c3.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/demo/demo-linechart-c3.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/demo/ict-barchart-c3.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/demo/ict-linechart-c3.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/demo/index3.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/ict.dashboard.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/ict.dashboard.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/ict.dashboard.js.bak delete mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/CPU\347\273\237\350\256\241.png" delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/Thumbs.db delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/alarm.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/bar.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/closelabel.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/cpu.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/delete.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/gauge.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/line.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/lineBar.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/loading.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/map.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/open.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/pie.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/remove.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/remove_red.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/shrink.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/stacked.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/zoom.png delete mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/\345\221\212\350\255\246\347\273\237\350\256\241.png" delete mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/\346\200\247\350\203\275\347\273\237\350\256\241A.png" delete mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/\346\200\247\350\203\275\347\273\237\350\256\241B.png" delete mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/\346\200\247\350\203\275\347\273\237\350\256\241C.png" delete mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/\346\227\245\345\277\227\347\273\237\350\256\241.png" delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/index4.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/js/avalon.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/js/d3.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/js/facebox.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/js/freewall.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-serverpagetable/css/serverPageTable.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-serverpagetable/images/details_close.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-serverpagetable/images/details_open.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-serverpagetable/readme.txt delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-serverpagetable/serverPageTable.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-serverpagetable/serverPageTable_demo.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-serverpagetable/serverpagetable.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/bootstrap/css/bootstrap-dt.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/bootstrap/css/bootstrap.min.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/bootstrap/js/bootstrap.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/bootstrap/js/bootstrap.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/bootstrap/js/bootstrap2-typeahead.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/css/jquery-ui.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/css/multi-handle-slider.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/index.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/external/jquery/jquery.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/Thumbs.db delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-bg_diagonals-thick_18_b81900_40x40.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-bg_diagonals-thick_20_666666_40x40.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-bg_flat_10_000000_40x100.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-bg_glass_100_f6f6f6_1x400.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-bg_glass_100_fdf5ce_1x400.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-bg_glass_65_ffffff_1x400.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-bg_gloss-wave_35_f6a828_500x100.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-bg_highlight-soft_100_eeeeee_1x100.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-bg_highlight-soft_75_ffe45c_1x100.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-icons_222222_256x240.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-icons_228ef1_256x240.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-icons_ef8c08_256x240.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-icons_ffd27a_256x240.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-icons_ffffff_256x240.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/index.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/jquery-ui.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/jquery-ui.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/jquery-ui.min.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/jquery-ui.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/jquery-ui.structure.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/jquery-ui.structure.min.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/jquery-ui.theme.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/jquery-ui.theme.min.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/js/avalon.modern.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/js/jquery-1.10.2.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/js/multi-handle-slider.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-sunburst/demo.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-sunburst/skill.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-sunburst/skillsData.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-sunburst/sunburst.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap-wizard/jquery.bootstrap.wizard.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap/css/bootstrap-dt.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap/css/bootstrap.min.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap/fonts/glyphicons-halflings-regular.eot delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap/fonts/glyphicons-halflings-regular.svg delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap/fonts/glyphicons-halflings-regular.ttf delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap/fonts/glyphicons-halflings-regular.woff delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap/fonts/glyphicons-halflings-regular.woff2 delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap/js/bootstrap.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap/js/bootstrap.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap/js/bootstrap2-typeahead.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/ict-wizard.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/ict_wizard_view.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/jquery/jquery-1.10.2.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/jquery/jquery-1.11.2.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/jquery/jquery-1.11.2.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/jquery/jquery-1.11.2.min.map delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/jquery/jquery-2.1.3.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/jquery/jquery-2.1.3.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/jquery/jquery-2.1.3.min.map delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/jquery/jquery-migrate-1.2.1.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/jquery/jquery-migrate-1.2.1.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/ngict-component.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/plugins.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/jQuery-File-Upload/css/jquery.fileupload.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/jQuery-File-Upload/img/loading.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/jQuery-File-Upload/img/progressbar.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/jQuery-File-Upload/js/jquery.fileupload.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/jQuery-File-Upload/js/jquery.iframe-transport.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/jQuery-File-Upload/js/vendor/jquery.ui.widget.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ystep/css/ystep.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ystep/ystep.js delete mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/zTree/QUI \346\241\206\346\236\266\344\273\213\347\273\215.txt" delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/README.md delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/API_cn.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/API_en.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/api.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/common.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/common_ie6.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/apiMenu.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/apiMenu.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/background.jpg delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/chinese.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/close.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/contact-bg.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/english.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/header-bg.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/lightbulb.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/overlay_arrow.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/overlay_arrow.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/overlay_bg.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/overlay_close_IE6.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/zTreeStandard.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/zTreeStandard.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/jquery-1.6.2.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/jquery.ztree.core-3.5.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/zTreeStyleForApi.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/fn.zTree._z.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/fn.zTree.destroy.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/fn.zTree.getZTreeObj.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/fn.zTree.init.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.async.autoParam.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.async.contentType.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.async.dataFilter.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.async.dataType.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.async.enable.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.async.otherParam.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.async.type.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.async.url.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeAsync.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeCheck.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeClick.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeCollapse.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeDblClick.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeDrag.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeDragOpen.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeDrop.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeEditName.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeExpand.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeMouseDown.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeMouseUp.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeRemove.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeRename.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeRightClick.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onAsyncError.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onAsyncSuccess.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onCheck.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onClick.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onCollapse.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onDblClick.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onDrag.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onDragMove.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onDrop.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onExpand.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onMouseDown.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onMouseUp.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onNodeCreated.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onRemove.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onRename.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onRightClick.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.check.autoCheckTrigger.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.check.chkDisabledInherit.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.check.chkStyle.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.check.chkboxType.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.check.enable.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.check.nocheckInherit.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.check.radioType.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.keep.leaf.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.keep.parent.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.key.checked.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.key.children.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.key.name.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.key.title.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.key.url.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.simpleData.enable.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.simpleData.idKey.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.simpleData.pIdKey.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.simpleData.rootPId.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.autoExpandTrigger.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.autoOpenTime.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.borderMax.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.borderMin.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.inner.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.isCopy.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.isMove.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.maxShowNodeNum.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.minMoveSize.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.next.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.prev.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.editNameSelectAll.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.enable.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.removeTitle.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.renameTitle.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.showRemoveBtn.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.showRenameBtn.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.treeId.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.treeObj.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.addDiyDom.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.addHoverDom.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.autoCancelSelected.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.dblClickExpand.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.expandSpeed.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.fontCss.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.nameIsHTML.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.removeHoverDom.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.selectedMulti.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.showIcon.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.showLine.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.showTitle.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.txtSelectedEnable.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.check_Child_State.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.check_Focus.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.checked.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.checkedOld.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.children.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.chkDisabled.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.click.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.diy.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.editNameFlag.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.getCheckStatus.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.getNextNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.getParentNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.getPreNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.halfCheck.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.icon.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.iconClose.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.iconOpen.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.iconSkin.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.isAjaxing.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.isFirstNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.isHidden.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.isHover.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.isLastNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.isParent.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.level.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.name.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.nocheck.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.open.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.parentTId.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.tId.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.target.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.url.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.zAsync.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.addNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.cancelEditName.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.cancelSelectedNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.checkAllNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.checkNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.copyNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.destroy.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.editName.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.expandAll.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.expandNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.getChangeCheckedNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.getCheckedNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.getNodeByParam.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.getNodeByTId.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.getNodeIndex.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.getNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.getNodesByFilter.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.getNodesByParam.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.getNodesByParamFuzzy.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.getSelectedNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.hideNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.hideNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.moveNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.reAsyncChildNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.refresh.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.removeChildNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.removeNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.selectNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.setChkDisabled.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.setEditable.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.setting.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.showNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.showNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.transformToArray.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.transformTozTreeNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.updateNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/fn.zTree._z.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/fn.zTree.destroy.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/fn.zTree.getZTreeObj.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/fn.zTree.init.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.async.autoParam.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.async.contentType.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.async.dataFilter.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.async.dataType.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.async.enable.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.async.otherParam.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.async.type.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.async.url.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeAsync.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeCheck.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeClick.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeCollapse.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeDblClick.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeDrag.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeDragOpen.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeDrop.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeEditName.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeExpand.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeMouseDown.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeMouseUp.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeRemove.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeRename.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeRightClick.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onAsyncError.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onAsyncSuccess.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onCheck.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onClick.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onCollapse.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onDblClick.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onDrag.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onDragMove.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onDrop.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onExpand.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onMouseDown.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onMouseUp.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onNodeCreated.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onRemove.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onRename.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onRightClick.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.check.autoCheckTrigger.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.check.chkDisabledInherit.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.check.chkStyle.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.check.chkboxType.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.check.enable.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.check.nocheckInherit.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.check.radioType.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.keep.leaf.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.keep.parent.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.key.checked.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.key.children.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.key.name.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.key.title.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.key.url.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.simpleData.enable.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.simpleData.idKey.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.simpleData.pIdKey.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.simpleData.rootPId.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.autoExpandTrigger.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.autoOpenTime.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.borderMax.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.borderMin.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.inner.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.isCopy.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.isMove.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.maxShowNodeNum.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.minMoveSize.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.next.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.prev.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.editNameSelectAll.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.enable.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.removeTitle.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.renameTitle.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.showRemoveBtn.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.showRenameBtn.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.treeId.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.treeObj.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.addDiyDom.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.addHoverDom.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.autoCancelSelected.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.dblClickExpand.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.expandSpeed.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.fontCss.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.nameIsHTML.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.removeHoverDom.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.selectedMulti.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.showIcon.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.showLine.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.showTitle.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.txtSelectedEnable.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.check_Child_State.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.check_Focus.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.checked.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.checkedOld.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.children.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.chkDisabled.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.click.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.diy.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.editNameFlag.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.getCheckStatus.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.getNextNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.getParentNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.getPreNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.halfCheck.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.icon.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.iconClose.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.iconOpen.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.iconSkin.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.isAjaxing.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.isFirstNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.isHidden.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.isHover.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.isLastNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.isParent.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.level.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.name.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.nocheck.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.open.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.parentTId.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.tId.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.target.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.url.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.zAsync.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.addNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.cancelEditName.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.cancelSelectedNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.checkAllNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.checkNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.copyNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.destroy.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.editName.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.expandAll.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.expandNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.getChangeCheckedNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.getCheckedNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.getNodeByParam.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.getNodeByTId.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.getNodeIndex.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.getNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.getNodesByFilter.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.getNodesByParam.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.getNodesByParamFuzzy.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.getSelectedNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.hideNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.hideNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.moveNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.reAsyncChildNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.refresh.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.removeChildNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.removeNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.selectNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.setChkDisabled.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.setEditable.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.setting.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.showNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.showNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.transformToArray.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.transformTozTreeNodes.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.updateNode.html delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/demo.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/ReadMe.txt delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/Thumbs.db delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/1_close.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/1_open.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/2.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/3.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/4.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/5.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/6.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/7.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/8.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/9.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/Thumbs.db delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/line_conn.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/loading.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/zTreeStandard.gif delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/zTreeStandard.gifbak delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/zTreeStandard.png delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/zTreeStandard.pngbak delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/zTreeStandard.psd delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/zTreeStyle.css delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/js/jquery.ztree.all.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/js/jquery.ztree.all.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/js/jquery.ztree.core.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/js/jquery.ztree.core.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/js/jquery.ztree.excheck.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/js/jquery.ztree.excheck.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/js/jquery.ztree.exedit.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/js/jquery.ztree.exedit.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/js/jquery.ztree.exhide.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/js/jquery.ztree.exhide.min.js delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/log v3.x.txt delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/readme.txt delete mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/zTree.v3.jquery.json delete mode 100644 umc-iui/pom.xml delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/createtestdata.html delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/css/itm.css delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/css/vnf.css delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/i18n/ngict-umc-monitor-i18n-en-US.properties delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/i18n/ngict-umc-monitor-i18n-zh-CN.properties delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/images/aos_view-fm.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/images/arrow.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/images/details_close.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/images/details_open1.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/images/down.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/images/filter.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/images/up.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/index.html delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/js/Constants.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/js/avalon.modern.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/js/commonUtil.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/js/d3.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/js/echarts-all.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/js/jquery-1.10.2.min.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/js/mockdataController.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/js/monitorHeadChart.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/js/monitors.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/js/vnfController.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-drill/monitorns.html delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/css/alarmsQuery.css delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/css/delete.me delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/html/fm_currentAlarm_view.html delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/i18n/delete.me delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/i18n/ngict-curalarms-iui-i18n-en-US.properties delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/i18n/ngict-curalarms-iui-i18n-zh-CN.properties delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/images/Thumbs.db delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/images/aos_view-fm.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/images/arrow.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/images/details_close.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/images/details_open.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/images/down.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/images/filter.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/images/statistics.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/images/up.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/js/CommonUtil.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/js/alarmConds.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/js/alarmsServerPageTable.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/js/alarmsUtil.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/js/avalon.modern.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/js/curAlarmsController.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-fm/js/delete.me delete mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/css/dac.css delete mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/css/dataTables.bootstrap.css delete mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/css/monitorSetting.css delete mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/dacList.html delete mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/i18n/loadi18nApp_ngict-umc-monitor.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/i18n/umc-monitor-iui-i18n-en-US.properties delete mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/i18n/umc-monitor-iui-i18n-zh-CN.properties delete mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/images/throbber.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/js/dacController.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/js/monitorSettingController.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/js/monitorSettingUtil.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/monitorSetting.html delete mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/monitorSettingList.html delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/css/delete.me delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/css/meataskQuery.css delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/css/performanceChart.css delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/css/pmQueryBox.css delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/html/index/indexManage.html delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/html/index/indexView.html delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/html/meatask/meataskQueryRule.html delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/html/meatask/meataskQueryView.html delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/html/meataskQueryView.html delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/i18n/delete.me delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/i18n/ngict-pm-iui-i18n-en-US.properties delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/i18n/ngict-pm-iui-i18n-zh-CN.properties delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/aos_view-fm.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/arrow.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/chart.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/delete.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/details_close.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/details_open.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/down.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/filter.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/statistics.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/table.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/up.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/avalon.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/commonUtil.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/dataRangeUtil.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/delete.me delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/i18n/loadi18n.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/index/indexController.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/index/indexManage.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/meatask/echarts.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/meatask/meataskQueryController.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/meatask/performanceChart.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/pmUtil.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/counters.json delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/index.json delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/indexes.json delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/meatask/meatasks_content.json delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/meatask/moType.json delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/meatask/moType1.json delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/meatask/resourceType.json delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/meatask/resources.json delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/meatask/resources1.json delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/meatask/resources2.json delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/meatasks.json delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/meatasks_content.json delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/resourceType.json delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/test.json delete mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/thresholdList.json delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/css/main.css delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/NS.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/NS1.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/VDU.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/VDU1.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/VNF.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/VNF1.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/VNFC.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/VNFC1 .png delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/Bridge.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/Computer.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/Hub.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/InternetServer.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/MiniComputer.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/Multiplexer.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/Router.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/Server.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/Switch.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/TerminalServer.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/vim.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/Bridge.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/BridgeMinus.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/BridgePlus.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/Computer.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/ComputerMinusbak.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/ComputerPlusbak.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/Computerbak.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/Hub.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/HubPlus.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/InternetServer.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/MiniComputer.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/Multiplexer.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/Router.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/Server.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/Switch.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/TerminalServer.gif delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/hostMinus.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/hostPlus.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/vdu.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/vimMinus.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/vimMinusbak.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/vimPlus.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/vimPlusbak.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/vim.png delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/js/physicalTopology.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/js/serviceTopology.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/js/topoDialog.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/js/topoTool.js delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/physicalTopology.html delete mode 100644 umc-iui/src/main/resources/webroot/umc-topo/serviceTopology.html diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 13e92efa..00000000 --- a/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -*.java text eol=lf -*.xml text eol=lf diff --git a/.gitreview b/.gitreview deleted file mode 100644 index 5631d3c3..00000000 --- a/.gitreview +++ /dev/null @@ -1,4 +0,0 @@ -[gerrit] -host=gerrit.open-o.org -port=29418 -project=gso-gui.git diff --git a/nsoc-iui/pom.xml b/nsoc-iui/pom.xml deleted file mode 100644 index a34ec340..00000000 --- a/nsoc-iui/pom.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - 4.0.0 - - org.openo.orchestrator.openoiui - openoiui-parent - 0.0.1-SNAPSHOT - - org.openo.orchestrator.openoiui - nsoc-iui - jar - openo/openoiui/nsoc-iui - Open-O nsoc-iui - diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/csarPackage.html b/nsoc-iui/src/main/resources/webroot/nsoc/csarPackage.html deleted file mode 100644 index dff2a80a..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/csarPackage.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - - - - - - - - - - - - -
-
-
-
-
-
- -
-
-
-
-
-
- - - - - - - - -
-
-
-
-
-
-
-
- -
-
- -
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/datatable-sort.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/datatable-sort.css deleted file mode 100644 index 18da5d3b..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/css/datatable-sort.css +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -table.table thead .sorting, -table.table thead .sorting_asc, -table.table thead .sorting_desc, -table.table thead .sorting_asc_disabled, -table.table thead .sorting_desc_disabled { - cursor: pointer; - *cursor: hand; -} - -table.table thead .sorting { background: url('../images/sort_both.png') no-repeat center right; } -table.table thead .sorting_asc { background: url('../images/sort_asc.png') no-repeat center right; } -table.table thead .sorting_desc { background: url('../images/sort_desc.png') no-repeat center right; } - -table.table thead .sorting_asc_disabled { background: url('../images/sort_asc_disabled.png') no-repeat center right; } -table.table thead .sorting_desc_disabled { background: url('../images/sort_desc_disabled.png') no-repeat center right; } \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/fileupload.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/fileupload.css deleted file mode 100644 index 220b5172..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/css/fileupload.css +++ /dev/null @@ -1,81 +0,0 @@ -/** - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -@charset "UTF-8"; - -.file-caption { - display: inline-block; - overflow: hidden; - text-overflow: ellipsis; -} - -.file-caption .glyphicon { - display: inline-block; - min-width: 18px; - margin-top: 2px; -} - -.file-caption-name { - display: inline-block; - overflow: hidden; - max-height: 20px; - padding-right: 10px; - word-break: break-all; -} - -.file-caption-ellipsis { - position: absolute; - right: 10px; - margin-top: -6px; - font-size: 1.2em; - display: none; - font-weight: bold; - cursor: default; -} - -.file-drop-zone{ - border:1px dashed #aaa; - border-radius:4px; - height:100%; - text-align:center; - vertical-align:middle; - margin:12px 15px 12px 12px; - padding:5px -} -.file-drop-zone-title{ - color:#aaa; - font-size:20px; - padding:20px 10px -} -.fileupload-btn { - padding-bottom: 10px; -} - -.fileupload-input { - position: relative; - display: table; -} - -.file-preview { - border-radius:5px; - border:1px solid #ddd; - padding:5px; - width:100%; - margin-bottom:5px -} - -.upload { - width: 50%; -} \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/hostMirror.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/hostMirror.css deleted file mode 100644 index b637e66d..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/css/hostMirror.css +++ /dev/null @@ -1,447 +0,0 @@ -/** - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -body { - font-family: microsoft yahei !important; -} - -/* blue pill (inspired by iTunes) -*******************************************************************************/ -.redFont{ - color:red; -} -.blue { - - background-color: #5b9bd1; - border-radius: 20px; - color: #fff; - font-weight: bold; - padding: 8px 0; - text-align: center; - width: 100px; -} - -.blue:hover { - background-color: #e8f3fd; - color: #5b9bd1; -} - -.blue.selected { - border: 0; - background-color: #5b9bd1; - color: #fff; -} - -.blue.selected:hover { - border: 0; - background-color: #5b9bd1; - color: #fff; -} - -p { - color: #444; - font-size: 14px; - font-weight: normal; - line-height: 21px; - margin: 0 0 12px 0; -} - -p.credit { - border-top: 1px solid #ccc; - font-size: 14px; - line-height: 140%; - margin: 36px 0 12px 0; - padding: 8px 0 0 0; - text-align: center; -} - -ul.column { - float: left; - list-style: none; - width: 675px; -} - -ul.column li { - background: #eee; - -webkit-border-radius: 5px; - border-radius: 5px; - -webkit-box-shadow: inset 0 1px 1px 0 #c7c7c7; - box-shadow: inset 0 1px 1px 0 #c7c7c7; - float: left; - margin: 10px 0 0 10px; - display: block; - height: 150px; - text-align: center; - width: 215px; -} - -/* Clear Floated Elements -------------------------------------------------------------------------------*/ -.column:after,.button-collection:after,.clearfix:after,div.project-info:after - { - clear: both; - content: ' '; - display: block; - font-size: 0; - line-height: 0; - visibility: hidden; - width: 0; - height: 0; -} - -.container-fluid { - background-color:white !important; - min-height:500px; -} - -.nav-tabs { - border: 0; -} - -.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus - { - border: 0; - border-top: 3px solid #F3565D; -} - -.nav-tabs>li>a { - border-radius: 0; -} - -.nav-tabs>li>a:hover { - background-color: #f1f3fa; - border: 1Px solid #f1f3fa; -} - -.c3 { - margin-top: 120px; -} - -.skills-chart-breadcrumb { - -} - -.blue:selected { - border: 0; - background-color: #5b9bd1; -} - -.btn { - /* border-width: 0; */ - /* padding: 7px 14px; */ - /* font-size: 14px; */ - /* outline: none !important; */ - /* background-image: none !important; */ - /* filter: none; */ - /* -webkit-box-shadow: none; */ - -moz-box-shadow: none; - /* box-shadow: none; */ - /* text-shadow: none; */ -} - -select { - border-width: 1px; - padding: 4px 1px; - border-radius: 4px; -} - -.input-sm { - padding: 4px 10px; -} - -.btn-block { - display: block; - width: 100%; - padding-left: 0; - padding-right: 0; -} - -/* Bootstrap buttons */ -.btn-default { - color: #5b9bd1; - background-color: #fff; - border-color: #ccc; -} - -.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active - { - color: #333; - background-color: #ededed; - border-color: #b3b3b3; -} - -.open .btn-default.dropdown-toggle { - color: #333; - background-color: #ededed; - border-color: #b3b3b3; -} - -.btn-default:active,.btn-default.active { - background-image: none; - background-color: #e0e0e0; - font-weight: bold; -} - -.btn-default:active:hover,.btn-default.active:hover { - background-color: #e6e6e6; -} - -.open .btn-default.dropdown-toggle { - background-image: none; -} - -.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active - { - background-color: #fff; - border-color: #ccc; -} - -.btn-default .badge { - color: #fff; - background-color: #333; -} - -.btn-default>i { - color: #aaa; -} - -.btn-default>i[class^="icon-"],.btn-default>i[class*="icon-"] { - color: #8c8c8c; -} - -div[data-name="tab_zone"] div { - background-color: #f1f3fa; - padding: 0px; -} - -div[data-name="cond_zone"] div { - background-color: #fff; - margin-top: 15px; - margin-bottom: 15px; -} - -div[data-name="res-conds-zone"] { - display: inline; -} - -div[data-name="res-conds-zone"] select,div[data-name="res-conds-zone"] span - { - /**height:33px;*/ - margin-left: 15px; - color: #5b9bd1; - border-color: #ccc; - font-weight: bold; -} - -.input{ - width:250px; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; -} - -div.separator { - margin: 20px; -} - -div.separator div { - text-align: center; - line-height: 0; -} - -div.separator-line { - height: 1px !important; - width: 100%; - background: #ddd; - overflow: hidden; -} - -.dropdown-toggle { - color: #5b9bd1; -} - -.calendar-date { - color: #5b9bd1; -} - -.range_inputs { - color: #5b9bd1; -} - -.btn.dropdown-toggle,.btn-group .btn.dropdown-toggle,.btn:hover,.btn:disabled,.btn[disabled],.btn:focus,.btn:active,.btn.active - { - outline: none !important; - background-image: none !important; - filter: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - text-shadow: none; -} - -#skills-chart-breadcrumb { - margin-bottom: 10px -} - -/*增加daterangepicker的css*/ -input[name="daterange"] { - width: 220px; - line-height: 0; - height: 31px; - vertical-align: top; - margin-top: 2px; -} - -.daterangepicker .ranges { - width: 205px; -} - -.daterangepicker .ranges input { - width: 95px !important; -} - -td.details-control { - background: url('../images/details_open.png') no-repeat center center; - cursor: pointer; -} - -tr.shown td.details-control { - background: url('../images/details_close.png') no-repeat center center; -} - -.details table td { - word-wrap: break-word; - word-break: normal; - border-top: 1px solid #dddddd; -} - -.details table tr:first-child td { - border-top: none; -} - -.details table { - table-layout: fixed; - width: 100%; -} - -td.title { - width: 10%; -} - -table.dataTable tbody th,table.dataTable tbody td { - padding: 8px 10px; -} - -div.dataTables_length,div.dataTables_info { - display: inline; -} - -div.dataTables_paginate { - display: inline; - float: right; -} - -div.pagination-panel { - margin-right: 10px; -} - -input.pagination-panel-input { - width: 50px; -} - -.daterangepicker .daterangepicker_start_input label,.daterangepicker .daterangepicker_end_input label - { - color: #5b9bd1; -} - -.daterangepicker .ranges .input-mini { - color: #5b9bd1; -} - -.cancelBtn { - padding: 5px 10px 5px 10px; -} - -.btn:focus,.btn:active:focus,.btn.active:focus { - outline: 0; -} - -#ict_host_table_div { - margin-top: 15px; -} - -#ict_host_table_div label { - font-weight: 100; -}s - -#ict_host_table_div table { - width: 100% !important; -} - -.upload { - width:60%; -} -.myPreview { - height: 100px; -} - -.uploadBtn { - margin-top:10px; -} - -.input-group .form-control { - height: 34px !important; -} - -.input-group .btn { - font-size: 14px !important; -} - -.form-horizontal .btn-center { - text-align: center; - margin-bottom: 15px; -} - -.blueactive { - color: #ffffff !important; - background-color: #5b9bd1; -} - -/* .process-modal { - position:fixed; - top:0; - right:0; - bottom:0; - left:0; - z-index:1000; -} -.process-content { - width: 200px; - margin: 200px auto; - padding:15px; - border: 1px solid #ddd; - background-color: #eee; - text-align:center; -} */ \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/package.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/package.css deleted file mode 100644 index e6be6b36..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/css/package.css +++ /dev/null @@ -1,415 +0,0 @@ -/** - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -body { - font-family: microsoft yahei !important; -} - -/* blue pill (inspired by iTunes) -*******************************************************************************/ -.redFont{ - color:red; -} -.blue { - - background-color: #5b9bd1; - border-radius: 20px; - color: #fff; - font-weight: bold; - padding: 8px 0; - text-align: center; - width: 100px; -} - -.blue:hover { - background-color: #e8f3fd; - color: #5b9bd1; -} - -.blue.selected { - border: 0; - background-color: #5b9bd1; - color: #fff; -} - -.blue.selected:hover { - border: 0; - background-color: #5b9bd1; - color: #fff; -} - -p { - color: #444; - font-size: 14px; - font-weight: normal; - line-height: 21px; - margin: 0 0 12px 0; -} - -p.credit { - border-top: 1px solid #ccc; - font-size: 14px; - line-height: 140%; - margin: 36px 0 12px 0; - padding: 8px 0 0 0; - text-align: center; -} - -ul.column { - float: left; - list-style: none; - width: 675px; -} - -ul.column li { - background: #eee; - -webkit-border-radius: 5px; - border-radius: 5px; - -webkit-box-shadow: inset 0 1px 1px 0 #c7c7c7; - box-shadow: inset 0 1px 1px 0 #c7c7c7; - float: left; - margin: 10px 0 0 10px; - display: block; - height: 150px; - text-align: center; - width: 215px; -} - -/* Clear Floated Elements -------------------------------------------------------------------------------*/ -.column:after,.button-collection:after,.clearfix:after,div.project-info:after - { - clear: both; - content: ' '; - display: block; - font-size: 0; - line-height: 0; - visibility: hidden; - width: 0; - height: 0; -} - -.container-fluid { - background-color:white !important; - min-height:500px; -} - -.nav-tabs { - border: 0; -} - -.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus - { - border: 0; - border-top: 3px solid #F3565D; -} - -.nav-tabs>li>a { - border-radius: 0; -} - -.nav-tabs>li>a:hover { - background-color: #f1f3fa; - border: 1Px solid #f1f3fa; -} - -.c3 { - margin-top: 120px; -} - -.skills-chart-breadcrumb { - -} - -.blue:selected { - border: 0; - background-color: #5b9bd1; -} - -select { - border-width: 1px; - padding: 4px 1px; - border-radius: 4px; -} - -.input-sm { - padding: 4px 10px; -} - -.btn-block { - display: block; - width: 100%; - padding-left: 0; - padding-right: 0; -} - -/* Bootstrap buttons */ -.btn-default { - color: #5b9bd1; - background-color: #fff; - border-color: #ccc; -} - -.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active - { - color: #333; - background-color: #ededed; - border-color: #b3b3b3; -} - -.open .btn-default.dropdown-toggle { - color: #333; - background-color: #ededed; - border-color: #b3b3b3; -} - -.btn-default:active,.btn-default.active { - background-image: none; - background-color: #e0e0e0; - font-weight: bold; -} - -.btn-default:active:hover,.btn-default.active:hover { - background-color: #e6e6e6; -} - -.open .btn-default.dropdown-toggle { - background-image: none; -} - -.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active - { - background-color: #fff; - border-color: #ccc; -} - -.btn-default .badge { - color: #fff; - background-color: #333; -} - -.btn-default>i { - color: #aaa; -} - -.btn-default>i[class^="icon-"],.btn-default>i[class*="icon-"] { - color: #8c8c8c; -} - -div[data-name="tab_zone"] div { - background-color: #f1f3fa; - padding: 0px; -} - -div[data-name="cond_zone"] div { - background-color: #fff; - margin-top: 15px; - margin-bottom: 15px; -} - -div[data-name="res-conds-zone"] { - display: inline; -} - -div[data-name="res-conds-zone"] select,div[data-name="res-conds-zone"] span - { - /**height:33px;*/ - margin-left: 15px; - color: #5b9bd1; - border-color: #ccc; - font-weight: bold; -} - -.input{ - width:250px; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; -} - -div.separator { - margin: 20px; -} - -div.separator div { - text-align: center; - line-height: 0; -} - -div.separator-line { - height: 1px !important; - width: 100%; - background: #ddd; - overflow: hidden; -} - -.dropdown-toggle { - color: #5b9bd1; -} - -.calendar-date { - color: #5b9bd1; -} - -.range_inputs { - color: #5b9bd1; -} - -.btn.dropdown-toggle,.btn-group .btn.dropdown-toggle,.btn:hover,.btn:disabled,.btn[disabled],.btn:focus,.btn:active,.btn.active - { - outline: none !important; - background-image: none !important; - filter: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - text-shadow: none; -} - -#skills-chart-breadcrumb { - margin-bottom: 10px -} - -/*����daterangepicker��css*/ -input[name="daterange"] { - width: 220px; - line-height: 0; - height: 31px; - vertical-align: top; - margin-top: 2px; -} - -.daterangepicker .ranges { - width: 205px; -} - -.daterangepicker .ranges input { - width: 95px !important; -} - -td.details-control { - background: url('../images/details_open.png') no-repeat center center; - cursor: pointer; -} - -tr.shown td.details-control { - background: url('../images/details_close.png') no-repeat center center; -} - -.details table td { - word-wrap: break-word; - word-break: normal; - border-top: 1px solid #dddddd; -} - -.details table tr:first-child td { - border-top: none; -} - -.details table { - table-layout: fixed; - width: 100%; -} - -td.title { - width: 10%; -} - -table.dataTable tbody th,table.dataTable tbody td { - padding: 8px 10px; -} - -div.dataTables_length,div.dataTables_info { - display: inline; -} - -div.dataTables_paginate { - display: inline; - float: right; -} - -div.pagination-panel { - margin-right: 10px; -} - -input.pagination-panel-input { - width: 50px; -} - -#ict_package_table_div { - margin-top: 15px; -} - -#ict_package_table_div label { - font-weight: 100; -} - -.daterangepicker .daterangepicker_start_input label,.daterangepicker .daterangepicker_end_input label - { - color: #5b9bd1; -} - -.daterangepicker .ranges .input-mini { - color: #5b9bd1; -} - -.cancelBtn { - padding: 5px 10px 5px 10px; -} - -.btn:focus,.btn:active:focus,.btn.active:focus { - outline: 0; -} - -#ict_package_table_div table { - width: 100% !important; -} - -.upload { - width:60%; - margin-top: 10px; -} -.myPreview { - height: 100px; -} - -span.status:hover { - color: #2A69AC; - cursor: pointer; -} - -.input-group .form-control { - height: 34px !important; -} - -.input-group .btn { - font-size: 14px !important; -} - -.package-drop-zone-title{ - color:#aaa; - font-size:20px; - padding:15px 10px -} \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/platform/animate.min.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/platform/animate.min.css deleted file mode 100644 index b007c1b9..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/css/platform/animate.min.css +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -@charset "UTF-8";/*! -Animate.css - http://daneden.me/animate -Licensed under the MIT license - http://opensource.org/licenses/MIT - -Copyright (c) 2014 Daniel Eden -*/.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}@-webkit-keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);-ms-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);-ms-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);-ms-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);-ms-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);-ms-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);-ms-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);-ms-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);-ms-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);-ms-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);-ms-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);-ms-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);-ms-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);-ms-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);-ms-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes tada{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}@keyframes wobble{0%{-webkit-transform:none;-ms-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);-ms-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);-ms-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);-ms-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);-ms-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);-ms-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);-ms-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);-ms-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);-ms-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);-ms-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);-ms-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);-ms-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);-ms-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);-ms-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);-ms-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);-ms-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);-ms-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);-ms-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);-ms-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);-ms-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);-ms-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);-ms-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);-ms-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);-ms-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);-ms-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;-ms-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);-ms-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);-ms-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);-ms-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);-ms-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);-ms-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);-ms-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{0%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);-ms-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);-ms-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{0%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);-ms-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0,0,1,45deg);transform:rotate(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0,0,1,45deg);-ms-transform:rotate(0,0,1,45deg);transform:rotate(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);-ms-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);-ms-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);-ms-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);-ms-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);-ms-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);-ms-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-ms-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-ms-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);-ms-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;-ms-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);-ms-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp} \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/platform/skill.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/platform/skill.css deleted file mode 100644 index 6e452b2a..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/css/platform/skill.css +++ /dev/null @@ -1,89 +0,0 @@ -/** - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -body { - font-family: 'Open Sans', sans-serif; - background-color: #f1f3fa; - width: '100%'; - height: '100%'; - margin-top: 10px; -} -div.skills-sunburst{ - font-size: 12px; - font-weight: 400; - text-align:center; -} - -#skillmap .skills-wrapper { - margin-top: 10px; - overflow: auto; -} -#skillmap .skills-sunburst { - float: left; - width: 500px; - margin-left: -80px; -} -#skillmap .skills-sunburst svg { - font: 11px 'Source Sans Pro', sans-serif; - font-weight: 900; - - cursor: pointer; -} -#skillmap .skills-chart { - float: right; - font-family: 'Source Sans Pro', sans-serif; - font-size: 15px; - margin: 80px 20px 0 0; -} -#skillmap .skills-chart .breadcumb-text { - font-size: 13px; - font-weight: 700; -} -#skillmap .skills-chart #skills-chart-line { - fill: none; - stroke-width: 3.5px; -} -#skillmap .skills-chart .axis path, -#skillmap .skills-chart .axis line { - fill: none; -} -#skillmap .skills-chart .x-axis path, -#skillmap .skills-chart .y-axis path { - stroke: #444; - stroke-width: 1px; - shape-rendering: geometricPrecision; -} - -#explanation { - position: absolute; - top: 165px; - left: 170px; - width: 140px; - text-align: center; - color: #666; - margin-top:30px; -} - -#percentage { - font-size: 2em; -} - -#endlabel{ - font-sizte:1.5em; -} - -div.skills-sunburst text{ - text-anchor: middle; -} \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/software.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/software.css deleted file mode 100644 index 491a9d93..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/css/software.css +++ /dev/null @@ -1,423 +0,0 @@ -/** - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -body { - font-family: microsoft yahei !important; -} - -/* blue pill (inspired by iTunes) -*******************************************************************************/ -.redFont{ - color:red; -} -.blue { - - background-color: #5b9bd1; - border-radius: 20px; - color: #fff; - font-weight: bold; - padding: 8px 0; - text-align: center; - width: 100px; -} - -.blue:hover { - background-color: #e8f3fd; - color: #5b9bd1; -} - -.blue.selected { - border: 0; - background-color: #5b9bd1; - color: #fff; -} - -.blue.selected:hover { - border: 0; - background-color: #5b9bd1; - color: #fff; -} - -p { - color: #444; - font-size: 14px; - font-weight: normal; - line-height: 21px; - margin: 0 0 12px 0; -} - -p.credit { - border-top: 1px solid #ccc; - font-size: 14px; - line-height: 140%; - margin: 36px 0 12px 0; - padding: 8px 0 0 0; - text-align: center; -} - -ul.column { - float: left; - list-style: none; - width: 675px; -} - -ul.column li { - background: #eee; - -webkit-border-radius: 5px; - border-radius: 5px; - -webkit-box-shadow: inset 0 1px 1px 0 #c7c7c7; - box-shadow: inset 0 1px 1px 0 #c7c7c7; - float: left; - margin: 10px 0 0 10px; - display: block; - height: 150px; - text-align: center; - width: 215px; -} - -/* Clear Floated Elements -------------------------------------------------------------------------------*/ -.column:after,.button-collection:after,.clearfix:after,div.project-info:after - { - clear: both; - content: ' '; - display: block; - font-size: 0; - line-height: 0; - visibility: hidden; - width: 0; - height: 0; -} - -.container-fluid { - background-color:white !important; - min-height:500px; -} - -.nav-tabs { - border: 0; -} - -.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus - { - border: 0; - border-top: 3px solid #F3565D; -} - -.nav-tabs>li>a { - border-radius: 0; -} - -.nav-tabs>li>a:hover { - background-color: #f1f3fa; - border: 1Px solid #f1f3fa; -} - -.c3 { - margin-top: 120px; -} - -.skills-chart-breadcrumb { - -} - -.blue:selected { - border: 0; - background-color: #5b9bd1; -} - -.btn { - /* border-width: 0; */ - /* padding: 7px 14px; */ - /* font-size: 14px; */ - /* outline: none !important; */ - /* background-image: none !important; */ - /* filter: none; */ - /* -webkit-box-shadow: none; */ - -moz-box-shadow: none; - /* box-shadow: none; */ - /* text-shadow: none; */ -} - -select { - border-width: 1px; - padding: 4px 1px; - border-radius: 4px; -} - -.input-sm { - padding: 4px 10px; -} - -.btn-block { - display: block; - width: 100%; - padding-left: 0; - padding-right: 0; -} - -/* Bootstrap buttons */ -.btn-default { - color: #5b9bd1; - background-color: #fff; - border-color: #ccc; -} - -.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active - { - color: #333; - background-color: #ededed; - border-color: #b3b3b3; -} - -.open .btn-default.dropdown-toggle { - color: #333; - background-color: #ededed; - border-color: #b3b3b3; -} - -.btn-default:active,.btn-default.active { - background-image: none; - background-color: #e0e0e0; - font-weight: bold; -} - -.btn-default:active:hover,.btn-default.active:hover { - background-color: #e6e6e6; -} - -.open .btn-default.dropdown-toggle { - background-image: none; -} - -.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active - { - background-color: #fff; - border-color: #ccc; -} - -.btn-default .badge { - color: #fff; - background-color: #333; -} - -.btn-default>i { - color: #aaa; -} - -.btn-default>i[class^="icon-"],.btn-default>i[class*="icon-"] { - color: #8c8c8c; -} - -div[data-name="tab_zone"] div { - background-color: #f1f3fa; - padding: 0px; -} - -div[data-name="cond_zone"] div { - background-color: #fff; - margin-top: 15px; - margin-bottom: 15px; -} - -div[data-name="res-conds-zone"] { - display: inline; -} - -div[data-name="res-conds-zone"] select,div[data-name="res-conds-zone"] span - { - /**height:33px;*/ - margin-left: 15px; - color: #5b9bd1; - border-color: #ccc; - font-weight: bold; -} - -.input{ - width:250px; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; -} - -div.separator { - margin: 20px; -} - -div.separator div { - text-align: center; - line-height: 0; -} - -div.separator-line { - height: 1px !important; - width: 100%; - background: #ddd; - overflow: hidden; -} - -.dropdown-toggle { - color: #5b9bd1; -} - -.calendar-date { - color: #5b9bd1; -} - -.range_inputs { - color: #5b9bd1; -} - -.btn.dropdown-toggle,.btn-group .btn.dropdown-toggle,.btn:hover,.btn:disabled,.btn[disabled],.btn:focus,.btn:active,.btn.active - { - outline: none !important; - background-image: none !important; - filter: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - text-shadow: none; -} - -#skills-chart-breadcrumb { - margin-bottom: 10px -} - -/*增加daterangepicker的css*/ -input[name="daterange"] { - width: 220px; - line-height: 0; - height: 31px; - vertical-align: top; - margin-top: 2px; -} - -.daterangepicker .ranges { - width: 205px; -} - -.daterangepicker .ranges input { - width: 95px !important; -} - -td.details-control { - background: url('../images/details_open.png') no-repeat center center; - cursor: pointer; -} - -tr.shown td.details-control { - background: url('../images/details_close.png') no-repeat center center; -} - -.details table td { - word-wrap: break-word; - word-break: normal; - border-top: 1px solid #dddddd; -} - -.details table tr:first-child td { - border-top: none; -} - -.details table { - table-layout: fixed; - width: 100%; -} - -td.title { - width: 10%; -} - -table.dataTable tbody th,table.dataTable tbody td { - padding: 8px 10px; -} - -div.dataTables_length,div.dataTables_info { - display: inline; -} - -div.dataTables_paginate { - display: inline; - float: right; -} - -div.pagination-panel { - margin-right: 10px; -} - -input.pagination-panel-input { - width: 50px; -} - -.daterangepicker .daterangepicker_start_input label,.daterangepicker .daterangepicker_end_input label - { - color: #5b9bd1; -} - -.daterangepicker .ranges .input-mini { - color: #5b9bd1; -} - -.cancelBtn { - padding: 5px 10px 5px 10px; -} - -.btn:focus,.btn:active:focus,.btn.active:focus { - outline: 0; -} - -#ict_software_table_div { - margin-top: 10px; -} - -#ict_software_table_div label { - font-weight: 100; -}s - -#ict_software_table_div table { - width: 100% !important; -} - -.upload { - width:60%; -} -.myPreview { - height: 100px; -} - -.uploadBtn { - margin-top:10px; -} - -.file-input { - display: inline; - overflow: hidden; - word-break: break-all; - text-overflow: ellipsis; -} - -.input-group .btn { - font-size: 14px !important; -} \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/template.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/template.css deleted file mode 100644 index 1de221a7..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/css/template.css +++ /dev/null @@ -1,405 +0,0 @@ -/** - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -body { - font-family: microsoft yahei !important; -} - -/* blue pill (inspired by iTunes) -*******************************************************************************/ -.redFont{ - color:red; -} -.blue { - - background-color: #5b9bd1; - border-radius: 20px; - color: #fff; - font-weight: bold; - padding: 8px 0; - text-align: center; - width: 100px; -} - -.blue:hover { - background-color: #e8f3fd; - color: #5b9bd1; -} - -.blue.selected { - border: 0; - background-color: #5b9bd1; - color: #fff; -} - -.blue.selected:hover { - border: 0; - background-color: #5b9bd1; - color: #fff; -} - -a { - text-decoration: none !important; -} - -p { - color: #444; - font-size: 14px; - font-weight: normal; - line-height: 21px; - margin: 0 0 12px 0; -} - -p.credit { - border-top: 1px solid #ccc; - font-size: 14px; - line-height: 140%; - margin: 36px 0 12px 0; - padding: 8px 0 0 0; - text-align: center; -} - -ul.column { - float: left; - list-style: none; - width: 675px; -} - -ul.column li { - background: #eee; - -webkit-border-radius: 5px; - border-radius: 5px; - -webkit-box-shadow: inset 0 1px 1px 0 #c7c7c7; - box-shadow: inset 0 1px 1px 0 #c7c7c7; - float: left; - margin: 10px 0 0 10px; - display: block; - height: 150px; - text-align: center; - width: 215px; -} - -/* Clear Floated Elements -------------------------------------------------------------------------------*/ -.column:after,.button-collection:after,.clearfix:after,div.project-info:after - { - clear: both; - content: ' '; - display: block; - font-size: 0; - line-height: 0; - visibility: hidden; - width: 0; - height: 0; -} - -.container-fluid { - background-color:white !important; - min-height:500px; -} - -.nav-tabs { - border: 0; -} - -.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus - { - border: 0; - border-top: 3px solid #F3565D; -} - -.nav-tabs>li>a { - border-radius: 0; -} - -.nav-tabs>li>a:hover { - background-color: #f1f3fa; - border: 1Px solid #f1f3fa; -} - -.c3 { - margin-top: 120px; -} - -.skills-chart-breadcrumb { - -} - -.blue:selected { - border: 0; - background-color: #5b9bd1; -} - -.btn { - /* border-width: 0; */ - /* padding: 7px 14px; */ - /* font-size: 14px; */ - /* outline: none !important; */ - /* background-image: none !important; */ - /* filter: none; */ - /* -webkit-box-shadow: none; */ - -moz-box-shadow: none; - /* box-shadow: none; */ - /* text-shadow: none; */ -} - -select { - border-width: 1px; - padding: 4px 1px; - border-radius: 4px; -} - -.input-sm { - padding: 4px 10px; -} - -.btn-block { - display: block; - width: 100%; - padding-left: 0; - padding-right: 0; -} - -/* Bootstrap buttons */ -.btn-default { - color: #5b9bd1; - background-color: #fff; - border-color: #ccc; -} - -.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active - { - color: #333; - background-color: #ededed; - border-color: #b3b3b3; -} - -.open .btn-default.dropdown-toggle { - color: #333; - background-color: #ededed; - border-color: #b3b3b3; -} - -.btn-default:active,.btn-default.active { - background-image: none; - background-color: #e0e0e0; - font-weight: bold; -} - -.btn-default:active:hover,.btn-default.active:hover { - background-color: #e6e6e6; -} - -.open .btn-default.dropdown-toggle { - background-image: none; -} - -.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active - { - background-color: #fff; - border-color: #ccc; -} - -.btn-default .badge { - color: #fff; - background-color: #333; -} - -.btn-default>i { - color: #aaa; -} - -.btn-default>i[class^="icon-"],.btn-default>i[class*="icon-"] { - color: #8c8c8c; -} - -div[data-name="tab_zone"] div { - background-color: #f1f3fa; - padding: 0px; -} - -div[data-name="cond_zone"] div { - background-color: #fff; - margin-top: 15px; - margin-bottom: 15px; -} - -div[data-name="res-conds-zone"] { - display: inline; -} - -div[data-name="res-conds-zone"] select,div[data-name="res-conds-zone"] span - { - /**height:33px;*/ - margin-left: 15px; - color: #5b9bd1; - border-color: #ccc; - font-weight: bold; -} - -.input{ - width:250px; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; -} - -div.separator { - margin: 20px; -} - -div.separator div { - text-align: center; - line-height: 0; -} - -div.separator-line { - height: 1px !important; - width: 100%; - background: #ddd; - overflow: hidden; -} - -.dropdown-toggle { - color: #5b9bd1; -} - -.calendar-date { - color: #5b9bd1; -} - -.range_inputs { - color: #5b9bd1; -} - -.btn.dropdown-toggle,.btn-group .btn.dropdown-toggle,.btn:hover,.btn:disabled,.btn[disabled],.btn:focus,.btn:active,.btn.active - { - outline: none !important; - background-image: none !important; - filter: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - text-shadow: none; -} - -#skills-chart-breadcrumb { - margin-bottom: 10px -} - -/*����daterangepicker��css*/ -input[name="daterange"] { - width: 220px; - line-height: 0; - height: 31px; - vertical-align: top; - margin-top: 2px; -} - -.daterangepicker .ranges { - width: 205px; -} - -.daterangepicker .ranges input { - width: 95px !important; -} - -td.details-control { - background: url('../images/details_open.png') no-repeat center center; - cursor: pointer; -} - -tr.shown td.details-control { - background: url('../images/details_close.png') no-repeat center center; -} - -.details table td { - word-wrap: break-word; - word-break: normal; - border-top: 1px solid #dddddd; -} - -.details table tr:first-child td { - border-top: none; -} - -.details table { - table-layout: fixed; - width: 100%; -} - -td.title { - width: 10%; -} - -table.dataTable tbody th,table.dataTable tbody td { - padding: 8px 10px; -} - -div.dataTables_length,div.dataTables_info { - display: inline; -} - -div.dataTables_paginate { - display: inline; - float: right; -} - -div.pagination-panel { - margin-right: 10px; -} - -input.pagination-panel-input { - width: 50px; -} - -#ict_template_table_div { - margin-top: 15px; -} - -#ict_template_table_div label { - font-weight: 100; -} - -.daterangepicker .daterangepicker_start_input label,.daterangepicker .daterangepicker_end_input label - { - color: #5b9bd1; -} - -.daterangepicker .ranges .input-mini { - color: #5b9bd1; -} - -.cancelBtn { - padding: 5px 10px 5px 10px; -} - -.btn:focus,.btn:active:focus,.btn.active:focus { - outline: 0; -} - -#ict_template_table_div table { - width: 100% !important; -} \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/templateDetail.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/templateDetail.css deleted file mode 100644 index 3eb721e6..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/css/templateDetail.css +++ /dev/null @@ -1,480 +0,0 @@ -/** - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -body { - font-family: microsoft yahei !important; -} - -/* blue pill (inspired by iTunes) -*******************************************************************************/ -.redFont{ - color:red; -} -.blue { - - background-color: #5b9bd1; - border-radius: 20px; - color: #fff; - font-weight: bold; - padding: 8px 0; - text-align: center; - width: 100px; -} - -.blue:hover { - background-color: #e8f3fd; - color: #5b9bd1; -} - -.blue.selected { - border: 0; - background-color: #5b9bd1; - color: #fff; -} - -.blue.selected:hover { - border: 0; - background-color: #5b9bd1; - color: #fff; -} - -a { - text-decoration: none !important; -} - -p { - color: #444; - font-size: 14px; - font-weight: normal; - line-height: 21px; - margin: 0 0 12px 0; -} - -p.credit { - border-top: 1px solid #ccc; - font-size: 14px; - line-height: 140%; - margin: 36px 0 12px 0; - padding: 8px 0 0 0; - text-align: center; -} - -ul.column { - float: left; - list-style: none; - width: 675px; -} - -ul.column li { - background: #eee; - -webkit-border-radius: 5px; - border-radius: 5px; - -webkit-box-shadow: inset 0 1px 1px 0 #c7c7c7; - box-shadow: inset 0 1px 1px 0 #c7c7c7; - float: left; - margin: 10px 0 0 10px; - display: block; - height: 150px; - text-align: center; - width: 215px; -} - -/* Clear Floated Elements -------------------------------------------------------------------------------*/ -.column:after,.button-collection:after,.clearfix:after,div.project-info:after - { - clear: both; - content: ' '; - display: block; - font-size: 0; - line-height: 0; - visibility: hidden; - width: 0; - height: 0; -} - -.container-fluid { - background-color:white !important; - min-height:800px; -} - -.nav-tabs { - border: 0; -} - -.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus - { - border: 0; - border-top: 3px solid #F3565D; -} - -.nav-tabs>li>a { - border-radius: 0; -} - -.nav-tabs>li>a:hover { - background-color: #f1f3fa; - border: 1Px solid #f1f3fa; -} - -.c3 { - margin-top: 120px; -} - -.skills-chart-breadcrumb { - -} - -.blue:selected { - border: 0; - background-color: #5b9bd1; -} - -.btn { - /* border-width: 0; */ - /* padding: 7px 14px; */ - /* font-size: 14px; */ - /* outline: none !important; */ - /* background-image: none !important; */ - /* filter: none; */ - /* -webkit-box-shadow: none; */ - -moz-box-shadow: none; - /* box-shadow: none; */ - /* text-shadow: none; */ -} - -select { - border-width: 1px; - padding: 4px 1px; - border-radius: 4px; -} - -.input-sm { - padding: 4px 10px; -} - -.btn-block { - display: block; - width: 100%; - padding-left: 0; - padding-right: 0; -} - -/* Bootstrap buttons */ -.btn-default { - color: #5b9bd1; - background-color: #fff; - border-color: #ccc; -} - -.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active - { - color: #333; - background-color: #ededed; - border-color: #b3b3b3; -} - -.open .btn-default.dropdown-toggle { - color: #333; - background-color: #ededed; - border-color: #b3b3b3; -} - -.btn-default:active,.btn-default.active { - background-image: none; - background-color: #e0e0e0; - font-weight: bold; -} - -.btn-default:active:hover,.btn-default.active:hover { - background-color: #e6e6e6; -} - -.open .btn-default.dropdown-toggle { - background-image: none; -} - -.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active - { - background-color: #fff; - border-color: #ccc; -} - -.btn-default .badge { - color: #fff; - background-color: #333; -} - -.btn-default>i { - color: #aaa; -} - -.btn-default>i[class^="icon-"],.btn-default>i[class*="icon-"] { - color: #8c8c8c; -} - -div[data-name="tab_zone"] div { - background-color: #f1f3fa; - padding: 0px; -} - -div[data-name="cond_zone"] div { - background-color: #fff; - margin-top: 15px; - margin-bottom: 15px; -} - -div[data-name="detail-conds-zone"] { - display: inline; -} - -div[data-name="detail-conds-zone"] select,div[data-name="detail-conds-zone"] span - { - /**height:33px;*/ - margin-left: 15px; - color: #5b9bd1; - border-color: #ccc; - font-weight: bold; -} - -.input{ - width:250px; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; -} - -div.separator { - margin: 20px; -} - -div.separator div { - text-align: center; - line-height: 0; -} - -div.separator-line { - height: 1px !important; - width: 100%; - background: #ddd; - overflow: hidden; -} - -.dropdown-toggle { - color: #5b9bd1; -} - -.calendar-date { - color: #5b9bd1; -} - -.range_inputs { - color: #5b9bd1; -} - -.btn.dropdown-toggle,.btn-group .btn.dropdown-toggle,.btn:hover,.btn:disabled,.btn[disabled],.btn:focus,.btn:active,.btn.active - { - outline: none !important; - background-image: none !important; - filter: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - text-shadow: none; -} - -#skills-chart-breadcrumb { - margin-bottom: 10px -} - -/*����daterangepicker��css*/ -input[name="daterange"] { - width: 220px; - line-height: 0; - height: 31px; - vertical-align: top; - margin-top: 2px; -} - -.daterangepicker .ranges { - width: 205px; -} - -.daterangepicker .ranges input { - width: 95px !important; -} - -td.details-control { - background: url('../images/details_open.png') no-repeat center center; - cursor: pointer; -} - -tr.shown td.details-control { - background: url('../images/details_close.png') no-repeat center center; -} - -.details table td { - word-wrap: break-word; - word-break: normal; - border-top: 1px solid #dddddd; -} - -.details table tr:first-child td { - border-top: none; -} - -.details table { - table-layout: fixed; - width: 100%; -} - -td.title { - width: 10%; -} - -table.dataTable tbody th,table.dataTable tbody td { - padding: 8px 10px; -} - -div.dataTables_length,div.dataTables_info { - display: inline; -} - -div.dataTables_paginate { - display: inline; - float: right; -} - -div.pagination-panel { - margin-right: 10px; -} - -input.pagination-panel-input { - width: 50px; -} - -.daterangepicker .daterangepicker_start_input label,.daterangepicker .daterangepicker_end_input label - { - color: #5b9bd1; -} - -.daterangepicker .ranges .input-mini { - color: #5b9bd1; -} - -.cancelBtn { - padding: 5px 10px 5px 10px; -} - -.btn:focus,.btn:active:focus,.btn.active:focus { - outline: 0; -} - -#right-menu { - position:absolute; - top:0; - right:0; - width:420px; - height:100%; - border-left:4px solid rgb(58,174,218); - background-color:rgba(255,255,255,.95); - padding-left:19px; - padding-right:15px; - padding-top:20px; - z-index:9999; - overflow-y: auto; -} - -#right-menu .btn{ - min-width: 30px !important; - letter-spacing :normal !important; -} - -.rigth { - float: right; -} -.right-button-pointer { - display:inline-block; - cursor:pointer -} -.floating-panel { - width:400px; - display:none -} - -title{height:25px;position:relative;top:20px;font-size:15px} - -#ict_nodes_table_div { - margin-top: 15px; -} - -#ict_nodes_table_div label { - font-weight: 100; -} - -#ict_nodes_table_div table { - width: 100% !important; -} - -.nodesDetail { - margin-top: 15px; -} - -.nodesDetail label { - font-weight: 100; -} - -.nodesDetail table { - width:100%; - table-layout: fixed; - word-wrap:break-word; -} - -.step { - text-align: center; - padding-top: 60px; -} - -.step div { - text-align: left; -} - -div.separator-sline { - height:28px ; - width:3px; -} - -.titlefont { - font-size:16px; -} - -.td_nodeId { - font-size: small; -} - -.iconBtn { - margin-left:15px; - min-width:30px; -} \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/topology.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/topology.css deleted file mode 100644 index a4e1d3dd..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/css/topology.css +++ /dev/null @@ -1,393 +0,0 @@ -/** - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -.container-fluid { - background-color: #fff; - padding: 0; -} - - -div[data-name="topo_zone"] { - background-color: #fff; - margin-top: 15px; - margin-bottom: 15px; -} - -p[tooltip], div[tooltip], td { - overflow: hidden; - text-overflow: ellipsis; -} - - - -.bpContainer { - position: relative; - display: block; - height: 100%; - padding: 40px; -} - - -.box { - position: relative; - display: inline-block; - min-width: 260px; - min-height: 170px; - border-width: 2px; - border-color: #136e9d; - border-style: solid; - background-color: #fff; - vertical-align: top; - padding: 2px; - border-radius: 6px; - margin: 0 60px 40px 0; -} - - -.box .piProgress, .line .piProgress { - position: absolute; - top: -12px; - left: -27px; - z-index: 1; -} -/* .piProgress { - position: relative; - display: inline-block; -} */ -.box .piProgress .circle, .line .piProgress .circle { - background: #136e9d; - border: 2px solid #d3dfe2; - width: 43px; - height: 43px; - top: 5.5px; - left: 5.5px; - border-radius: 21px; - font-size: 14px; -} -.box .piProgress .smallCircle { - background: #136e9d; - border: 2px solid #d3dfe2; - width: 30px; - height: 30px; - left: 11px; - border-radius: 21px; - font-size: 12px; - cursor: pointer; -} -.piProgress .circle, .piProgress .smallCircle { - position: absolute; - display: box; - box-pack: center; - box-align: center; - background-color: #46b8da; - color: #fff; - font-size: 100%; - z-index: 3; -} - -.bpContainer i.gs-node-icon { - position: absolute; - top: 10px; - left: 9px; - font-size: 23px; -} - -.bpContainer i.gs-cp-icon { - position: absolute; - top: 5px; - left: 5px; - font-size: 15px; -} - -.bpContainer .box .head, .bpContainer .line .head { - display: block; - background-color: #136e9d; - color: #fff; - padding: 2px 10px 3px 25px; - border-radius: 3px; - font-size: 20px; - height: 35px; -} - -.bpContainer .box .holder { - display: block; - padding: 5px 25px; - margin-top: 1px; - background-color: #fff; -} - -.bpContainer .box .nest { - min-height:130px; - cursor:pointer; -} - -.bpContainer .box .nest .plus { - position: absolute; - bottom:0; - right:5px; -} - -.bpContainer .box .boxHover~div { - background-color:#eaf1f7; -} - -.bpContainer .boxHover{ - cursor:pointer; -} - -.bpContainer .box .box .appHover{ - cursor:pointer; -} - - -.bpContainer .box .box .appHover p { - background-color:#eaf1f7; -} - -.bpContainer .box .box { - border-color: #3aaeda; - min-width: 170px; - margin: 15px; -} - -.bpContainer .box .box .head { - background-color: #3aaeda; -} - -.bpContainer .box .box .piProgress .circle { - background-color: #3aaeda; -} - -.bpContainer .box .box .holder { - text-align: center; - background-color: #fff; - min-height: 126px; -} - -.bpContainer .box .box .boxHover~div { - background-color:#eaf1f7; -} - -.bpContainer .app { - position: relative; - display: inline-block; - width: 47px; - height: 47px; - text-align: center; - border-radius: 3px; - margin: 10px 0; -} - -.bpContainer .app .piProgress { - top: 0; - left: -6px; -} - -.bpContainer .box .box .piProgress .circle{ - background-color: #3aaeda; -} - -.bpContainer .app p { - position: relative; - top: 50px; - margin: 0; - color: #555869; - text-align: center; - font-size: 15px; -} - - - .coordinates { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - pointer-events: none; -} - -.bpContainer .box .piProgress .circle>.badge, .bpContainer .line .piProgress .circle>.badge { - position:absolute; - display:inline-block; - z-index:1; - top:-8px; - left:20px; - min-width:20px; - border-radius:10px; - padding:3px!important; - vertical-align:baseline; - white-space:nowrap; - text-align:center; - background-color:#2f3334; - text-decoration:none; - font-size:14px; - color:#fff; - line-height:15px; - font-style:normal; - font-weight:400; - opacity:1 -} - -.header { - border-top:2px solid #4b6b8b; - background-color:#e8edf2; - height:40px; - padding:5px 20px -} - -.header .title { - display:inline-block; - font-size:18px; - color:#29AAEE; - line-height:28px -} - -.containList { - overflow-y:scroll; -} - -div.separator-icon { - text-align: center; - line-height: 0 -} - -.networksContainer{ - white-space:nowrap; - margin:40px 0 0 20px; - height:100% -} - -.networksContainer .network{ - position: relative; - display:inline-block; - text-align:center; - min-width:70px; - margin:0 10px 0 0 -} - -.networksContainer .subnet{ - display:inline-block; - text-align:center; - min-width:70px; - margin:0 10px 0 0 -} - -.networksContainer .subnet .line{ - position:relative; - display:inline-block; - vertical-align:top -} - -.networksContainer .name { - display:block; - width:100%; - background-color:#797B86; - color:#fff; - padding:2px 6px; - border-radius:5px; - text-align:center; - margin:0 0 10px; - overflow:hidden; - cursor: pointer; - text-overflow:ellipsis -} - -.networksContainer .network .name>.badge { - position:absolute; - display:inline-block; - z-index:1; - top:-9px; - right:-9px; - min-width:20px; - border-radius:10px; - padding:3px!important; - vertical-align:baseline; - white-space:nowrap; - text-align:center; - background-color:#2f3334; - text-decoration:none; - font-size:14px; - color:#fff; - line-height:15px; - font-style:normal; - font-weight:400; - opacity:1 -} - -.networksContainer .subnet .line .vlan{ - position:relative; - display:inline-block; - width:21px; - height:500px; - background-color:#149bdf; - color:#fff; - border-radius:5px; - vertical-align:top; - margin:0 10px 0 0; - cursor:pointer -} - -.networksContainer .subnet .vlan .badge { - position:absolute; - display:inline-block; - z-index:1; - top:-8px; - left:10px; - min-width:20px; - border-radius:10px; - padding:3px!important; - vertical-align:baseline; - white-space:nowrap; - text-align:center; - background-color:#2f3334; - text-decoration:none; - font-size:14px; - color:#fff; - line-height:15px; - font-style:normal; - font-weight:400; - opacity:1 -} - -.networksContainer .subnet .line .vlan:last-child{ - margin:0 -} - -.networksContainer .subnet .line .vlan>p{ - position:absolute; - display:block; - transform:rotate(90deg); - -ms-transform:rotate(90deg); - -webkit-transform:rotate(90deg); - white-space:nowrap; - color:#fff; - top:5px; - right:0; - left:1px -} - -.networksContainer .subnet .line .vlan>p.cidr{ - width:200px; - top:auto; - left:-90px; - bottom:85px; - color:#fff; - text-align:right -} - -.topoZone { - display: inline-block; - float: left; -} \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/virtualApplication.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/virtualApplication.css deleted file mode 100644 index 0458cc3d..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/css/virtualApplication.css +++ /dev/null @@ -1,502 +0,0 @@ -/** - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -body { - font-family: microsoft yahei !important; -} - -/* blue pill (inspired by iTunes) -*******************************************************************************/ -.redFont{ - color:red; -} -.blue { - - background-color: #5b9bd1; - border-radius: 20px; - color: #fff; - font-weight: bold; - padding: 8px 0; - text-align: center; - width: 100px; -} - -.blue:hover { - background-color: #e8f3fd; - color: #5b9bd1; -} - -.blue.selected { - border: 0; - background-color: #5b9bd1; - color: #fff; -} - -.blue.selected:hover { - border: 0; - background-color: #5b9bd1; - color: #fff; -} - -a { - text-decoration: none !important; -} - -p { - color: #444; - font-size: 14px; - font-weight: normal; - line-height: 21px; - margin: 0 0 12px 0; -} - -p.credit { - border-top: 1px solid #ccc; - font-size: 14px; - line-height: 140%; - margin: 36px 0 12px 0; - padding: 8px 0 0 0; - text-align: center; -} - -ul.column { - float: left; - list-style: none; - width: 675px; -} - -ul.column li { - background: #eee; - -webkit-border-radius: 5px; - border-radius: 5px; - -webkit-box-shadow: inset 0 1px 1px 0 #c7c7c7; - box-shadow: inset 0 1px 1px 0 #c7c7c7; - float: left; - margin: 10px 0 0 10px; - display: block; - height: 150px; - text-align: center; - width: 215px; -} - -/* Clear Floated Elements -------------------------------------------------------------------------------*/ -.column:after,.button-collection:after,.clearfix:after,div.project-info:after - { - clear: both; - content: ' '; - display: block; - font-size: 0; - line-height: 0; - visibility: hidden; - width: 0; - height: 0; -} - -.container-fluid { - background-color:white !important; - min-height:500px; -} - -.nav-tabs { - border: 0; -} - -.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus - { - border: 0; - border-top: 3px solid #F3565D; -} - -.nav-tabs>li>a { - border-radius: 0; -} - -.nav-tabs>li>a:hover { - background-color: #f1f3fa; - border: 1Px solid #f1f3fa; -} - -.c3 { - margin-top: 120px; -} - -.skills-chart-breadcrumb { - -} - -.blue:selected { - border: 0; - background-color: #5b9bd1; -} - -select { - border-width: 1px; - padding: 2px 1px; - border-radius: 4px; -} - -.input-sm { - padding: 4px 10px; -} - -.btn-block { - display: block; - width: 100%; - padding-left: 0; - padding-right: 0; -} - -/* Bootstrap buttons */ -.btn-default { - color: #5b9bd1; - background-color: #fff; - border-color: #ccc; -} - -.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active - { - color: #333; - background-color: #ededed; - border-color: #b3b3b3; -} - -.open .btn-default.dropdown-toggle { - color: #333; - background-color: #ededed; - border-color: #b3b3b3; -} - -.btn-default:active,.btn-default.active { - background-image: none; - background-color: #e0e0e0; - font-weight: bold; -} - -.btn-default:active:hover,.btn-default.active:hover { - background-color: #e6e6e6; -} - -.open .btn-default.dropdown-toggle { - background-image: none; -} - -.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active - { - background-color: #fff; - border-color: #ccc; -} - -.btn-default .badge { - color: #fff; - background-color: #333; -} - -.btn-default>i { - color: #aaa; -} - -.btn-default>i[class^="icon-"],.btn-default>i[class*="icon-"] { - color: #8c8c8c; -} - -div[data-name="tab_zone"] div { - background-color: #f1f3fa; - padding: 0px; -} - -div[data-name="cond_zone"] div { - background-color: #fff; - margin-top: 15px; - margin-bottom: 15px; -} - -div[data-name="res-conds-zone"] { - display: inline; -} - -div[data-name="res-conds-zone"] select,div[data-name="res-conds-zone"] span - { - /**height:33px;*/ - margin-left: 15px; - color: #5b9bd1; - border-color: #ccc; - font-weight: bold; -} - -.input{ - width:250px; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; -} - -div.separator { - margin: 20px; -} - -div.separator div { - text-align: center; - line-height: 0; -} - -div.separator-line { - height: 1px !important; - width: 100%; - background: #ddd; - overflow: hidden; -} - -.dropdown-toggle { - color: #5b9bd1; -} - -.calendar-date { - color: #5b9bd1; -} - -.range_inputs { - color: #5b9bd1; -} - -.btn.dropdown-toggle,.btn-group .btn.dropdown-toggle,.btn:hover,.btn:disabled,.btn[disabled],.btn:focus,.btn:active,.btn.active - { - outline: none !important; - background-image: none !important; - filter: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - text-shadow: none; -} - -#skills-chart-breadcrumb { - margin-bottom: 10px -} - -/*����daterangepicker��css*/ -input[name="daterange"] { - width: 220px; - line-height: 0; - height: 31px; - vertical-align: top; - margin-top: 2px; -} - -.daterangepicker .ranges { - width: 205px; -} - -.daterangepicker .ranges input { - width: 95px !important; -} - -td.details-control { - background: url('../images/details_open.png') no-repeat center center; - cursor: pointer; -} - -tr.shown td.details-control { - background: url('../images/details_close.png') no-repeat center center; -} - -.details table td { - word-wrap: break-word; - word-break: normal; - border-top: 1px solid #dddddd; -} - -.details table tr:first-child td { - border-top: none; -} - -.details table { - table-layout: fixed; - width: 100%; -} - -td.title { - width: 10%; -} - -table.dataTable tbody th,table.dataTable tbody td { - padding: 8px 10px; -} - -div.dataTables_length,div.dataTables_info { - display: inline; -} - -div.dataTables_paginate { - display: inline; - float: right; -} - -div.pagination-panel { - margin-right: 10px; -} - -input.pagination-panel-input { - width: 50px; -} - -#ict_virtualApplication_table_div { - margin-top: 15px; -} - -#ict_virtualApplication_table_div label { - font-weight: 100; -} - -.daterangepicker .daterangepicker_start_input label,.daterangepicker .daterangepicker_end_input label - { - color: #5b9bd1; -} - -.daterangepicker .ranges .input-mini { - color: #5b9bd1; -} - -.cancelBtn { - padding: 5px 10px 5px 10px; -} - -.btn:focus,.btn:active:focus,.btn.active:focus { - outline: 0; -} - -#ict_virtualApplication_table_div table { - width: 100% !important; -} - -.uploadBtn { - margin-top:10px; -} - -.btn-operation { - min-width: 30px; - line-height: 1; -} - -tr select { - width: 80px; -} - -.span-action { - float:left; -} - -.btn i { - padding-right: 0 !important; -} - -.vmapp-margin { - margin-bottom: 20px; -} - -.vmapp-form-title { - padding:8px; - margin-bottom:5px; - margin-left:20px; - border-left: 2px solid #5b9bd1; - color:#1A78CA; -} - -.input-group .input-control { - height : 34px !important; -} - -.input-group .input-control[disabled] { - cursor: default; - background-color: #fff; -} - -.input-group .input-group-btn .btn-default { - color: #333; - font-size: 14px; - min-width: 34px; -} - -.modal-scrollable { - overflow: auto !important; -} - -td.icheckbox { - text-align: center; -} - -td .icheckbox_square-aero { - margin-right: 0; -} - -/*卡片面板样式*/ -.hpanel { - background-color: none; - border: none; - box-shadow: none; - margin-bottom: 5px; -} - -.hpanel .panel-body { - border: 1px solid #e4e5e7; - border-radius: 2px; - position: relative; -} - -.hpanel > .panel-footer { - color: inherit; - border: 1px solid #e4e5e7; - border-top: none; - font-size: 90%; - background: #f7f9fa; - height:40px; - padding: 5px 10px; -} - -.hpanel > .panel-footer .pull-right a{ - margin-left: 5px; -} - -.hpanel > .panel-footer .pull-right .btn{ - min-width: 30px !important; -} - -.hpanel_show { - background-color: #f7f9fa; -} - -.hpanel .panel-info { - overflow:hidden; - white-space:nowrap; - text-overflow:ellipsis; -} - -.tipArea { - border-bottom: 1px solid #d4d4d4; - width: 95%; - margin-bottom: 15px; - margin-left: 15px; - padding-bottom: 5px; -} \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/vnfm.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/vnfm.css deleted file mode 100644 index c4b588b4..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/css/vnfm.css +++ /dev/null @@ -1,492 +0,0 @@ -/** - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -body { - font-family: microsoft yahei !important; -} - -/* blue pill (inspired by iTunes) -*******************************************************************************/ - -.grey { - background-color: #e5e5e5; - color: #333; -} - -.blue { - - background-color: #5b9bd1; - border-radius: 20px; - color: #fff; - font-weight: bold; - padding: 8px 0; - text-align: center; - width: 100px; -} - -.blue:hover { - background-color: #e8f3fd; - color: #5b9bd1; -} - -.blue.selected { - border: 0; - background-color: #5b9bd1; - color: #fff; -} - -.blue.selected:hover { - border: 0; - background-color: #5b9bd1; - color: #fff; -} - -p { - color: #444; - font-size: 14px; - font-weight: normal; - line-height: 21px; - margin: 0 0 12px 0; -} - -p.credit { - border-top: 1px solid #ccc; - font-size: 14px; - line-height: 140%; - margin: 36px 0 12px 0; - padding: 8px 0 0 0; - text-align: center; -} - -ul.column { - float: left; - list-style: none; - width: 675px; -} - -ul.column li { - background: #eee; - -webkit-border-radius: 5px; - border-radius: 5px; - -webkit-box-shadow: inset 0 1px 1px 0 #c7c7c7; - box-shadow: inset 0 1px 1px 0 #c7c7c7; - float: left; - margin: 10px 0 0 10px; - display: block; - height: 150px; - text-align: center; - width: 215px; -} - -/* Clear Floated Elements -------------------------------------------------------------------------------*/ -.column:after,.button-collection:after,.clearfix:after,div.project-info:after - { - clear: both; - content: ' '; - display: block; - font-size: 0; - line-height: 0; - visibility: hidden; - width: 0; - height: 0; -} - -.container-fluid { - background-color:white !important; - min-height:500px; -} - -.nav-tabs { - border: 0; -} - -.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus - { - border: 0; - border-top: 3px solid #F3565D; -} - -.nav-tabs>li>a { - border-radius: 0; -} - -.nav-tabs>li>a:hover { - background-color: #f1f3fa; - border: 1Px solid #f1f3fa; -} - -.c3 { - margin-top: 120px; -} - -.skills-chart-breadcrumb { - -} - -.blue:selected { - border: 0; - background-color: #5b9bd1; -} - -.btn { - /* border-width: 0; */ - /* padding: 7px 14px; */ - /* font-size: 14px; */ - /* outline: none !important; */ - /* background-image: none !important; */ - /* filter: none; */ - /* -webkit-box-shadow: none; */ - -moz-box-shadow: none; - /* box-shadow: none; */ - /* text-shadow: none; */ -} - -select { - border-width: 1px; - padding: 4px 1px; - border-radius: 4px; -} - -.input-sm { - padding: 4px 10px; -} - -.btn-block { - display: block; - width: 100%; - padding-left: 0; - padding-right: 0; -} - -/* Bootstrap buttons */ - - -.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active - { - color: #333; - background-color: #ededed; - border-color: #b3b3b3; -} - -.open .btn-default.dropdown-toggle { - color: #333; - background-color: #ededed; - border-color: #b3b3b3; -} - -.btn-default:active,.btn-default.active { - background-image: none; - background-color: #e0e0e0; - font-weight: bold; -} - -.btn-default:active:hover,.btn-default.active:hover { - background-color: #e6e6e6; -} - -.open .btn-default.dropdown-toggle { - background-image: none; -} - -.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active - { - background-color: #fff; - border-color: #ccc; -} - -.btn-default .badge { - color: #fff; - background-color: #333; -} - - -.btn-default>i[class^="icon-"],.btn-default>i[class*="icon-"] { - color: #8c8c8c; -} - -div[data-name="tab_zone"] div { - background-color: #f1f3fa; - padding: 0px; -} - -div[data-name="cond_zone"] div { - background-color: #fff; - margin-top: 15px; - margin-bottom: 15px; -} - -div[data-name="res-conds-zone"] { - display: inline; -} - -div[data-name="res-conds-zone"] select,div[data-name="res-conds-zone"] span - { - /**height:33px;*/ - margin-left: 15px; - color: #5b9bd1; - border-color: #ccc; - font-weight: bold; -} - -.input{ - width:250px; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; -} - -div.separator { - margin: 20px; -} - -div.separator div { - text-align: center; - line-height: 0; -} - -div.separator-line { - height: 1px !important; - width: 100%; - background: #ddd; - overflow: hidden; -} - -.dropdown-toggle { - color: #5b9bd1; -} - -.calendar-date { - color: #5b9bd1; -} - -.range_inputs { - color: #5b9bd1; -} - -.btn.dropdown-toggle,.btn-group .btn.dropdown-toggle,.btn:hover,.btn:disabled,.btn[disabled],.btn:focus,.btn:active,.btn.active - { - outline: none !important; - background-image: none !important; - filter: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - text-shadow: none; -} - -#skills-chart-breadcrumb { - margin-bottom: 10px -} - -/*增加daterangepicker的css*/ -input[name="daterange"] { - width: 220px; - line-height: 0; - height: 31px; - vertical-align: top; - margin-top: 2px; -} - -.daterangepicker .ranges { - width: 205px; -} - -.daterangepicker .ranges input { - width: 95px !important; -} - -td.details-control { - background: url('../images/details_open.png') no-repeat center center; - cursor: pointer; -} - -tr.shown td.details-control { - background: url('../images/details_close.png') no-repeat center center; -} - -.details table td { - word-wrap: break-word; - word-break: normal; - border-top: 1px solid #dddddd; -} - -.details table tr:first-child td { - border-top: none; -} - -.details table { - table-layout: fixed; - width: 100%; -} - -td.title { - width: 10%; -} - -table.dataTable tbody th,table.dataTable tbody td { - padding: 8px 10px; -} - -div.dataTables_length,div.dataTables_info { - display: inline; -} - -div.dataTables_paginate { - display: inline; - float: right; -} - -div.pagination-panel { - margin-right: 10px; -} - -input.pagination-panel-input { - width: 50px; -} - -#ict_res_table_div { - margin-top: 15px; -} - -#ict_res_table_div label { - font-weight: 100; -} - -.daterangepicker .daterangepicker_start_input label,.daterangepicker .daterangepicker_end_input label - { - color: #5b9bd1; -} - -.daterangepicker .ranges .input-mini { - color: #5b9bd1; -} - -.cancelBtn { - padding: 5px 10px 5px 10px; -} - -.btn:focus,.btn:active:focus,.btn.active:focus { - outline: 0; -} - -#ict_res_table_div table { - width: 100% !important; -} - -.control-label .required { - color: #e02222; - font-size: 12px; - padding-left: 2px; -} - -#ict_vim_table tbody tr{ - cursor:pointer; -} - - -/*卡片面板样式*/ -.animated-panel { - -webkit-animation-duration: .5s; - animation-duration: .5s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} - -.hpanel { - background-color: none; - border: none; - box-shadow: none; - margin-bottom: 25px; - -} - -.hpanel .panel-body { - border: 1px solid #e4e5e7; - border-radius: 2px; - padding: 20px; - position: relative; -} -.h-200 { - min-height: 220px; -} - -.m-t-xl { - margin-top: 40px; -} - -.m-t-xl div { - margin-bottom: 15px; -} - -.text-success { - color: #0d638f; -} -.hpanel > .panel-footer { - color: inherit; - border: 1px solid #e4e5e7; - border-top: none; - font-size: 90%; - background: #f7f9fa; - height:40px; - padding: 5px 15px; -} -.color_cloud{ - color:#ccc; -} -.stats-title{ - -} - -h3{ - margin-top: 10px; - margin-bottom: 40px; - font-weight: 200; -} - -.blue-font{ - color:#428bca; -} - -.hpanel > .panel-footer .pull-right a{ - margin-left: 5px; -} - -.hpanel > .panel-footer .pull-right .btn{ - min-width: 30px !important; -} - -.font-bold { - font-weight: 600; - margin-bottom: 15px; -} - -.hpanel_show{ - background-color: #f7f9fa; -} - -.vnfm-padding { - padding-left: 0; -} \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/hostMirror.html b/nsoc-iui/src/main/resources/webroot/nsoc/hostMirror.html deleted file mode 100644 index 29503035..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/hostMirror.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - - - - - - - - -
-
-
- -
-
-
-
- -
-
-
-
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/i18n/nfv-nso-iui-i18n-en-US.properties b/nsoc-iui/src/main/resources/webroot/nsoc/i18n/nfv-nso-iui-i18n-en-US.properties deleted file mode 100644 index 77d757c4..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/i18n/nfv-nso-iui-i18n-en-US.properties +++ /dev/null @@ -1,316 +0,0 @@ -# -# Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -//table -nfv-nso-iui-table-sLengthMenu=View _MENU_ records -nfv-nso-iui-table-sZeroRecords=No matching records found -nfv-nso-iui-table-sInfo=Found total _TOTAL_ records -nfv-nso-iui-table-sInfoEmpty=No records found to show -nfv-nso-iui-table-sGroupActions=_TOTAL_ records selected: -nfv-nso-iui-table-sAjaxRequestGeneralError=Could not complete request. Please check your internet connection. -nfv-nso-iui-table-sEmptyTable=No data available in table -nfv-nso-iui-table-sPrevious=Prev -nfv-nso-iui-table-sNext=Next -nfv-nso-iui-table-sPage=Page -nfv-nso-iui-table-sPageOf=of -nfv-nso-iui-table-sProcess=Processing... - -//common -nfv-nso-iui-common-tip=Tip: - -//package table colums -nfv-package-iui-title=Package -nfv-package-iui-field-name=Name -nfv-package-iui-field-type=Type -nfv-package-iui-field-size=Size -nfv-package-iui-field-createTime=Create Time -nfv-package-iui-field-status=Status -nfv-package-iui-field-operation=Operation - -nfv-package-iui-status-tip=Taps to Activate -nfv-package-iui-status-active=Activate -nfv-package-iui-status-activating=Activating -nfv-package-iui-status-inactive=Nonactivate -nfv-package-iui-status-deleting =Deleting -nfv-package-iui-status-deletefail = Delete Fail - -nfv-package-iui-message-upload-success=Csar package imported successfully. -nfv-package-iui-message-upload-fail=Csar package imported failed. -nfv-package-iui-message-delete-confirm=Do you want to delete the current package? -nfv-package-iui-message-delete-success=Csar package deleted successfully. -nfv-package-iui-message-upload-csar-exist=The package already exists, whether to re upload? -nfv-package-iui-message-upload-csar-deletionpending=This package is referenced in an instance. whether to re upload? - -nfv-package-iui-drop-zone-title=Drag & drop files here … -nfv-package-iui-drop-zone-selectBtn=Browse -nfv-package-iui-drop-zone-removeBtn=Remove -nfv-package-iui-drop-zone-uploadBtn=Upload - -//template table colums -nfv-template-iui-title=Service Template -nfv-template-iui-field-templatename=Name -nfv-template-iui-field-producttype=Type -nfv-template-iui-field-vendor=Vendor -nfv-template-iui-field-version=Version -nfv-template-iui-field-flavor=Flavor - -//template detail table colums -nfv-templateDetail-iui-title=Node Template -nfv-templateDetail-iui-field-nodeId=ID -nfv-templateDetail-iui-field-nodetypename=Name -nfv-templateDetail-iui-field-type=Type -nfv-templateDetail-iui-field-containedin=Contained In -nfv-templateDetail-iui-field-deployedon=Deployed On -nfv-templateDetail-iui-field-connectedto=Conected To -nfv-templateDetail-iui-field-virtuallinksto=Virtual Links To - -nfv-templateDetail-nodesTab-iui-tab-general=General -nfv-templateDetail-nodesTab-iui-tab-properties=Properties -nfv-templateDetail-nodesTab-iui-tab-relationShips=RelationShips -nfv-templateDetail-nodesTab-iui-field-key=Key -nfv-templateDetail-nodesTab-iui-field-value=Value -nfv-templateDetail-nodesTab-iui-field-property=Property -nfv-templateDetail-nodesTab-iui-field-sourceNodeName=Source Node -nfv-templateDetail-nodesTab-iui-field-targetNodeName=Target Node -nfv-templateDetail-nodesTab-iui-field-type=Type -nfv-templateDetail-nodesTab-iui-btn-close=Close -nfv-templateDetail-nodesTab-iui-title-nodeDetail=Node Detail - -nfv-templateDetail-executionTab-iui-field-currentStepName=Name -nfv-templateDetail-executionTab-iui-field-currentStepStatus=Status -nfv-templateDetail-executionTab-iui-field-currentStepDesc=Description -nfv-templateDetail-executionTab-iui-field-executionTime=Execution Time - -//topo -nfv-topology-iui-vnf-tip=Click to view the nested topology -nfv-topology-iui-btn-return-tip=Return -nfv-topology-iui-message-error=Query Topology Information failed. - -//virtual application table colums -nfv-virtualApplication-iui-title=Lifecycle -nfv-virtualApplication-iui-field-name=Name -nfv-virtualApplication-iui-field-template=Template -nfv-virtualApplication-iui-field-createDate=Create Time -nfv-virtualApplication-iui-field-status=Status -nfv-virtualApplication-iui-field-updateDate=Update Time -nfv-virtualApplication-iui-field-action=Action -nfv-virtualApplication-iui-field-operation=Operation - -nfv-virtualApplication-iui-scale-field-type=Type -nfv-virtualApplication-iui-scale-field-num=Number -nfv-virtualApplication-iui-scale-field-name=Name -nfv-virtualApplication-iui-scale-field-operation=Operation - -nfv-virtualApplication-iui-operation-init=init -nfv-virtualApplication-iui-operation-conf=configure -nfv-virtualApplication-iui-operation-start=start -nfv-virtualApplication-iui-operation-stop=stop -nfv-virtualApplication-iui-operation-scaleIn=scale-in -nfv-virtualApplication-iui-operation-scaleOut=scale-out -nfv-virtualApplication-iui-operation-delete=delete - -nfv-virtualApplication-iui-status-normal=Deployed -nfv-virtualApplication-iui-status-finish=Finish -nfv-virtualApplication-iui-status-failed=Failed - -nfv-virtualApplication-iui-status-processing=Deploying -nfv-virtualApplication-iui-status-init=Deploying -nfv-virtualApplication-iui-status-conf=Configuring -nfv-virtualApplication-iui-status-start=Starting -nfv-virtualApplication-iui-status-stop=Stoping -nfv-virtualApplication-iui-status-scaleIn=Scaling in -nfv-virtualApplication-iui-status-scaleOut=Scaling out -nfv-virtualApplication-iui-status-execute=Executing -nfv-virtualApplication-iui-status-delete=Deleting - -nfv-virtualApplication-iui-text-title=Create Application -nfv-virtualApplication-iui-text-createVm=Create -nfv-virtualApplication-iui-text-name=Name -nfv-virtualApplication-iui-text-description=Description -nfv-virtualApplication-iui-text-template=Template -nfv-virtualApplication-iui-text-templateDes=Template Description -nfv-virtualApplication-iui-text-vnfm=VNFM -nfv-virtualApplication-iui-text-tab-basic=Basic Info -nfv-virtualApplication-iui-text-tab-flavor=Flavor Parameters -nfv-virtualApplication-iui-text-tab-operationParam=Operation Parameters - -nfv-virtualApplication-iui-text-flavor=Flavor -nfv-virtualApplication-iui-text-flavorDesc=Flavor Description -nfv-virtualApplication-iui-text-flavor-numberOfInstances=NumberOfInstances -nfv-virtualApplication-iui-text-flavor-refNodeFlavor=RefNodeFlavor -nfv-virtualApplication-iui-text-flavor-affinity=Affinity -nfv-virtualApplication-iui-text-flavor-redundancyModel=RedundancyModel -nfv-virtualApplication-iui-text-flavor-capability=Capability -nfv-virtualApplication-iui-text-input-planTitle=Plan - -nfv-virtualApplication-iui-text-scale-name=VNF Name -nfv-virtualApplication-iui-text-scale-oeprationType=Operation Type -nfv-virtualApplication-iui-text-scale-oeprationType-type=Type -nfv-virtualApplication-iui-text-scale-oeprationType-instance=Instance -nfv-virtualApplication-iui-text-scale-vduBtn-title=Add VDU -nfv-virtualApplication-iui-text-scale-vnf-title=VNF List -nfv-virtualApplication-iui-text-scale-vnf-name=VNF -nfv-virtualApplication-iui-text-scale-vnf-vduType=VDU Type -nfv-virtualApplication-iui-text-scale-vnf-num=Number -nfv-virtualApplication-iui-text-scale-vnf-vduInstance=VDU Instance -nfv-virtualApplication-iui-text-scale-vnf-numTip=Number -nfv-virtualApplication-iui-text-scale-vnf-nameTip=Name -nfv-virtualApplication-iui-text-scale-type-title=VDU Type -nfv-virtualApplication-iui-text-scale-instance-title=VDU Instance -nfv-virtualApplication-iui-text-scale-instance-cancelBtn=Cancel -nfv-virtualApplication-iui-text-scale-instance-confirmBtn=Confirm -nfv-virtualApplication-iui-text-scale-validate-message=The VNF is already selected -nfv-virtualApplication-iui-text-scale-out-modal-title=ScaleOut Parameters -nfv-virtualApplication-iui-text-scale-in-modal-title=ScaleIn Parameters - -nfv-virtualApplication-iui-text-createBtn=Create -nfv-virtualApplication-iui-text-cancelBtn=Cancel -nfv-virtualApplication-iui-text-confirmBtn=Confirm -nfv-virtualApplication-iui-text-previousBtn=Previous -nfv-virtualApplication-iui-text-nextBtn=Next -nfv-virtualApplication-iui-text-params=Parameters - -nfv-virtualApplication-iui-message-delete-confirm=Do you want to delete the current application? -nfv-virtualApplication-iui-message-delete-success=Application deleted successfully. -nfv-virtualApplication-iui-message-delete-fail = Application deleted failed. -nfv-virtualApplication-iui-message-create-success=Application created successfully. -nfv-virtualApplication-iui-message-create-fail=Application created failed. - -nfv-virtualApplication-iui-validate-instanceName=Please enter a name -nfv-virtualApplication-iui-validate-serviceTemplateName=Please select a service tempalte -nfv-virtualApplication-iui-validate-flavor=Please select a flavor -nfv-virtualApplication-iui-validate-vimId=Please select a VIM -nfv-virtualApplication-iui-validate-vnfmId=Please select a VNFM -nfv-virtualApplication-iui-validate-inputParam=This field is required -nfv-virtualApplication-iui-validate-noinputParam=Don't need to input parameters -nfv-virtualApplication-iui-validate-digits=Please enter only digits -nfv-virtualApplication-iui-validate-range=Please enter a value between {0} and {1} - -//virtual application detail table colums -nfv-virtualApplicationDetail-iui-field-nodeId=ID -nfv-virtualApplicationDetail-iui-field-nodeName=Name -nfv-virtualApplicationDetail-iui-field-nodeType=Node Type -nfv-virtualApplicationDetail-iui-field-templateType=Template Type -nfv-virtualApplicationDetail-iui-field-host=IP -nfv-virtualApplicationDetail-iui-field-createTime=Create Time - -nfv-virtualApplicationDetail-iui-field-currentStepName=Name -nfv-virtualApplicationDetail-iui-field-currentStepStatus=Status -nfv-virtualApplicationDetail-iui-field-percent=Progress -nfv-virtualApplicationDetail-iui-field-currentStepDesc=Description -nfv-virtualApplicationDetail-iui-field-executionTime=Execution Time - -nfv-virtualApplicationDetail-iui-text-events=Events -nfv-virtualApplicationDetail-iui-text-nodeDetail=Node Detail -nfv-virtualApplicationDetail-iui-btn-close=Close - -//host image table colums -nfv-host-iui-title=Image -nfv-host-iui-field-name=Name -nfv-host-iui-field-size=Size -nfv-host-iui-field-vimUser=Tenant -nfv-host-iui-field-createTime=Create Time -nfv-host-iui-field-status=Status -nfv-host-iui-field-progress=Progress -nfv-host-iui-field-operation=Operation - -nfv-host-iui-operation-delete=Delete - -nfv-host-iui-text-title=Upload Image -nfv-host-iui-text-uploadImage=Upload -nfv-host-iui-text-local=Local -nfv-host-iui-text-url=Url -nfv-host-iui-text-image=Image File -nfv-host-iui-text-imageurl=Image Url -nfv-host-iui-text-name=Image Name -nfv-host-iui-text-tenant=Tenant -nfv-host-iui-btn-upload=Upload -nfv-host-iui-btn-cancel=Cancel - -nfv-host-iui-validate-file=Please select a host file -nfv-host-iui-validate-hosturl-required=Please enter a url -nfv-host-iui-validate-hosturl-url=Please enter the right url -nfv-host-iui-validate-hostName=Please enter a host name -nfv-host-iui-validate-vim=Please select a vim - -nfv-host-iui-message-upload-success=Image upload successfully. -nfv-host-iui-message-upload-failed=Image upload fails. -nfv-host-iui-message-delete-confirm=Do you want to delete the current image? -nfv-host-iui-message-delete-success=Image deleted successfully. -nfv-host-iui-message-delete-failed=Image deleted fails. - -nfv-host-iui-progress-uploading=uploading -nfv-host-iui-progress-success=upload success -nfv-host-iui-progress-fail=upload failed - -//software image table colums -nfv-software-iui-title=Software Image -nfv-software-iui-field-name=Name -nfv-software-iui-field-size=Size -nfv-software-iui-field-type=Type -nfv-software-iui-field-version=Version -nfv-software-iui-field-location=Location -nfv-software-iui-field-createTime=Create Time -nfv-software-iui-field-operation=Operation - -nfv-software-iui-action-delete=Delete - -nfv-software-iui-text-title=Upload Image -nfv-software-iui-text-uploadImage=Upload -nfv-software-iui-text-image=Image File -nfv-software-iui-text-image-select=Browse -nfv-software-iui-text-image-remove=Remove -nfv-software-iui-text-type=Type -nfv-software-iui-text-version=Version -nfv-software-iui-btn-upload=Upload -nfv-software-iui-btn-cancel=Cancel - -nfv-software-iui-message-delete-confirm=Do you want to delete the current image? -nfv-software-iui-message-delete-success=Image deleted successfully. - -//vnfm -nfv-vnfm-iui-title=VNFM Manage -nfv-vnfm-iui-message-title=vnfm info -nfv-vnfm-iui-message-query-fail=Query vnfm failed. -nfv-vnfm-iui-message-save-success=Save successfully. -nfv-vnfm-iui-message-save-fail=Save failed. -nfv-vnfm-iui-message-update-success=Update successfully. -nfv-vnfm-iui-message-update-fail=Update failed. -nfv-vnfm-iui-message-delete-confirm=Do you want to delete the current vnfm? -nfv-vnfm-iui-message-delete-success=Vnfm deleted successfully. -nfv-vnfm-iui-message-delete-fail=Vnfm deleted failed. - -nfv-vnfm-iui-test-update=Modify vnfm info -nfv-vnfm-iui-text-register=Register vnfm info -nfv-vnfm-iui-text-name=Name -nfv-vnfm-iui-text-moc=Type -nfv-vnfm-iui-text-vendor=Vendor -nfv-vnfm-iui-text-userName=Username -nfv-vnfm-iui-text-password=Password -nfv-vnfm-iui-text-cancelBtn=cancel -nfv-vnfm-iui-text-saveBtn=save -nfv-vnfm-iui-text-registerBtn=Register -nfv-vnfm-iui-text-status-normal=Normal -nfv-vnfm-iui-text-status-fail=Alarm -nfv-vnfm-iui-text-total=Total -nfv-vnfm-iui-text-total-vnfm= of vnfm - -nfv-vnfm-iui-validate-name=Please enter a name -nfv-vnfm-iui-validate-moc=Please enter the vnfm type -nfv-vnfm-iui-validate-vim=Please select a VIM -nfv-vnfm-iui-validate-url-required=Please enter the URL -nfv-vnfm-iui-validate-url=Please enter the right URL -nfv-vnfm-iui-text-url-tip=Example: http://10.0.0.1 \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/i18n/nfv-nso-iui-i18n-zh-CN.properties b/nsoc-iui/src/main/resources/webroot/nsoc/i18n/nfv-nso-iui-i18n-zh-CN.properties deleted file mode 100644 index 961f7e60..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/i18n/nfv-nso-iui-i18n-zh-CN.properties +++ /dev/null @@ -1,316 +0,0 @@ -# -# Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -//表格相关 -nfv-nso-iui-table-sLengthMenu=每页 _MENU_ 条结果 -nfv-nso-iui-table-sZeroRecords=没有匹配结果 -nfv-nso-iui-table-sInfo=总共找到 _TOTAL_ 条结果 -nfv-nso-iui-table-sInfoEmpty=共 0 项 -nfv-nso-iui-table-sGroupActions=_TOTAL_ 条结果被选择: -nfv-nso-iui-table-sAjaxRequestGeneralError=不能完成请求,请检查您的网络连接情况。 -nfv-nso-iui-table-sEmptyTable=表中数据为空 -nfv-nso-iui-table-sPrevious=前页 -nfv-nso-iui-table-sNext=下页 -nfv-nso-iui-table-sPage=第 -nfv-nso-iui-table-sPageOf=页,总页数: -nfv-nso-iui-table-sProcess=处理中... - -//common -nfv-nso-iui-common-tip=提示: - -//包管理表格字段名称定义 -nfv-package-iui-title=包管理 -nfv-package-iui-field-name=名称 -nfv-package-iui-field-type=类型 -nfv-package-iui-field-size=大小 -nfv-package-iui-field-createTime=创建时间 -nfv-package-iui-field-status=状态 -nfv-package-iui-field-operation=操作 - -nfv-package-iui-status-tip=点击激活 -nfv-package-iui-status-active=激活 -nfv-package-iui-status-activating=激活中 -nfv-package-iui-status-inactive=未激活 -nfv-package-iui-status-deleting = 删除中 -nfv-package-iui-status-deletefail = 删除失败 - -nfv-package-iui-message-upload-success=包导入成功。 -nfv-package-iui-message-upload-fail=包导入失败。 -nfv-package-iui-message-delete-confirm=确定要删除当前包? -nfv-package-iui-message-delete-success=包删除成功。 -nfv-package-iui-message-upload-csar-exist=包已经存在,是否重新上传? -nfv-package-iui-message-upload-csar-deletionpending=实例中引用了此包,是否重新上传? - -nfv-package-iui-drop-zone-title=拖拽文件到这里 … -nfv-package-iui-drop-zone-selectBtn=选择 -nfv-package-iui-drop-zone-removeBtn=移除 -nfv-package-iui-drop-zone-uploadBtn=上传 - -//模板管理表格字段名称定义 -nfv-template-iui-title=模板管理 -nfv-template-iui-field-templatename=名称 -nfv-template-iui-field-producttype=类型 -nfv-template-iui-field-vendor=厂商 -nfv-template-iui-field-version=版本 -nfv-template-iui-field-flavor=规格 - -//模板明细表格字段名称定义 -nfv-templateDetail-iui-title=节点模板 -nfv-templateDetail-iui-field-nodeId=ID -nfv-templateDetail-iui-field-nodetypename=名称 -nfv-templateDetail-iui-field-type=类型 -nfv-templateDetail-iui-field-containedin=归属 -nfv-templateDetail-iui-field-deployedon=部署 -nfv-templateDetail-iui-field-connectedto=业务连接 -nfv-templateDetail-iui-field-virtuallinksto=网络连接 - -nfv-templateDetail-nodesTab-iui-tab-general=概况 -nfv-templateDetail-nodesTab-iui-tab-properties=属性 -nfv-templateDetail-nodesTab-iui-tab-relationShips=关系 -nfv-templateDetail-nodesTab-iui-field-key=关键字 -nfv-templateDetail-nodesTab-iui-field-value=值 -nfv-templateDetail-nodesTab-iui-field-property=属性 -nfv-templateDetail-nodesTab-iui-field-sourceNodeName=源节点 -nfv-templateDetail-nodesTab-iui-field-targetNodeName=目标节点 -nfv-templateDetail-nodesTab-iui-field-type=类型 -nfv-templateDetail-nodesTab-iui-btn-close=关闭 -nfv-templateDetail-nodesTab-iui-title-nodeDetail=节点详情 - -nfv-templateDetail-executionTab-iui-field-currentStepName=名称 -nfv-templateDetail-executionTab-iui-field-currentStepStatus=状态 -nfv-templateDetail-executionTab-iui-field-currentStepDesc=描述 -nfv-templateDetail-executionTab-iui-field-executionTime=执行时间 - -//topo -nfv-topology-iui-vnf-tip=点击查看嵌套拓扑图 -nfv-topology-iui-btn-return-tip=返回 -nfv-topology-iui-message-error=查询拓扑图模板信息失败 - -//虚拟应用表格字段名称定义 -nfv-virtualApplication-iui-title=生命周期管理 -nfv-virtualApplication-iui-field-name=名称 -nfv-virtualApplication-iui-field-template=模板 -nfv-virtualApplication-iui-field-createDate=创建时间 -nfv-virtualApplication-iui-field-status=状态 -nfv-virtualApplication-iui-field-updateDate=更新时间 -nfv-virtualApplication-iui-field-action=动作 -nfv-virtualApplication-iui-field-operation=操作 - -nfv-virtualApplication-iui-scale-field-type=类型 -nfv-virtualApplication-iui-scale-field-num=数量 -nfv-virtualApplication-iui-scale-field-name=名称 -nfv-virtualApplication-iui-scale-field-operation=操作 - -nfv-virtualApplication-iui-operation-init=部署 -nfv-virtualApplication-iui-operation-conf=配置 -nfv-virtualApplication-iui-operation-start=启动 -nfv-virtualApplication-iui-operation-stop=停止 -nfv-virtualApplication-iui-operation-scaleIn=缩容 -nfv-virtualApplication-iui-operation-scaleOut=扩容 -nfv-virtualApplication-iui-operation-delete=删除 - -nfv-virtualApplication-iui-status-normal=已部署 -nfv-virtualApplication-iui-status-finish=执行完成 -nfv-virtualApplication-iui-status-failed=执行失败 - -nfv-virtualApplication-iui-status-processing=部署中 -nfv-virtualApplication-iui-status-execute=执行中 -nfv-virtualApplication-iui-status-init=部署中 -nfv-virtualApplication-iui-status-conf=配置执行中 -nfv-virtualApplication-iui-status-start=启动执行中 -nfv-virtualApplication-iui-status-stop=停止执行中 -nfv-virtualApplication-iui-status-scaleIn=缩容执行中 -nfv-virtualApplication-iui-status-scaleOut=扩容执行中 -nfv-virtualApplication-iui-status-delete=删除执行中 - -nfv-virtualApplication-iui-text-title=创建应用 -nfv-virtualApplication-iui-text-createVm=创建应用 -nfv-virtualApplication-iui-text-name=名称 -nfv-virtualApplication-iui-text-description=描述 -nfv-virtualApplication-iui-text-template=模板 -nfv-virtualApplication-iui-text-templateDes=模板描述 -nfv-virtualApplication-iui-text-vnfm=VNFM -nfv-virtualApplication-iui-text-tab-basic=基本信息 -nfv-virtualApplication-iui-text-tab-flavor=规格参数 -nfv-virtualApplication-iui-text-tab-operationParam=输入参数 - -nfv-virtualApplication-iui-text-flavor=规格 -nfv-virtualApplication-iui-text-flavorDesc=规格描述 -nfv-virtualApplication-iui-text-flavor-numberOfInstances=实例数 -nfv-virtualApplication-iui-text-flavor-refNodeFlavor=引用规格 -nfv-virtualApplication-iui-text-flavor-affinity=亲和力 -nfv-virtualApplication-iui-text-flavor-redundancyModel=容灾模式 -nfv-virtualApplication-iui-text-flavor-capability=能力 -nfv-virtualApplication-iui-text-input-planTitle=Plan - -nfv-virtualApplication-iui-text-scale-name=VNF名称 -nfv-virtualApplication-iui-text-scale-oeprationType=操作类型 -nfv-virtualApplication-iui-text-scale-oeprationType-type=类型 -nfv-virtualApplication-iui-text-scale-oeprationType-instance=实例 -nfv-virtualApplication-iui-text-scale-vduBtn-title=添加VDU -nfv-virtualApplication-iui-text-scale-vnf-title=已选择的VNF -nfv-virtualApplication-iui-text-scale-vnf-name=VNF -nfv-virtualApplication-iui-text-scale-vnf-vduType=VDU类型 -nfv-virtualApplication-iui-text-scale-vnf-num=数量 -nfv-virtualApplication-iui-text-scale-vnf-vduInstance=VDU实例 -nfv-virtualApplication-iui-text-scale-vnf-numTip=实例数 -nfv-virtualApplication-iui-text-scale-vnf-nameTip=名称 -nfv-virtualApplication-iui-text-scale-type-title=VDU类型 -nfv-virtualApplication-iui-text-scale-instance-title=VDU实例 -nfv-virtualApplication-iui-text-scale-instance-cancelBtn=取消 -nfv-virtualApplication-iui-text-scale-instance-confirmBtn=确定 -nfv-virtualApplication-iui-text-scale-validate-message=该VNF已选择 -nfv-virtualApplication-iui-text-scale-out-modal-title=扩容参数 -nfv-virtualApplication-iui-text-scale-in-modal-title=缩容参数 - -nfv-virtualApplication-iui-text-createBtn=创建 -nfv-virtualApplication-iui-text-cancelBtn=取消 -nfv-virtualApplication-iui-text-previousBtn=上一步 -nfv-virtualApplication-iui-text-nextBtn=下一步 -nfv-virtualApplication-iui-text-confirmBtn=确定 -nfv-virtualApplication-iui-text-params=参数 - -nfv-virtualApplication-iui-message-delete-confirm=确定要删除当前应用? -nfv-virtualApplication-iui-message-delete-success=应用删除成功。 -nfv-virtualApplication-iui-message-delete-fail=应用删除失败。 -nfv-virtualApplication-iui-message-create-success=应用创建成功。 -nfv-virtualApplication-iui-message-create-fail=应用创建失败。 - -nfv-virtualApplication-iui-validate-instanceName=请输入名称 -nfv-virtualApplication-iui-validate-serviceTemplateName=请选择服务模板 -nfv-virtualApplication-iui-validate-flavor=请选择规格 -nfv-virtualApplication-iui-validate-vimId=请选择VIM -nfv-virtualApplication-iui-validate-vnfmId=请选择VNFM -nfv-virtualApplication-iui-validate-inputParam=请输入参数 -nfv-virtualApplication-iui-validate-noinputParam=无需输入参数 -nfv-virtualApplication-iui-validate-digits=只能输入整数 -nfv-virtualApplication-iui-validate-range=请输入在 {0} 和 {1} 之间的值 - -//节点明细表格字段名称定义 -nfv-virtualApplicationDetail-iui-field-nodeId=ID -nfv-virtualApplicationDetail-iui-field-nodeName=名称 -nfv-virtualApplicationDetail-iui-field-nodeType=节点类型 -nfv-virtualApplicationDetail-iui-field-templateType=模板类型 -nfv-virtualApplicationDetail-iui-field-host=IP -nfv-virtualApplicationDetail-iui-field-createTime=创建时间 - -nfv-virtualApplicationDetail-iui-field-currentStepName=名称 -nfv-virtualApplicationDetail-iui-field-currentStepStatus=状态 -nfv-virtualApplicationDetail-iui-field-percent=当前进度 -nfv-virtualApplicationDetail-iui-field-currentStepDesc=描述 -nfv-virtualApplicationDetail-iui-field-executionTime=执行时间 - -nfv-virtualApplicationDetail-iui-text-events=事件 -nfv-virtualApplicationDetail-iui-text-nodeDetail=节点详情 -nfv-virtualApplicationDetail-iui-btn-close=关闭 - -//主机镜像表格字段名称定义 -nfv-host-iui-title=主机镜像 -nfv-host-iui-field-name=名称 -nfv-host-iui-field-size=大小 -nfv-host-iui-field-vimUser=租户 -nfv-host-iui-field-createTime=创建时间 -nfv-host-iui-field-status=状态 -nfv-host-iui-field-progress=进度 -nfv-host-iui-field-operation=操作 - -nfv-host-iui-operation-delete=删除 - -nfv-host-iui-text-title=上传镜像 -nfv-host-iui-text-uploadImage=上传镜像 -nfv-host-iui-text-local=本地上传 -nfv-host-iui-text-url=URL上传 -nfv-host-iui-text-image=镜像文件 -nfv-host-iui-text-imageurl=镜像URL -nfv-host-iui-text-name=镜像名称 -nfv-host-iui-text-tenant=租户 -nfv-host-iui-btn-upload=上传 -nfv-host-iui-btn-cancel=取消 - -nfv-host-iui-validate-file=请选择镜像文件 -nfv-host-iui-validate-hosturl-required=请输入URL地址 -nfv-host-iui-validate-hosturl-url=请输入正确的URL地址 -nfv-host-iui-validate-hostName=请输入镜像名称 -nfv-host-iui-validate-vim=请选择VIM - -nfv-host-iui-message-upload-success=镜像上传成功。 -nfv-host-iui-message-upload-failed=镜像上传失败。 -nfv-host-iui-message-delete-confirm=确定要删除当前镜像? -nfv-host-iui-message-delete-success=镜像删除成功。 -nfv-host-iui-message-delete-failed=镜像删除失败。 - -nfv-host-iui-progress-uploading=上传中 -nfv-host-iui-progress-success=上传成功 -nfv-host-iui-progress-fail=上传失败 - -//软件镜像表格字段名称定义 -nfv-software-iui-title=软件镜像 -nfv-software-iui-field-name=名称 -nfv-software-iui-field-size=大小 -nfv-software-iui-field-type=类型 -nfv-software-iui-field-version=版本 -nfv-software-iui-field-location=位置 -nfv-software-iui-field-createTime=创建时间 -nfv-software-iui-field-operation=操作 - -nfv-software-iui-action-delete=删除 - -nfv-software-iui-text-title=上传镜像 -nfv-software-iui-text-uploadImage=上传镜像 -nfv-software-iui-text-image=镜像文件 -nfv-software-iui-text-image-select=选择 -nfv-software-iui-text-image-remove=移除 -nfv-software-iui-text-type=类型 -nfv-software-iui-text-version=版本 -nfv-software-iui-btn-upload=上传 -nfv-software-iui-btn-cancel=取消 - -nfv-software-iui-message-delete-confirm=确定要删除当前镜像? -nfv-software-iui-message-delete-success=镜像删除成功。 - -//vnfm -nfv-vnfm-iui-title=VNFM管理 -nfv-vnfm-iui-message-title=vnfm信息 -nfv-vnfm-iui-message-query-fail=查询vnfm失败。 -nfv-vnfm-iui-message-save-success=保存成功。 -nfv-vnfm-iui-message-save-fail=保存失败。 -nfv-vnfm-iui-message-update-success=修改成功。 -nfv-vnfm-iui-message-update-fail=修改失败。 -nfv-vnfm-iui-message-delete-confirm=确定删除所选vnfm信息? -nfv-vnfm-iui-message-delete-success=删除成功 -nfv-vnfm-iui-message-delete-fail=删除失败 - -nfv-vnfm-iui-test-update=修改vnfm信息 -nfv-vnfm-iui-text-register=注册vnfm信息 -nfv-vnfm-iui-text-name=名称 -nfv-vnfm-iui-text-moc=类型 -nfv-vnfm-iui-text-vendor=厂商 -nfv-vnfm-iui-text-userName=接入用户 -nfv-vnfm-iui-text-password=接入密码 -nfv-vnfm-iui-text-cancelBtn=取消 -nfv-vnfm-iui-text-saveBtn=保存 -nfv-vnfm-iui-text-registerBtn=注册vnfm -nfv-vnfm-iui-text-status-normal=正常 -nfv-vnfm-iui-text-status-fail=报警 -nfv-vnfm-iui-text-total=共 -nfv-vnfm-iui-text-total-vnfm= vnfm - -nfv-vnfm-iui-validate-name=请输入名称 -nfv-vnfm-iui-validate-moc=请输入vnfm类型 -nfv-vnfm-iui-validate-vim=请选择VIM -nfv-vnfm-iui-validate-url-required=请输入URL -nfv-vnfm-iui-validate-url=请输入正确的URL -nfv-vnfm-iui-text-url-tip=例如:http://10.0.0.1 \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/images/down.png b/nsoc-iui/src/main/resources/webroot/nsoc/images/down.png deleted file mode 100644 index f7732ba8c3664ea70e0d4e07f4e9946bd7df31b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2938 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 diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/images/pointes_blue.png b/nsoc-iui/src/main/resources/webroot/nsoc/images/pointes_blue.png deleted file mode 100644 index cdba2dfce1a956c799912a8d1121808d23011d49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7411 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 Tap`!k1U%Hzhm_xc_WJ(;f>Znc diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/images/pointes_green.png b/nsoc-iui/src/main/resources/webroot/nsoc/images/pointes_green.png deleted file mode 100644 index 18ba67edf689de1306b05fbd027d0c4d3e229ced..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5329 zcmc&$XE5Av*Zv_zCxX=piwL5GB)X8W609hz_ps4I^d&(GDf+J7B5JUR2&*k3Hmp^G zC{d$sL|J{U`uacbx99!#JehfCt}|!mK6799eVsFN&3R*FsLMppLk|D|lOE)@F#u3~ zI}KCXbEhZG-C2&OiOvUN=?4G|7yk(=AR~(l0O$?ew6%?l9(wzG`#tpb5z^Dv7V`1+ zc6IY~0f6AKY?B}h6q!?fn(V>?(;8i`O7(mO2#cU;J6SFBSdoC^OI9{bT;ywd7(2&> zEQneA^C5aj_UqZ)%XRQuZ(mzQo7vo46Pzfnc^X1mT|F2%Xd-424|@@PED;yj#1a?t z+yN!yNLA%g!FVX79gmHm=79VY3IGstC(kd0pxV>{%c%&LV+D z(*cM`*OKZ6gla%BfvewEn!MAkv5fL20sPwKsaYwUH&-+6*I*MH4k znr-u}(sBezu)5OC3umQfid=*cY4m#;0f2|n|K<3mMgnnherC~?=ty z+L%6WilIIOup0J}#_SgshG~2{s6Ga?c$8QJV=&<1G{yGXI9;w4{r3<`G~(u=ra;bn zqfS+RK6(a*RZ*w+SlPK~^^2{j&;HHc}jKH!R-N83`M7AnJ`1Z(qVE&$2Cr%Wnv#9MPeIm;iJX zwAHZod=0^~HEfNFI-1#HAP~?D+mepqVMqj6;R^ByG60}jDDj$-R6tK^!5jcI{pPay zkOb2IMhgJ9bDv%Lcm|bIjI@-j% zy5sQ1f=8@_(|N%{5f-oL%x`fckb}21$B{$}rjCxdxI%09lC{nAc|wA&g}#OM2hkOg z&uk5}=5#M!%C(6Lqdq`Ci-xdK+Jl{xs}d}9&|+(s1TN)>+KDq?v`0a}%y{IyA^j!M z1bICMJrBq@M7qGFKz)GKElXc)Il&7*HBb8~0xgu9h)G~cfFcj@U*|FG%DC6F`gD0< zF%UL|l5Y9mL2K#q^>B;&hqYgFBSFmOYHf$mAax`6J4_xANNo(f2;bnuJkkO zZttaDrruC#8fgvbs$utX*YdFP8)G43&0|ihzN?(8%VVSfpKQ%+sq7tPFJ*E7UBmT; z`wfu|;{knt)CZlH5leJCT|3N6ll{6oUfcOQpg*KxQorC0Sq0kb3EZA?H=WnJ6P$m0 zq`B4gufLr6aDni!A+h~oe!pJ6c%9hVEBKsZFi71M?ak+eR+w^`@KAMha+4n~XfMFc zH%s&+d1SaY^nV`o@9yrDnm~`D@hfpkLs=d7I)={3zh%N{Q=AhBce zXiRS9aD{#)W98hc(yrsK=&sjpAAdI=8~?D1zseI||A6j5PoJjcf*FOcCG90&m(1b3 z@b`Y%TZ*8fdkF-#)WB4biC6L4;z#d72+0dPYYhW6gFE?|jhPeWKfQiTcB|o@mK_*e z&E&<~epMsg+FmDH%s%d(%P!6=Zre&A%Gd?kS=t?71)$YgVmZUIUY+CZ*1xcXPzPmo zHJAO~B^vc_>eTN--o0urY8IYWYZeI`4oeR^f0%QivQIdQ-)oscY;tZGo^_!5LbX7J zea7>wn#O}h@J#xd!t;t}W6w68lVMcn&|;)xvJ~`1dAEW#c`44l+A1yL%dYIjyfqG!gntoaPn6o2Q6g^9d+(Be`rAty-HQqeNu$<4?#w$x7=3onGUjAXc=3&oEN z_%Ck0%#4KIY0ityyI+N=yQ_*^%!VcJ-kelzb6E%1L9h_3AJ?W`kN;3a7@l)J!6tk(s{2?yS{H1&@k_YnP9vvC zv6WO;}-*kh1!zO%@vYMlJJB_728(z z&K!=(56npJsYBMV@GGEXd$bSwL&e@low~(Yb3^-~Cp!qQv9YPUn6A}j$a2B*BQ)8v zrSdM;{npU;sCA}t-i_D=UVE>*Q~vKm+;`%7KKFF>&?q`8u3C53qQ^JiU(eqS$qu(A zz>dnxFwH;3#)exagF?5MU+{CNOp%gSnrbA2%{{Ppp6)yvSbIJh&*Q|~(6SgdS*IHW z#pT3@7KWbRy+c}d_xJXksBCHZMCWCEJyrms?6Z&=;XRhQnh{jvV|9hO?bgB<@#&%` zp>syR-}io<_}Vj_9*)_eU4|ee2b5a^(9-!{xoYpRq~9_5+5C3=y3LrAFp}Jyb3lh; zym?M;_GPsV%KUTGT=9eAoNPl4wIAsd2(tcRx`*w3TP$3=FGmC9zow6|C*!xKi1D`T zO+MSgWT$aa%)N583N_s@pQ9N_rM3663z@KLu3F*0ZLqA;PZ|v0cW)i?8`&GVYWog> zC4F1r#XJ(5q^JNhgD^W(IV-b%#WBL}KH!1qFGTc(9ufdQmgQpNcQ`b%nuB5X*jL#Ob5i zgL{1zhokEZl<2;e3Pj14FR84gQn^EIM)&+M#dYnWEw z>n#9?%Yvklr4EU1DW8OQZA|V@Jh-SOd5H4F0 zt^*GWNrSuGIJOKTZa`h_WLUo*BWBgNy2(eGaCpv=y8_SYGJGYF3ZNDF3lNF{{(D5o zQvVeIZM1&@|F$)Jgnc_svjUbRd;FUW`gV`gi+x?A1*qlot)p43wU z^{7{s&C%U_&`cg84o+Vi9a_U|jn0SjhO(@7okw+;ES1ccyoYaf4K~WluluBiQu)_b z=;S-fu)Bl)#8xdi*DILWZ*MfecW-WT^e7#2A7|{TCPEdDxBDwi)NZ7w?>p?54W^f{ z6b02G1=WtLYnj`Bmx#pPU_O-ftEs;uSh;PwIWBl;!1w;EQgTCUeYD9bBXrtm$BLC` zU;wQd>f1lYlYJ4skM6S{lnvIaDy5R4%_GB@t>*BP?S{)@cpI;)-h%tdD%7+hTi>AZ z#oix6q~jP)1T@s9U>eIaDDeUNY`g6$%1r@vL|(Z!kwq+idfV?LeZTCVD;VdQ{Eooy zDmIqe4<84v59H~_0d0`$s-G{xU86qLRFWH}uT`vCj+|00DrR!3-CfC9Bh){e0^_wk zFqoay!{nKcNBi}~Q8@v+fa8Oy&Q{G~GIU|IkT9aA#mCL(R`za(H(vGK)J#{N?wiTM zr%RQFMC*8se-uR99~fLw8#(=a&Rsi1NU938|INO;M_FT$A#)QroXiLpH=mw)4U>I^ zoL_TQ_{u7uIzkxxHQCdyTB1*N*H;&7GxxjujYm8?)`o^v2iW5)Hm1_#`U?OY&-@37 z2sEx?c!)clFQ$60lr#K_-XgMFtlsL7EbWEZ(^KJAZjUB;TK>7$5N$btb;$VZa|_9<+C1mAieaiiy?&Ykzhe_iY&egeDMyLH_#d$ylk&R8g=?Zw4Zi9 zk0GjBCO?>DTEyd=a`>bd@ehz0x-k>pSM+p{s;K!w@U;GBA@7q(3iv$oP!4|#hI*3p)q-Nq^4x90I%W!_O3@g7V}y;G`{zNLNu z+DZ-@h^fn-l>A4RWm!|TTk{a1QF7v2BaRGhM_vAxlF8e2Tk|Y98>?N_jpr6!@~MkU zXnQb4p~u5ws&}E;U1H{Fa8FC7Xc+DSV#B1l+gCFz;?t#$QXVi6@oU0wCBqn091HY! zz=EO_7i2gXp)}>s87%=*hsKE_%F@JT3K5i+XV%>)EROr-8(18JZ0&eByQxR}DD+G-*;dVB(mtilipBHwfhm5E$NTzF25xpgW}Gr)hLo&s z`wNR^!9Y4|FLkO)Pr&$Kq&BV!CZQfw!}Xf!R=d;N@htJ;XvAipQ;t7Jhar~sp&Oj} zWn!b;c11f%-9cc?)qt38LGcmpX)Ik4x s{FT0(lKi{K|HzO3LSK{zPR;|;(;PI`LXjb-TO*)%$MANAmc#S^0SfUeY5)KL diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_asc.png b/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_asc.png deleted file mode 100644 index a88d7975fe9017e4e5f2289a94bd1ed66a5f59dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1118 zcmbVLO=#0l98awuV{uMt6P_}u4rcI3idKFP2SpU%ZJIE?RL`X zK?Oyo=*5GG2SxDYK=7akJqV&hrl{aWJa`y*5xh+1%i2y4V}gO?edPc9{r;a9vjc}) zn|Cxb4AYwFmvVG%_ui)U^y_4!ujsO!qzYuv8YUIR!Aw%KiWp=JrG#@>(I!s4#N7H->?w+cxsH2#GA};A>g8lyFDGPKh!5)vuP_{)}*83+N zJUBU!S0_i+E{*Lu1iGsNB``2iK-CyCU7?y_mv{xb_pUh>ESZqe1Y2{eAZLMSIT%EO zFrdOH1W^=3p>Qk~I{J+k#s5zQ@j{%aIA!l^GQjJ zqA1Uc2%!{8qBKfMNh#9DCnKS_*uZ8?mnf!+8@f8xtz#prVg=E`3bCBLWsNmDAX~PG z<(4fQh=UOzE2?gKXRkc9XeI3Er?HlHECVd%SI}3`hy1_du3@$R$r(qT;k@Sft63UX zv;)2Ea_iH>^6+4jPK-lGM{Zw37Tz>~~zlHzO61x51(V4jcaKrcIVDG$-d>)z}S|7f!xxYhfUE}Kj zug_h&HZN}go22$5Ym1}P8~vYNx7-~$TWFJ;_nh!wFYSAQJF{CCo=xpK8^7?iY1^!H haOA^1D_`VC7fU=jcT diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_asc_disabled.png b/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_asc_disabled.png deleted file mode 100644 index fb11dfe24a6c564cb7ddf8bc96703ebb121df1e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S0wixl{&NRX(Vi}jAsXkC6BcOhI9!^3NY?Do zDX;f`c1`y6n0RgO@$!H7chZT&|Jn0dmaqO^XNm-CGtk!Ur<_=Jws3;%W$<+Mb6Mw<&;$T1GdZXL diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_both.png b/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_both.png deleted file mode 100644 index 18670406bc01ab2721781822dd6478917745ff54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1136 zcmaJ>O=#0l98WD1Hz^GK+C=e@fhgE~b#2$Ux^~T`1v5)mw1NlIe}zC z+ge9alrMQeN|SYi`>tC{zIG}!O_oO7k;UC8kBf>8sknx65F`zy2d1H-4fel=trX>@ z^-LCL<%6P%3`TJ=Ov$hao1$9VN|vJbLJV@SM>nJN{L>dS(6uOiBq(#Tm4F5Pz>p2Q zhq^NAP_G)%=(c^JwImV&17Zb~j6Ty5OHq1RS0sD)n5Dro1ouYi-$7;N6i6T&f*`~B zRW8JV5YO;|=5RQ?2M8R`v7Es2f}anI0YT(Au=3Evo2})=wA8uci&#;*fUzaAY_V8m ziU9`MJuDxIL|hF)@DqgJ88op{@|#XmML~j&YU>u(kqKNyC5HxZlqQk>PQkENWld+L zOr&6JNwHX-;oOueKw17j)G$`j4o<^A@%~fT$qZVMO+yC_*eYpUzR7iEi3uAj7}*(w z`YKgS6%a;F0a+l?9R#wX>ZWTi<7HV)nhsV>6(*%9O%xbi*F?TK!383rh#(|*p6}q} zd?z25;!?0(hzA2Li3(Rj>VN@FT;Xbexbdo7cN7eZc$T28pMYAYjSR4yvZz;&C0tc+ zg{xJMrKKvDCBd+6WB+P&<%mp=yImbyVyq56G|9BvWUP^I>ms=lb4e+lDSgg;Us`JO zKB6{wH+j~F#-A4FY3K3qm~Z6m@V6}oQ%8?p-E$dw`#0C$PJfmCV8)v}3>Ydha%`fZ zJk~G*M^A3LGk$Td;R`icF67R~`sBOHv)Hlqlc%$jy~9_oZJcNyWxkbb_O9u#|7hLF z-<-NMLzh3S0YA@8gd1Pt(Df|3@16Y-n=aSvsF@AkI`ioeFg>&H3bXU&vBnE6gIChkL+(Ey+0iB4Z$Eze7t_CX>Hq)$ diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_desc.png b/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_desc.png deleted file mode 100644 index def071ed5afd264a036f6d9e75856366fd6ad153..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1127 zcmbVMOK8+U7*1U&zKRu5sR)h{1;yRWWV^4}ShvZpU2*HWU2!iy(qy)cZ89;Lb+`3m zMbruv!GjkO!3qksP*5)lD)k}=Dp*ht-n@8G5m8XoN!zU+ih_Y;=AZe$?|)|~*Ri8v z(dtDU$2DZy)jV65`|pB!_H}d7Cv0h=sUqzpC0fy3%q0!dg+a#Bx^W(BM*oq=xP{{a zC9_bZ#q2IgCss)FbwX9kVQ7wPX{|b%-is;d!ri7V^Y8E8=YeU+{JuyQW*r6hnC$~D z?i}bS=mWia!r)uCftISo2rNuBP__DOPpZoN6tBeg{;|M=DHYl)^V3chvpJv;7lTL$ z26Y&PAc{gL+#HL=wg3?#C_qs_Vi3iouqZ(YW*(kdbB&UeSJN}Lm?ZN(lsb|iR4SEF zB^)Adw}29fgwG+0L8cM(`faLJgSNN6#-L(PcTI+l@K3y+Xf(g*^61+0|J+O6zN2mb?UNGh6GU@A{1+eF%d@N2(^XdVmhis(y25|iAr;gV=io5OsYy0 zB}Gv|2&GUGrBPB%s*yG^841Ug8a88lRI_zlvuiTDGuXsmv6A9qjS{y&NMEf3ay^6+ zuZK85>5PD^rkl1e`{kLAR>iJ)6dP%mSYRr@k~xQcDE=$%X{_--ITM&Og5Ml}G)wJ> zb)dhUZG9%p4iC23#JFrUCcmwHz{cugMoku~ue-kg{Mj0~%`FeCcz9jAdg}QET-kSG za`+2B_+lRTaeAVz>E`F1pN7h>B=BbGqcz13d%ywZR&4OjkNNrF_U}#EcXDGa@V52B z>JnIW7#s%CHi diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_desc_disabled.png b/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_desc_disabled.png deleted file mode 100644 index c9fdd8a1502fda301682e907afde86bc450da10f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 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 Y06eiBG 2006-07-02 08:09:04.423 -// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18 -commonUtil.parseDate = function( dateObj , format){ - var o = { - "M+" : dateObj.getMonth()+1, //month - "d+" : dateObj.getDate(), //day - "h+" : dateObj.getHours(), //hour - "m+" : dateObj.getMinutes(), //minute - "s+" : dateObj.getSeconds(), //second - "q+" : Math.floor((dateObj.getMonth()+3)/3), //quarter - "S" : dateObj.getMilliseconds() //millisecond - } - if(/(y+)/.test(format)) format=format.replace(RegExp.$1, - (dateObj.getFullYear()+"").substr(4 - RegExp.$1.length)); - for(var k in o) - if(new RegExp("("+ k +")").test(format)) - format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : - ("00"+ o[k]).substr((""+ o[k]).length)); - return format; -}; - -//tooltip -commonUtil.showMessage = function(message, type) { - $.growl({ - icon: "fa fa-envelope-o fa-lg", - title: "  " + $.i18n.prop("nfv-nso-iui-common-tip"), - message: message - },{ - type: type - }); -}; - -commonUtil.registerCometdMessage = function(url, channel, callback) { - var cometd = new $.Cometd(); - var cometdURL = location.protocol + "//" + location.host + url; - cometd.configure({ - url : cometdURL, - logLevel : "info" - }); - // unregister websocket transport, use long-polling transport - cometd.unregisterTransport('websocket'); - // store channel object parameters(this object include channel and callback function), start from arguments[1] - var _args = arguments; - - cometd.addListener("/meta/handshake", function(handshake){ - if(handshake.successful === true) { - cometd.batch(function() { - //subscribe channel - cometd.subscribe(channel, function(message){ - callback.call(this, message.data); - }); - }); - } - }); - cometd.handshake(); -} - -commonUtil.format = function() { - if(arguments.length == 0) { - return null; - } - var str = arguments[0]; - for(var i=0; i ' + oLang.sPage + ' ' + - '' + - '' + - ' ' + - oLang.sPageOf + ' ' + - '' - ); - - var els = $('a', nPaging); - - $(els[0]).bind('click.DT', { action: "previous" }, fnClickHandler ); - $(els[1]).bind('click.DT', { action: "next" }, fnClickHandler); - - $('.pagination-panel-input', nPaging).bind('change.DT', function(e) { - var oPaging = oSettings.oInstance.fnPagingInfo(); - e.preventDefault(); - var page = parseInt($(this).val()); - if (page > 0 && page < oPaging.iTotalPages) { - if ( oSettings.oApi._fnPageChange(oSettings, page-1) ) { - fnDraw( oSettings ); - } - } else { - $(this).val(oPaging.iPage + 1); - } - }); - - $('.pagination-panel-input', nPaging).bind('keypress.DT', function(e) { - var oPaging = oSettings.oInstance.fnPagingInfo(); - if (e.which == 13) { - var page = parseInt($(this).val()); - if (page > 0 && page < oSettings.oInstance.fnPagingInfo().iTotalPages) { - if ( oSettings.oApi._fnPageChange(oSettings, page-1) ) { - fnDraw( oSettings ); - } - } else { - $(this).val(oPaging.iPage + 1); - } - e.preventDefault(); - } - }); - }, - - "fnUpdate": function ( oSettings, fnDraw ) { - var iListLength = 5; - var oPaging = oSettings.oInstance.fnPagingInfo(); - var an = oSettings.aanFeatures.p; - var i, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2); - - if ( oPaging.iTotalPages < iListLength) { - iStart = 1; - iEnd = oPaging.iTotalPages; - } - else if ( oPaging.iPage <= iHalf ) { - iStart = 1; - iEnd = iListLength; - } else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) { - iStart = oPaging.iTotalPages - iListLength + 1; - iEnd = oPaging.iTotalPages; - } else { - iStart = oPaging.iPage - iHalf + 1; - iEnd = iStart + iListLength - 1; - } - - - for ( i=0, iLen=an.length ; i'+j+'') - .insertBefore( $('li.next:first', an[i])[0] ) - .bind('click', function (e) { - e.preventDefault(); - oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength; - fnDraw( oSettings ); - } ); - } - - // Add / remove disabled classes from the static elements - if ( oPaging.iPage === 0 ) { - $('a.prev', an[i]).addClass('disabled'); - } else { - $('a.prev', an[i]).removeClass('disabled'); - } - - if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) { - $('a.next', an[i]).addClass('disabled'); - } else { - $('a.next', an[i]).removeClass('disabled'); - } - } - } - } -} ); - -serverPageTable.getRestPara = function( cond , tableSetting ){ - var pageNo=tableSetting._iDisplayStart/tableSetting._iDisplayLength+1; - var pageSize = tableSetting._iDisplayLength; - var queryParameter={"pageNo":pageNo,"pageSize":tableSetting._iDisplayLength,groupId:["it.group.database=02","it.group.server=01"]}, - newData={"data":JSON.stringify(queryParameter)}; - //put the pageinfo in cond if there is a pageinfo - var pageInfo = vm.logInfo[vm.logType].pageInfo; - if(pageInfo != null && serverPageTable.perpagenumber == pageSize){ - cond.idEnd = pageInfo.pageStart[pageNo - 1]; - cond.idStart = pageInfo.pageStart[pageNo]; - if(!cond.idStart){ //the last page - cond.idStart = 0; - } - - }else{ - delete cond.idStart; - delete cond.idEnd; - vm.logInfo[vm.logType].pageInfo = null; - pageNo = 1; - tableSetting._iDisplayStart = 0; - } - var data = { - cond:JSON.stringify(cond), - perpagenumber:pageSize, - pageNo:pageNo, - needPageInfo:vm.logInfo[vm.logType].pageInfo == null - }; - serverPageTable.perpagenumber = pageSize; - return data; -}; - - - -serverPageTable.initDataTable = function( setting ,cond , divId) { - //transform colomn - var column = setting.columns; - //empty table - $('#'+ divId).children().remove(); - var tableId = setting.tableId; - var tableEleStr = '' - + '' - +'' - + '' - + '' - +'' - +'' - +'
'; - $('#'+ divId).append(tableEleStr); - //$('#'+ tableId).append(' '); - var trEle = $('#'+ tableId + ' > thead >tr'); - //var dataTableColumn = []; - for ( var one in column){ - var th = '' + column[one].name + ''; - trEle.append(th); - } - var table = $("#" + tableId).dataTable({ - //"sDom" : "tr<'row'<'col-md-6 col-sm-12'><'col-md-6 col-sm-12'pli>>", // datatable layout - //"sDom" : "<'row'<'col-md-12 col-sm-12'lip>r><'table-scrollable't>>", - "sDom": '<"top"rt><"bottom"lip>', - "oLanguage": setting.language,//language - //"bJQueryUI": true, - "bPaginate": setting.paginate,// page button - "bFilter": false,// search bar - "bAutoWidth":true,//automatically set colum width - "bLengthChange": true,// record number in each row - "iDisplayLength": 10,// row number in each page - "bSort": setting.sort ? true : false,// sort - "bInfo": setting.info,// Showing 1 to 10 of 23 entries - "bWidth": true, - "bScrollCollapse": true, - "sPaginationType": "bootstrap_extended", // page, a total of two kinds of style, another one is two_button - "bProcessing": true, - "bServerSide": false, - "bDestroy": true, - "bSortCellsTop": true, - "sAjaxSource": setting.restUrl, - "aoColumns": setting.columns, - "aoColumnDefs": [ - { - sDefaultContent: '', - aTargets: [ '_all' ] - } - ], - "fnServerData": function (sSource, aoData, fnCallback, oSettings) { - oSettings.jqXHR = $.ajax({ - "type": 'get', - "url": sSource, - "dataType": "json", - //"data":serverPageTable.getRestPara(cond,oSettings), - "success": function (resp) { - oSettings.iDraw = oSettings.iDraw + 1; - - resp = resp || []; - var data = {}; - data.aaData = resp; - var totalCounts = resp.length; - - data.iTotalRecords = totalCounts; - data.iTotalDisplayRecords = totalCounts; - data.sEcho = oSettings; - fnCallback(data); - }, - "error": function(resp) { - var data = {}; - data.aaData = []; - var totalCounts = 0; - - data.iTotalRecords = totalCounts; - data.iTotalDisplayRecords = totalCounts; - data.sEcho = oSettings; - fnCallback(data); - } - }); - } - }); -}; - -serverPageTable.initTableWithData = function( setting , divId , tableData) { - //transform colomn - var column = setting.columns; - //empty table - $('#'+ divId).children().remove(); - var tableId = setting.tableId; - var tableEleStr = '' - + '' - +'' - + '' - + '' - +'' - +'' - +'
'; - $('#'+ divId).append(tableEleStr); - var trEle = $('#'+ tableId + ' > thead >tr'); - for ( var one in column){ - var th = '' + column[one].name + ''; - trEle.append(th); - } - var table = $("#" + tableId).dataTable({ - "sDom" : "<'row'<'col-md-12 col-sm-12'lip>r>>", - "oLanguage": setting.language,//language - //"bJQueryUI": true, - "bPaginate": setting.paginate,// page button - "bFilter": false,// search bar - "bAutoWidth":true,//automatically set the column width - "bLengthChange": true,// record number in each row - "iDisplayLength": 10,// row number in each page - "bSort": setting.sort ? true : false,// sort - "bInfo": setting.info,// Showing 1 to 10 of 23 entries - "bWidth": true, - "bScrollCollapse": true, - "sPaginationType": "bootstrap_extended", // page, a total of two kinds of style, another one is two_button - "bProcessing": false, - "bServerSide": false, - "bDestroy": true, - "bSortCellsTop": true, - "sAjaxSource": tableData, - "aoColumns": setting.columns, - "fnServerData": function (sSource, aoData, fnCallback, oSettings) { - oSettings.iDraw = oSettings.iDraw + 1; - var resp = tableData || []; - var data = {}; - data.aaData = resp; - var totalCounts = resp.length; - - data.iTotalRecords = totalCounts; - data.iTotalDisplayRecords = totalCounts; - data.sEcho = oSettings; - fnCallback(data); - } - }); -}; - - -serverPageTable.initDataTableForEvent = function( setting ,cond , divId) { - //transform colomn - var column = setting.columns; - //empty table - $('#'+ divId).children().remove(); - var tableId = setting.tableId; - var tableEleStr = '' - + '' - +'' - + '' - + '' - +'' - +'' - +'
'; - $('#'+ divId).append(tableEleStr); - var trEle = $('#'+ tableId + ' > thead >tr'); - for ( var one in column){ - var th = '' + column[one].name + ''; - trEle.append(th); - } - var table = $("#" + tableId).dataTable({ - "sDom": '<"top"rt><"bottom"lip>', - "oLanguage": setting.language,//language - //"bJQueryUI": true, - "bPaginate": setting.paginate,// page button - "bFilter": false,// search bar - "bAutoWidth":true,//automatically set the column width - "bLengthChange": true,// record number in each row - "iDisplayLength": 10,// row number in each page - "bSort": setting.sort ? true : false,// 排序 - "bInfo": setting.info,// Showing 1 to 10 of 23 entries - "bWidth": true, - "bScrollCollapse": true, - "sPaginationType": "bootstrap_extended", // page, a total of two kinds of style, another one is two_button - "bProcessing": true, - "bServerSide": false, - "bDestroy": true, - "bSortCellsTop": true, - "sAjaxSource": setting.restUrl, - "aoColumns": setting.columns, - "aoColumnDefs": [ - { - sDefaultContent: '', - aTargets: [ '_all' ] - } - ], - "fnServerData": function (sSource, aoData, fnCallback, oSettings) { - oSettings.jqXHR = $.ajax({ - "type": 'get', - "url": sSource, - "dataType": "json", - //"data":serverPageTable.getRestPara(cond,oSettings), - "success": function (resp) { - oSettings.iDraw = oSettings.iDraw + 1; - - var result = []; - for(var i=0;i  " - +$.i18n.prop("nfv-nso-iui-table-sProcess")+"", - "sLengthMenu": $.i18n.prop("nfv-nso-iui-table-sLengthMenu"), - "sZeroRecords": $.i18n.prop("nfv-nso-iui-table-sZeroRecords"), - "sInfo": " " + $.i18n.prop("nfv-nso-iui-table-sInfo"), - "sInfoEmpty": $.i18n.prop("nfv-nso-iui-table-sInfoEmpty"), - "sGroupActions": $.i18n.prop("nfv-nso-iui-table-sGroupActions"), - "sAjaxRequestGeneralError":$.i18n.prop("nfv-nso-iui-table-sAjaxRequestGeneralError"), - "sEmptyTable": $.i18n.prop("nfv-nso-iui-table-sEmptyTable"), - "oPaginate": { - "sPrevious": $.i18n.prop("nfv-nso-iui-table-sPrevious"), - "sNext": $.i18n.prop("nfv-nso-iui-table-sNext"), - "sPage": $.i18n.prop("nfv-nso-iui-table-sPage"), - "sPageOf": $.i18n.prop("nfv-nso-iui-table-sPageOf") - } - }, - $restUrl : { - uploadHostImage: '/api/nsoc/v1/hostimages', - queryHostInfoUrl: "/api/nsoc/v1/hostimages", - delHostUrl: "/api/nsoc/v1/hostimages/", - updateHostUrl: "/api/nsoc/v1/hostimages/", - queryVimInfoUrl : "/api/roc/v1/resource/vims" - }, - $initTable: function() { - var setting = { - language : vm.$language, - paginate : true, - info : true, - columns : vm.$hostTableFields.table, - restUrl : vm.$restUrl.queryHostInfoUrl, - tableId : vm.$tableId - }; - serverPageTable.initDataTable(setting, {}, vm.$tableId + '_div'); - }, - uploadHostImage : { - vimSelectItems : [], - tenant : "", - localVisible : true, - /*$initUpload : function() { - var fileLanguage = getLanguage(); - if (lang == "zh-CN") { - fileLanguage = "zh"; - } else { - fileLanguage = "en"; - } - $("#hostfile").fileinput({ - language: fileLanguage, - showPreview : false, - showUpload : false, - uploadExtraData : function(){ - var index = $("#vim").val(); - var selectVim = vm.uploadHostImage.vimSelectItems[index]; - var vimid = selectVim.oid; - var extraData = { - url : $("#hosturl").val(), - name : $("#hostName").val(), - vimid : vimid - } - return extraData; - }, - uploadUrl : vm.$restUrl.uploadHostImage, - layoutTemplates : {progress : ''}, //hide progress - ajaxSettings : { - success : function(resp) { - commonUtil.showMessage($.i18n.prop("nfv-host-iui-message-upload-success"), "success"); - refreshByCond(); - }, - error : function(resp) { - commonUtil.showMessage($.i18n.prop("nfv-host-iui-message-upload-failed"), "warning"); - } - } - }); - },*/ - $initUpload : function() { - var maxChunkSize = 20000000; //20M - $("#hostForm").fileupload({ - url : vm.$restUrl.uploadHostImage, - maxNumberOfFiles : 1, - maxChunkSize : maxChunkSize, - autoUpload : false, - add : function(e, data) { - $("#fileName").text(data.files[0].name); - $("#fileremove").attr("disabled", false); - - $("#uploadBtn").remove(); - $('').insertAfter('.fileinput-upload-button'); - $('#confirm').on('click', function(e){ - e.preventDefault(); - - var fileName = $('.file-caption-name').eq(0).text(); - var existPackage = pmUtil.getExistPackageByName(fileName); - if(existPackage == 0){//0:package is not exist - $('a.fileinput-upload-button').trigger('click'); - return; - } - var msg = ""; - if(existPackage == 1){//1:package not exist, instance reference this csar - msg = $.i18n.prop("nfv-package-iui-message-upload-csar-deletionpending"); - } - if(existPackage == 2){//2:package exist - msg = $.i18n.prop("nfv-package-iui-message-upload-csar-exist"); - } - - bootbox.confirm(msg, function(result){ - if(result) { - $('a.fileinput-upload-button').trigger('click'); - } - }); - }); - },*/ - $initUpload : function() { - $("#fileupload").fileupload({ - url : vm.$restUrl.uploadPackageUrl, - dropZone: $('#dropzone'), - maxNumberOfFiles : 1, - maxChunkSize : 20000000, //20M - autoUpload : false, - add : function(e, data) { - $("#bar").css('width', '0%'); - $("#persent").text('0%'); - $("#fileName").text(data.files[0].name); - $("#fileremove").attr("disabled", false); - $("#filesubmit").attr("disabled", false); - - $("#filesubmit").remove(); - $(''; -}; - -vmAppUtil.statusRender = function(obj) { - var attr = 'class="label label-success"'; - var status = $.i18n.prop("nfv-virtualApplication-iui-status-" + obj.aData.instanceStatus); - if (obj.aData.instanceStatus == "failed") { - attr = 'class="label label-danger"'; - } else if (obj.aData.instanceStatus == "processing") { - status = $.i18n.prop("nfv-virtualApplication-iui-status-" + obj.aData.instanceOperating); - if (status.indexOf("nfv-virtualApplication") > -1) { - status = $.i18n.prop("nfv-virtualApplication-iui-status-execute"); - } - } - return '' + status + ''; -}; - -vmAppUtil.delRender = function(obj) { - return ''; -}; - -vmAppUtil.dateRender = function(obj) { - var date = new Date(obj.aData[obj.mDataProp]); - return commonUtil.parseDate(date, "yyyy-MM-dd hh:mm:ss"); -}; - -vmAppUtil.deleteVmApp = function(instanceId, servicetemplateid) { - bootbox.confirm($.i18n.prop("nfv-virtualApplication-iui-message-delete-confirm"), function(result){ - if(result) { - var url = vm.$restUrl.deleteAppinstancesUrl + instanceId; - $.ajax({ - type : "delete", - url : url, - dataType : "json", - success : function(resp) { - if(resp.deleteresult == "true"){ - var packageurl = vm.$restUrl.delInstanceTemplateUrl + servicetemplateid; - commonUtil.delete(packageurl, function(resp) { - refreshByCond(); - }); - }else{ - commonUtil.showMessage($.i18n.prop("nfv-virtualApplication-iui-message-delete-fail"), vmAppUtil.TYPE_DANGER); - refreshByCond(); - } - }, - error : function() { - commonUtil.showMessage($.i18n.prop("nfv-virtualApplication-iui-message-delete-fail"), vmAppUtil.TYPE_DANGER); - refreshByCond(); - } - }); - } - }); -}; - -vmAppUtil.execute = function(row) { - var oSelect = $("tbody tr select").eq(row); - var operation = oSelect.find("option:selected").val(); - if (operation) { - var table = $('#' + vm.$tableId).dataTable(); - var templateId = table.fnGetData(row)["serviceTemplateId"]; - var url = vm.$restUrl.queryOperationParamsUrl + templateId + "/operations/" + operation + "/parameters"; - //query operation params - commonUtil.get(url, null, function(data) { - //empty operation params - vm.vmAppDialog.operationParams = []; - //empty template input params - vm.vmAppDialog.templateInputParams = []; - if(vmAppUtil.isScaleOperation(operation)) { - vm.vmAppScaleDialog.operation = operation; - vm.vmAppScaleDialog.currentRow = row; - vm.vmAppScaleDialog.instanceId = table.fnGetData(row)["instanceId"]; - vm.vmAppScaleDialog.templateId = templateId; - vm.vmAppScaleDialog.$initScaleParams(); - $("#scaleModal").modal("show"); - } else if ((data && data.length > 0)) { - vm.vmAppDialog.type = "execute"; - vm.vmAppDialog.title = $.i18n.prop("nfv-virtualApplication-iui-text-params"); - vm.vmAppDialog.btnTitle = $.i18n.prop("nfv-virtualApplication-iui-text-confirmBtn"); - vm.vmAppDialog.operation = operation; - vm.vmAppDialog.currentRow = row; - vm.vmAppDialog.templateId = templateId; - vm.vmAppDialog.operationParams = data; - vm.vmAppDialog.$initData(); - $("#vmAppDialog").modal("show"); - } else { - var group = { - flavor : "", - flavorParams : [], - operationParams : [] - } - vmAppUtil.executeOperation(group, row, operation); - } - }); - } -}; - -vmAppUtil.executeOperation = function(group, row, operation) { - vmAppUtil.changeBtnStatus("processing", operation, row, true); - var table = $('#' + vm.$tableId).dataTable(); - var instanceId = table.fnGetData(row)["instanceId"]; - var url = vm.$restUrl.executeOperationUrl + instanceId + "/operations/" + operation; - $.ajax({ - type : "POST", - url : url, - data : JSON.stringify(group), - contentType : "application/json", - dataType : "json", - error : function() { - vmAppUtil.changeBtnStatus("failed", operation, row, false); - } - }); - if(vmAppUtil.isScaleOperation(operation)) { - $("#scaleModal").modal("hide"); - } else { - $("#vmAppDialog").modal("hide"); - } -}; - -vmAppUtil.changeBtnStatus = function(status, operation, row, disabled) { - var table = $('#' + vm.$tableId).dataTable(); - var oBtn = $("tbody tr button i.ict-start").eq(row).parent(); - var oSelect = $("tbody tr select").eq(row); - - oSelect.attr("disabled", disabled); - oBtn.attr("disabled", disabled); - table.fnUpdate(status, row, vmAppUtil.COLUMN_STATUS_INDEX, false, false); - table.fnUpdate(operation, row, vmAppUtil.COLUMN_OPERATION_INDEX, false, false); -}; - -vmAppUtil.queryTemplate = function() { - var url = vm.$restUrl.queryServiceTemplate + "&status=Enabled"; - commonUtil.get(url, null, function(data) { - vm.vmAppDialog.templateSelectItems = data || []; - }); -}; - -vmAppUtil.queryFlavorParam = function(templateId, flavorName) { - var url = vm.$restUrl.queryFlavorParamUrl + templateId + "/flavors/" + flavorName + "/parameters"; - commonUtil.get(url, null, function(data) { - vm.vmAppDialog.flavorParams = data || []; - }); -}; - -vmAppUtil.queryVimInfo = function() { - var url = vm.$restUrl.queryVimInfoUrl; - commonUtil.get(url, null, function(resp) { - if (resp) { - vm.vmAppDialog.vimSelectItems = resp.data; - } - }); -}; - -vmAppUtil.queryVnfmInfo = function() { - var url = vm.$restUrl.queryVnfmInfoUrl; - commonUtil.get(url, null, function(resp) { - if (resp) { - vm.vmAppDialog.vnfmSelectItems = resp.data; - } - }); -}; - -vmAppUtil.queryVnfInfo = function(templateId) { - var url = vm.$restUrl.queryVnfInfoUrl + templateId + "/vnftemplates"; - commonUtil.get(url, null, function(resp) { - if (resp) { - vm.vmAppDialog.vnfItems = resp; - } - }); -}; - -vmAppUtil.newApp = function(param) { - $.ajax({ - type : "POST", - url : vm.$restUrl.newAppinstancesUrl, - contentType : "application/json", - data : JSON.stringify(param), - dataType : "text", - success : function(data) { - refreshByCond(); - commonUtil.showMessage($.i18n.prop("nfv-virtualApplication-iui-message-create-success"), vmAppUtil.TYPE_SUCCESS); - }, - error : function() { - refreshByCond(); - commonUtil.showMessage($.i18n.prop("nfv-virtualApplication-iui-message-create-fail"), vmAppUtil.TYPE_DANGER); - } - }); - $("#vmAppDialog").modal("hide"); - -}; - -vmAppUtil.isScaleOperation = function(operation) { - if(operation == "scaleIn" || operation == "scaleOut") { - return true; - } else { - return false; - } -} - -vmAppUtil.generateGourpParams = function(data) { - var groupParams = []; - $.each(data, function(index, group){ - var groupParam = { - groupName : group.groupName, - params : [] - } - $.each(group.params, function(index, element){ - var id = vm.vmAppDialog.$getGoupParamKey(group.groupName, element.key); - var value = $("#" + id).val(); - if(value) { - var param = { - key : element.key, - value : value - } - groupParam.params.push(param); - } - }); - if(groupParam.params.length) { - groupParams.push(groupParam); - } - }); - return groupParams; -} - -vmAppUtil.generateAdditionalParams = function(data) { - var additionalParams = []; - $.each(data, function(index, group){ - var param = { - key : "object_" + group.groupName, //前缀objec_标识为value是一个对象字符串,方便plan解析参数 - value : "" - } - var templateParam = {}; - $.each(group.params, function(index, element){ - var id = vm.vmAppDialog.$getGoupParamKey(group.groupName, element.key); - var value = $("#" + id).val(); - if(value) { - templateParam[element.key] = value; - } else { - templateParam[element.key] = ""; - } - }); - param.value = JSON.stringify(templateParam); - additionalParams.push(param); - }); - return additionalParams; -} - -vmAppUtil.generateVNFRelationInfos = function(data) { - var vnfRelationInfos = []; - $.each(data, function(index, element){ - var info = { - vnfdid : element.templateid, - vnfmid : $("#" + element.templateid).val() - } - vnfRelationInfos.push(info); - }); - return vnfRelationInfos; -} - -vmAppUtil.delVduRender = function(obj) { - return ''; -} - -vmAppUtil.deleteVdu = function(vduId, vnfId) { - var oTable = $("#" + vm.vmAppScaleDialog.$tableId).dataTable(); - var tableData = oTable.fnGetData(); - for(i=0;i'; -} - -vmAppUtil.queryScalableVnfInfo = function(templateId) { - var url = vm.$restUrl.queryVnfInfoUrl + templateId + "/vnftemplates"; - $.ajax({ - type : "GET", - url : url, - dataType : "json", - success : function(resp) { - resp = resp || []; - for(var i=0; i -1)) { - vnfData.vduTypeList.push(nodetemplates[j]); - } - } - - if(vnfData.vduTypeList.length) { - vm.vmAppScaleDialog.vnfSelectItems.push(vnfData); - } - } - } - }); -} - -vmAppUtil.queryScalableVduInstance = function(instanceId, vnfTemplateId, vduTypeList) { - //query vnf instances by ns id - var vnfUrl = vm.$restUrl.queryRocInfoBaseUrl + "/vnfs?nsId=" + instanceId; - //var vnfUrl = vm.$restUrl.queryRocInfoBaseUrl + "/vnfs/" + instanceId; - $.ajax({ - type : "GET", - url : vnfUrl, - dataType : "json", - success : function(resp) { - if(resp.operationResult == "SUCCESS") { - var data = resp.data; - for(var i=0; i - - - - - - - - - - - - - - - - - - - -
-
-
- -
-
-
-
- -
-
-
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/template.html b/nsoc-iui/src/main/resources/webroot/nsoc/template.html deleted file mode 100644 index cbc6528c..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/template.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - - -
-
-
- -
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/templateDetail.html b/nsoc-iui/src/main/resources/webroot/nsoc/templateDetail.html deleted file mode 100644 index bb9917ba..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/templateDetail.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -
-
-
- -
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
- -
-
-

{{nodesTab.nodesDetail.detailTitle}}

-
- -
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/topology.html b/nsoc-iui/src/main/resources/webroot/nsoc/topology.html deleted file mode 100644 index 661ae238..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/topology.html +++ /dev/null @@ -1,122 +0,0 @@ - -
-
-
-
-
-
0
- {{network.name}} -
-
-
-
-
0
-

{{subnet.name}}

-

-
-
-
-
-
-
-
-
-
-
-
-
-
- -
1
-
-
- -
-
-
-
-
-
-
- -
-
-
-
-
-
-
- -
1
-
-
- -
-
-
-
-
- -
-
-
-
- -
1
-
-
-

-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
- - - - -
-
- - - - - - - - - -
-
-
\ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/virtualApplication.html b/nsoc-iui/src/main/resources/webroot/nsoc/virtualApplication.html deleted file mode 100644 index 76cff61d..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/virtualApplication.html +++ /dev/null @@ -1,280 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -
-
-
- -
-
-
-
- -
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/virtualApplicationDetail.html b/nsoc-iui/src/main/resources/webroot/nsoc/virtualApplicationDetail.html deleted file mode 100644 index 31e66b31..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/virtualApplicationDetail.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -
-
-
- -
-
-
-
-
-
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-

{{nodesTab.nodesDetail.detailTitle}}

-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/virtualApplicationScale.html b/nsoc-iui/src/main/resources/webroot/nsoc/virtualApplicationScale.html deleted file mode 100644 index 552422f9..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/virtualApplicationScale.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/vnfmView.html b/nsoc-iui/src/main/resources/webroot/nsoc/vnfmView.html deleted file mode 100644 index 199d02da..00000000 --- a/nsoc-iui/src/main/resources/webroot/nsoc/vnfmView.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-
-
-
-
- - -
-
- -
-
-

-
:
-
URL:
-
-
- -
-
-
-
-
- -
-
-
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/openoiui-standlone/pom.xml b/openoiui-standlone/pom.xml deleted file mode 100644 index bc6ebe05..00000000 --- a/openoiui-standlone/pom.xml +++ /dev/null @@ -1,195 +0,0 @@ - - - - 4.0.0 - - org.openo.orchestrator.openoiui - openoiui-parent - 0.0.1-SNAPSHOT - - org.openo.orchestrator.openoiui - openoiui-standlone - pom - openo/openoiui/openoiui-standlone - Open-O iui openoiui-standlone - - target/version - target/assembly - openo-iui - - - - org.openo.orchestrator.openoiui - uiframe-iui - ${project.version} - - - org.openo.orchestrator.openoiui - roc-iui - ${project.version} - - - org.openo.orchestrator.openoiui - umc-iui - ${project.version} - - - org.openo.orchestrator.openoiui - nsoc-iui - ${project.version} - - - org.openo.orchestrator.hsif.components - iuicontainer - 0.0.1-SNAPSHOT - - - org.openo.orchestrator.hsif.components - iuicontainertmpl - 0.0.1-SNAPSHOT - - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - unpack-resources - - unpack - - process-resources - - - - org.openo.orchestrator.openoiui - uiframe-iui - - - org.openo.orchestrator.openoiui - roc-iui - - - org.openo.orchestrator.openoiui - umc-iui - - - org.openo.orchestrator.openoiui - nsoc-iui - - - org.openo.orchestrator.hsif.components - iuicontainertmpl - - - ${assemblyDirectory} - META-INF\/** - false - true - - - - copy-iuicontainer - - copy - - - generate-resources - - - - org.openo.orchestrator.hsif.components - iuicontainer - ${assemblyDirectory} - openoiui.jar - - - - - - - - maven-resources-plugin - - - copy-conf-resources - - prepare-package - - copy-resources - - - ${assemblyDirectory} - - - ${basedir}/src/main/assembly - false - - - true - - - - - - org.apache.maven.plugins - maven-antrun-plugin - - - package - package - - - - - - - - - run - - - - - - org.codehaus.mojo - build-helper-maven-plugin - - - attach-artifacts - package - - attach-artifact - - - - - ${versionDirectory}/${packagename}-${project.version}.zip - zip - - - - - - - - - diff --git a/openoiui-standlone/src/main/assembly/run.bat b/openoiui-standlone/src/main/assembly/run.bat deleted file mode 100644 index d345ea91..00000000 --- a/openoiui-standlone/src/main/assembly/run.bat +++ /dev/null @@ -1,20 +0,0 @@ -@REM -@REM Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) -@REM -@REM Licensed under the Apache License, Version 2.0 (the "License"); -@REM you may not use this file except in compliance with the License. -@REM You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, software -@REM distributed under the License is distributed on an "AS IS" BASIS, -@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@REM See the License for the specific language governing permissions and -@REM limitations under the License. -@REM -@echo off -title openoiui-service -set RUNHOME=%~dp0 -cd /d %RUNHOME% -"%JAVA_HOME%\bin\java.exe" -jar openoiui.jar \ No newline at end of file diff --git a/openoiui-standlone/src/main/assembly/run.sh b/openoiui-standlone/src/main/assembly/run.sh deleted file mode 100644 index 7b363ab0..00000000 --- a/openoiui-standlone/src/main/assembly/run.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -DIRNAME=`dirname $0` -RUNHOME=`cd $DIRNAME/; pwd` -cd $RUNHOME -$JAVA_HOME/bin/java -Djava.security.egd=file:/dev/urandom -jar openoiui.jar diff --git a/openoiui-standlone/src/main/assembly/stop.bat b/openoiui-standlone/src/main/assembly/stop.bat deleted file mode 100644 index 6de98b76..00000000 --- a/openoiui-standlone/src/main/assembly/stop.bat +++ /dev/null @@ -1,34 +0,0 @@ -@REM -@REM Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) -@REM -@REM Licensed under the Apache License, Version 2.0 (the "License"); -@REM you may not use this file except in compliance with the License. -@REM You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, software -@REM distributed under the License is distributed on an "AS IS" BASIS, -@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@REM See the License for the specific language governing permissions and -@REM limitations under the License. -@REM -@echo off -title stopping openoiui-service - -set HOME=%~dp0 -set Main_Class="openoiui.jar" - -echo ================== umc-service info ============================================= -echo HOME=$HOME -echo Main_Class=%Main_Class% -echo =============================================================================== - -echo ### Stopping umc-service -cd /d %HOME% - -rem set JAVA_HOME=D:\WorkSoftware\jdk1.7.0_60 -for /f "delims=" %%i in ('"%JAVA_HOME%\bin\jcmd"') do ( - call find_kill_process "%%i" %Main_Class% -) -exit diff --git a/openoiui-standlone/src/main/assembly/stop.sh b/openoiui-standlone/src/main/assembly/stop.sh deleted file mode 100644 index 77513ba1..00000000 --- a/openoiui-standlone/src/main/assembly/stop.sh +++ /dev/null @@ -1,43 +0,0 @@ -# -# Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -#!/bin/bash -DIRNAME=`dirname $0` -HOME=`cd $DIRNAME/; pwd` -Main_Class="openoiui.jar" - -echo ================== umc-service info ============================================= -echo HOME=$HOME -echo Main_Class=$Main_Class -echo =============================================================================== -cd $HOME; pwd - -echo @WORK_DIR@ $HOME - -function save_service_pid(){ - service_pid=`ps -ef | grep $Main_Class | grep -v grep | awk '{print $2}'` - echo @service_pid@ $service_pid -} - -function kill_service_process(){ - ps -p $service_pid - if [ $? == 0 ]; then - kill -9 $service_pid - fi -} - -save_service_pid; -echo @C_CMD@ kill -9 $service_pid -kill_service_process; \ No newline at end of file diff --git a/openoiui-standlone/src/main/assembly/webroot/component/openotopo/openotopo.js b/openoiui-standlone/src/main/assembly/webroot/component/openotopo/openotopo.js deleted file mode 100644 index b106a38d..00000000 --- a/openoiui-standlone/src/main/assembly/webroot/component/openotopo/openotopo.js +++ /dev/null @@ -1,302 +0,0 @@ - -/**openo tools**/ -// generate a random graph -function oTopo() { - - var topo; - - /** - * - * @param id: The id of DIV which display topological graph. - * @param settings: Init parameters . - * @see [] - */ - this.canvas = function (id, settings) - { - var g = - { - nodes : [],// nodes - edges : [] // links - }; - - topo = new sigma( - { - graph : g, - renderer : - { - // IMPORTANT: - // This works only with the canvas renderer, so the - // renderer type set as "canvas" is necessary here. - container : document.getElementById(id), - type : 'canvas' - }, - settings : settings - }); - - CustomShapes.init(topo); - }; - - - /** - * - * @see [] - */ - this.refresh = function() - { - topo.refresh(); - }; - - - /** - * - * @param id: The id of node. - * @see [] - */ - this.Node = function(id) - { - var pr = this; - this.id = id, - this.label = "", - this.type = "square",/**equilateral,star,square,diamond,circle,cross**/ - this.x = 1, - this.y = 1, - this.size = 10, - this.image = {}; - this.color = "transparent", - this.borderColor = "#1E90FF", - - this.setName = function(v) - { - pr.label = v; - }; - - this.setType = function(v) - { - pr.type = v; - }; - - this.setSize = function(v) - { - pr.size = v; - }; - - this.setImg = function(url) - { - pr.image = - { - url : url, - // scale/clip are ratio values applied on top of 'size' - scale : 1, - clip : 0, - }; - pr.borderColor = "transparent"; - pr.color = "transparent"; - }; - - this.setImgScale = function(s) - { - pr.image.scale = s; - }; - - this.setImgClip = function(c) - { - pr.image.clip = c; - }; - - this.setColor = function(v) - { - pr.color = v; - }; - - this.setBorderColor = function(v) - { - pr.borderColor = v; - }; - - this.setLocation = function(x,y) - { - pr.x = x; - pr.y = y; - }; - - this.setProperty = function(k,v) - { - pr[k] = v; - }; - }; - - /** - * - * @param id: The id of link. - * @see [] - */ - this.Link = function(id) - { - var pr = this; - this.id = id, - this.type = "arrow",/*'line','curve','arrow','curvedArrow','dashed','dotted','parallel','tapered'*/ - this.source = 1, - this.target = 1, - this.size = Math.random(), - this.color = "#1E90FF", - - this.setType = function(v) - { - pr.type = v; - }; - - this.setSize = function(v) - { - pr.size = v; - }; - - this.setConnect = function(s,t) - { - pr.source = s; - pr.target = t; - }; - - this.setColor = function(v) - { - pr.color = v; - }; - - this.setProperty = function(k,v) - { - pr[k] = v; - }; - }; - - /** - * - * @param v: Node object. - * @see [] - */ - this.addNode = function(v) - { - topo.graph.addNode(v); - }; - - /** - * - * @param id: The id of node. - * @see [] - */ - this.dropNode = function(id) - { - topo.graph.dropNode(id); - }; - - - /** - * - * @param v: Link object. - * @see [] - */ - this.addLink = function(v) - { - topo.graph.addEdge(v); - }; - - /** - * - * @param id: The id of link. - * @see [] - */ - this.dropLink = function(id) - { - topo.graph.dropEdge(id); - }; - - /** - * - * @see [] - */ - this.allNodes = function() - { - return topo.graph.nodes(); - }; - - /** - * Define drag and drop object. - */ - var dragListener = null; - - /** - * - * @param b: The node can be dragged and dropped when the parameter is TRUE.Set after canvas init. - * @see [] - */ - this.setDrag = function(b) - { - if (b) - { - dragListener = sigma.plugins.dragNodes(topo, topo.renderers[0]); - } - }; - - /** - * - * @param method: The binding method include:startdrag,drag,drop,dragend. - * @param e: Callback method. - * @see [] - */ - var dragBind = function(method,e) - { - if (null != dragListener) - { - dragListener.bind(method, function(event){ - e(event); - }); - } - }; - - - /** - * - * @param method: The binding method include:rightClick,clickStage,doubleClickStage,rightClickStage,clickNode,clickNodes,clickEdge, - * clickEdges,doubleClickNode,doubleClickNodes,doubleClickEdge,doubleClickEdges,rightClickNode, - * rightClickNodes,rightClickEdge,rightClickEdges,overNode,overNodes,overEdge,overEdges,outNode, - * outNodes,outEdge,outEdges,downNode,downNodes,downEdge,downEdges,upNode,upNodes,upEdge,upEdges - * @param e Callback method. - * @see [] - */ - this.mouseBind = function(method,e) - { - if (null != topo) - { - topo.bind(method, function(event){ - e(event); - }); - } - }; - - - /** - * - * @param obj: The object to be disabled. - * @see [] - */ - this.noright = function(obj) { - if (obj) { - obj.oncontextmenu = function() { - return false; - } - obj.ondragstart = function() { - return false; - } - obj.onselectstart = function() { - return false; - } - obj.onselect = function() { - obj.selection.empty(); - } - obj.oncopy = function() { - obj.selection.empty(); - } - obj.onbeforecopy = function() { - return false; - } - } - } -} diff --git a/openoiui-standlone/src/main/assembly/webroot/component/openotopo/openotopo.min.js b/openoiui-standlone/src/main/assembly/webroot/component/openotopo/openotopo.min.js deleted file mode 100644 index 7c180da2..00000000 --- a/openoiui-standlone/src/main/assembly/webroot/component/openotopo/openotopo.min.js +++ /dev/null @@ -1,18 +0,0 @@ -/* sigma.js - A JavaScript library dedicated to graph drawing. - Version: 1.0.3 - Author: Alexis Jacomy, Sciences-Po Médialab - License: MIT */ -(function(a){"use strict";var b={},c=function(a){var d,e,f,g,h;c.classes.dispatcher.extend(this);var i=this,j=a||{};if("string"==typeof j||j instanceof HTMLElement?j={renderers:[j]}:"[object Array]"===Object.prototype.toString.call(j)&&(j={renderers:j}),g=j.renderers||j.renderer||j.container,j.renderers&&0!==j.renderers.length||("string"==typeof g||g instanceof HTMLElement||"object"==typeof g&&"container"in g)&&(j.renderers=[g]),j.id){if(b[j.id])throw'sigma: Instance "'+j.id+'" already exists.';Object.defineProperty(this,"id",{value:j.id})}else{for(h=0;b[h];)h++;Object.defineProperty(this,"id",{value:""+h})}for(b[this.id]=this,this.settings=new c.classes.configurable(c.settings,j.settings||{}),Object.defineProperty(this,"graph",{value:new c.classes.graph(this.settings),configurable:!0}),Object.defineProperty(this,"middlewares",{value:[],configurable:!0}),Object.defineProperty(this,"cameras",{value:{},configurable:!0}),Object.defineProperty(this,"renderers",{value:{},configurable:!0}),Object.defineProperty(this,"renderersPerCamera",{value:{},configurable:!0}),Object.defineProperty(this,"cameraFrames",{value:{},configurable:!0}),Object.defineProperty(this,"camera",{get:function(){return this.cameras[0]}}),Object.defineProperty(this,"events",{value:["click","rightClick","clickStage","doubleClickStage","rightClickStage","clickNode","clickNodes","doubleClickNode","doubleClickNodes","rightClickNode","rightClickNodes","overNode","overNodes","outNode","outNodes","downNode","downNodes","upNode","upNodes"],configurable:!0}),this._handler=function(a){var b,c={};for(b in a.data)c[b]=a.data[b];c.renderer=a.target,this.dispatchEvent(a.type,c)}.bind(this),f=j.renderers||[],d=0,e=f.length;e>d;d++)this.addRenderer(f[d]);for(f=j.middlewares||[],d=0,e=f.length;e>d;d++)this.middlewares.push("string"==typeof f[d]?c.middlewares[f[d]]:f[d]);"object"==typeof j.graph&&j.graph&&(this.graph.read(j.graph),this.refresh()),window.addEventListener("resize",function(){i.settings&&i.refresh()})};if(c.prototype.addCamera=function(b){var d,e=this;if(!arguments.length){for(b=0;this.cameras[""+b];)b++;b=""+b}if(this.cameras[b])throw'sigma.addCamera: The camera "'+b+'" already exists.';return d=new c.classes.camera(b,this.graph,this.settings),this.cameras[b]=d,d.quadtree=new c.classes.quad,c.classes.edgequad!==a&&(d.edgequadtree=new c.classes.edgequad),d.bind("coordinatesUpdated",function(a){e.renderCamera(d,d.isAnimated)}),this.renderersPerCamera[b]=[],d},c.prototype.killCamera=function(a){if(a="string"==typeof a?this.cameras[a]:a,!a)throw"sigma.killCamera: The camera is undefined.";var b,c,d=this.renderersPerCamera[a.id];for(c=d.length,b=c-1;b>=0;b--)this.killRenderer(d[b]);return delete this.renderersPerCamera[a.id],delete this.cameraFrames[a.id],delete this.cameras[a.id],a.kill&&a.kill(),this},c.prototype.addRenderer=function(a){var b,d,e,f,g=a||{};if("string"==typeof g?g={container:document.getElementById(g)}:g instanceof HTMLElement&&(g={container:g}),"string"==typeof g.container&&(g.container=document.getElementById(g.container)),"id"in g)b=g.id;else{for(b=0;this.renderers[""+b];)b++;b=""+b}if(this.renderers[b])throw'sigma.addRenderer: The renderer "'+b+'" already exists.';if(d="function"==typeof g.type?g.type:c.renderers[g.type],d=d||c.renderers.def,e="camera"in g?g.camera instanceof c.classes.camera?g.camera:this.cameras[g.camera]||this.addCamera(g.camera):this.addCamera(),this.cameras[e.id]!==e)throw"sigma.addRenderer: The camera is not properly referenced.";return f=new d(this.graph,e,this.settings,g),this.renderers[b]=f,Object.defineProperty(f,"id",{value:b}),f.bind&&f.bind(["click","rightClick","clickStage","doubleClickStage","rightClickStage","clickNode","clickNodes","clickEdge","clickEdges","doubleClickNode","doubleClickNodes","doubleClickEdge","doubleClickEdges","rightClickNode","rightClickNodes","rightClickEdge","rightClickEdges","overNode","overNodes","overEdge","overEdges","outNode","outNodes","outEdge","outEdges","downNode","downNodes","downEdge","downEdges","upNode","upNodes","upEdge","upEdges"],this._handler),this.renderersPerCamera[e.id].push(f),f},c.prototype.killRenderer=function(a){if(a="string"==typeof a?this.renderers[a]:a,!a)throw"sigma.killRenderer: The renderer is undefined.";var b=this.renderersPerCamera[a.camera.id],c=b.indexOf(a);return c>=0&&b.splice(c,1),a.kill&&a.kill(),delete this.renderers[a.id],this},c.prototype.refresh=function(b){var d,e,f,g,h,i,j=0;for(b=b||{},g=this.middlewares||[],d=0,e=g.length;e>d;d++)g[d].call(this,0===d?"":"tmp"+j+":",d===e-1?"ready:":"tmp"+ ++j+":");for(f in this.cameras)h=this.cameras[f],h.settings("autoRescale")&&this.renderersPerCamera[h.id]&&this.renderersPerCamera[h.id].length?c.middlewares.rescale.call(this,g.length?"ready:":"",h.readPrefix,{width:this.renderersPerCamera[h.id][0].width,height:this.renderersPerCamera[h.id][0].height}):c.middlewares.copy.call(this,g.length?"ready:":"",h.readPrefix),b.skipIndexation||(i=c.utils.getBoundaries(this.graph,h.readPrefix),h.quadtree.index(this.graph.nodes(),{prefix:h.readPrefix,bounds:{x:i.minX,y:i.minY,width:i.maxX-i.minX,height:i.maxY-i.minY}}),h.edgequadtree!==a&&h.settings("drawEdges")&&h.settings("enableEdgeHovering")&&h.edgequadtree.index(this.graph,{prefix:h.readPrefix,bounds:{x:i.minX,y:i.minY,width:i.maxX-i.minX,height:i.maxY-i.minY}}));for(g=Object.keys(this.renderers),d=0,e=g.length;e>d;d++)if(this.renderers[g[d]].process)if(this.settings("skipErrors"))try{this.renderers[g[d]].process()}catch(k){console.log('Warning: The renderer "'+g[d]+'" crashed on ".process()"')}else this.renderers[g[d]].process();return this.render(),this},c.prototype.render=function(){var a,b,c;for(c=Object.keys(this.renderers),a=0,b=c.length;b>a;a++)if(this.settings("skipErrors"))try{this.renderers[c[a]].render()}catch(d){this.settings("verbose")&&console.log('Warning: The renderer "'+c[a]+'" crashed on ".render()"')}else this.renderers[c[a]].render();return this},c.prototype.renderCamera=function(a,b){var c,d,e,f=this;if(b)for(e=this.renderersPerCamera[a.id],c=0,d=e.length;d>c;c++)if(this.settings("skipErrors"))try{e[c].render()}catch(g){this.settings("verbose")&&console.log('Warning: The renderer "'+e[c].id+'" crashed on ".render()"')}else e[c].render();else if(!this.cameraFrames[a.id]){for(e=this.renderersPerCamera[a.id],c=0,d=e.length;d>c;c++)if(this.settings("skipErrors"))try{e[c].render()}catch(g){this.settings("verbose")&&console.log('Warning: The renderer "'+e[c].id+'" crashed on ".render()"')}else e[c].render();this.cameraFrames[a.id]=requestAnimationFrame(function(){delete f.cameraFrames[a.id]})}return this},c.prototype.kill=function(){var a;this.dispatchEvent("kill"),this.graph.kill(),delete this.middlewares;for(a in this.renderers)this.killRenderer(this.renderers[a]);for(a in this.cameras)this.killCamera(this.cameras[a]);delete this.renderers,delete this.cameras;for(a in this)this.hasOwnProperty(a)&&delete this[a];delete b[this.id]},c.instances=function(a){return arguments.length?b[a]:c.utils.extend({},b)},c.version="1.0.3","undefined"!=typeof this.sigma)throw"An object called sigma is already in the global scope.";this.sigma=c}).call(this),function(a){"use strict";function b(a,c){var d,e,f,g;if(arguments.length)if(1===arguments.length&&Object(arguments[0])===arguments[0])for(a in arguments[0])b(a,arguments[0][a]);else if(arguments.length>1)for(g=Array.isArray(a)?a:a.split(/ /),d=0,e=g.length;d!==e;d+=1)f=g[d],C[f]||(C[f]=[]),C[f].push({handler:c})}function c(a,b){var c,d,e,f,g,h,i=Array.isArray(a)?a:a.split(/ /);if(arguments.length)if(b)for(c=0,d=i.length;c!==d;c+=1){if(h=i[c],C[h]){for(g=[],e=0,f=C[h].length;e!==f;e+=1)C[h][e].handler!==b&&g.push(C[h][e]);C[h]=g}C[h]&&0===C[h].length&&delete C[h]}else for(c=0,d=i.length;c!==d;c+=1)delete C[i[c]];else C=Object.create(null)}function d(a,b){var c,d,e,f,g,h,i=Array.isArray(a)?a:a.split(/ /);for(b=void 0===b?{}:b,c=0,e=i.length;c!==e;c+=1)if(h=i[c],C[h])for(g={type:h,data:b||{}},d=0,f=C[h].length;d!==f;d+=1)try{C[h][d].handler(g)}catch(j){}}function e(){var a,b,c,d,e=!1,f=s(),g=x.shift();if(c=g.job(),f=s()-f,g.done++,g.time+=f,g.currentTime+=f,g.weightTime=g.currentTime/(g.weight||1),g.averageTime=g.time/g.done,d=g.count?g.count<=g.done:!c,!d){for(a=0,b=x.length;b>a;a++)if(x[a].weightTime>g.weightTime){x.splice(a,0,g),e=!0;break}e||x.push(g)}return d?g:null}function f(a){var b=x.length;w[a.id]=a,a.status="running",b&&(a.weightTime=x[b-1].weightTime,a.currentTime=a.weightTime*(a.weight||1)),a.startTime=s(),d("jobStarted",q(a)),x.push(a)}function g(){var a,b,c;for(a in v)b=v[a],b.after?y[a]=b:f(b),delete v[a];for(u=!!x.length;x.length&&s()-tc;c++)h(a[c].id,p(a[c],b));A=!1,u||(t=s(),d("start"),g())}else if("object"==typeof a)if("string"==typeof a.id)h(a.id,a);else{A=!0;for(c in a)"function"==typeof a[c]?h(c,p({job:a[c]},b)):h(c,p(a[c],b));A=!1,u||(t=s(),d("start"),g())}else{if("string"!=typeof a)throw new Error("[conrad.addJob] Wrong arguments.");if(k(a))throw new Error('[conrad.addJob] Job with id "'+a+'" already exists.');if("function"==typeof b)f={id:a,done:0,time:0,status:"waiting",currentTime:0,averageTime:0,weightTime:0,job:b};else{if("object"!=typeof b)throw new Error("[conrad.addJob] Wrong arguments.");f=p({id:a,done:0,time:0,status:"waiting",currentTime:0,averageTime:0,weightTime:0},b)}v[a]=f,d("jobAdded",q(f)),u||A||(t=s(),d("start"),g())}return this}function i(a){var b,c,e,f,g=!1;if(Array.isArray(a))for(b=0,c=a.length;c>b;b++)i(a[b]);else{if("string"!=typeof a)throw new Error("[conrad.killJob] Wrong arguments.");for(e=[w,y,v],b=0,c=e.length;c>b;b++)a in e[b]&&(f=e[b][a],B.history&&(f.status="done",z.push(f)),d("jobEnded",q(f)),delete e[b][a],"function"==typeof f.end&&f.end(),g=!0);for(e=x,b=0,c=e.length;c>b;b++)if(e[b].id===a){e.splice(b,1);break}if(!g)throw new Error('[conrad.killJob] Job "'+a+'" not found.')}return this}function j(){var a,b=p(v,w,y);if(B.history)for(a in b)b[a].status="done",z.push(b[a]),"function"==typeof b[a].end&&b[a].end();return v={},y={},w={},x=[],u=!1,this}function k(a){var b=v[a]||w[a]||y[a];return b?p(b):null}function l(a,b){var c;if("string"==typeof a1&&1===arguments.length)return B[a1];c="object"==typeof a1&&1===arguments.length?a1||{}:{},"string"==typeof a1&&(c[a1]=a2);for(var d in c)void 0!==c[d]?B[d]=c[d]:delete B[d];return this}function m(){return u}function n(){return z=[],this}function o(a,b){var c,d,e,f,g,h,i;if(!arguments.length){g=[];for(d in v)g.push(v[d]);for(d in y)g.push(y[d]);for(d in w)g.push(w[d]);g=g.concat(z)}if("string"==typeof a)switch(a){case"waiting":g=r(y);break;case"running":g=r(w);break;case"done":g=z;break;default:h=a}if(a instanceof RegExp&&(h=a),!h&&("string"==typeof b||b instanceof RegExp)&&(h=b),h){if(i="string"==typeof h,g instanceof Array)c=g;else if("object"==typeof g){c=[];for(d in g)c=c.concat(g[d])}else{c=[];for(d in v)c.push(v[d]);for(d in y)c.push(y[d]);for(d in w)c.push(w[d]);c=c.concat(z)}for(g=[],e=0,f=c.length;f>e;e++)(i?c[e].id===h:c[e].id.match(h))&&g.push(c[e])}return q(g)}function p(){var a,b,c={},d=arguments.length;for(a=d-1;a>=0;a--)for(b in arguments[a])c[b]=arguments[a][b];return c}function q(a){var b,c,d;if(!a)return a;if(Array.isArray(a))for(b=[],c=0,d=a.length;d>c;c++)b.push(q(a[c]));else if("object"==typeof a){b={};for(c in a)b[c]=q(a[c])}else b=a;return b}function r(a){var b,c=[];for(b in a)c.push(a[b]);return c}function s(){return Date.now?Date.now():(new Date).getTime()}if(a.conrad)throw new Error("conrad already exists");var t,u=!1,v={},w={},x=[],y={},z=[],A=!1,B={frameDuration:20,history:!0},C=Object.create(null);Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});var D={hasJob:k,addJob:h,killJob:i,killAll:j,settings:l,getStats:o,isRunning:m,clearHistory:n,bind:b,unbind:c,version:"0.1.0"};"undefined"!=typeof exports&&("undefined"!=typeof module&&module.exports&&(exports=module.exports=D),exports.conrad=D),a.conrad=D}(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";var b=this;sigma.utils=sigma.utils||{},sigma.utils.extend=function(){var a,b,c={},d=arguments.length;for(a=d-1;a>=0;a--)for(b in arguments[a])c[b]=arguments[a][b];return c},sigma.utils.dateNow=function(){return Date.now?Date.now():(new Date).getTime()},sigma.utils.pkg=function(a){return(a||"").split(".").reduce(function(a,b){return b in a?a[b]:a[b]={}},b)},sigma.utils.id=function(){var a=0;return function(){return++a}}(),sigma.utils.floatColor=function(a){var b=[0,0,0];return a.match(/^#/)?(a=(a||"").replace(/^#/,""),b=3===a.length?[parseInt(a.charAt(0)+a.charAt(0),16),parseInt(a.charAt(1)+a.charAt(1),16),parseInt(a.charAt(2)+a.charAt(2),16)]:[parseInt(a.charAt(0)+a.charAt(1),16),parseInt(a.charAt(2)+a.charAt(3),16),parseInt(a.charAt(4)+a.charAt(5),16)]):a.match(/^ *rgba? *\(/)&&(a=a.match(/^ *rgba? *\( *([0-9]*) *, *([0-9]*) *, *([0-9]*) *(,.*)?\) *$/),b=[+a[1],+a[2],+a[3]]),256*b[0]*256+256*b[1]+b[2]},sigma.utils.zoomTo=function(a,b,c,d,e){var f,g,h,i=a.settings;g=Math.max(i("zoomMin"),Math.min(i("zoomMax"),a.ratio*d)),g!==a.ratio&&(d=g/a.ratio,h={x:b*(1-d)+a.x,y:c*(1-d)+a.y,ratio:g},e&&e.duration?(f=sigma.misc.animation.killAll(a),e=sigma.utils.extend(e,{easing:f?"quadraticOut":"quadraticInOut"}),sigma.misc.animation.camera(a,h,e)):(a.goTo(h),e&&e.onComplete&&e.onComplete()))},sigma.utils.getQuadraticControlPoint=function(a,b,c,d){return{x:(a+c)/2+(d-b)/4,y:(b+d)/2+(a-c)/4}},sigma.utils.getPointOnQuadraticCurve=function(a,b,c,d,e,f,g){return{x:Math.pow(1-a,2)*b+2*(1-a)*a*f+Math.pow(a,2)*d,y:Math.pow(1-a,2)*c+2*(1-a)*a*g+Math.pow(a,2)*e}},sigma.utils.getPointOnBezierCurve=function(a,b,c,d,e,f,g,h,i){var j=Math.pow(1-a,3),k=3*a*Math.pow(1-a,2),l=3*Math.pow(a,2)*(1-a),m=Math.pow(a,3);return{x:j*b+k*f+l*h+m*d,y:j*c+k*g+l*i+m*e}},sigma.utils.getSelfLoopControlPoints=function(a,b,c){return{x1:a-7*c,y1:b,x2:a,y2:b+7*c}},sigma.utils.getDistance=function(a,b,c,d){return Math.sqrt(Math.pow(c-a,2)+Math.pow(d-b,2))},sigma.utils.getCircleIntersection=function(a,b,c,d,e,f){var g,h,i,j,k,l,m,n,o;if(h=d-a,i=e-b,j=Math.sqrt(i*i+h*h),j>c+f)return!1;if(jj&&Math.min(c,e)<=a&&a<=Math.max(c,e)&&Math.min(d,f)<=b&&b<=Math.max(d,f)},sigma.utils.isPointOnQuadraticCurve=function(a,b,c,d,e,f,g,h,i){var j=sigma.utils.getDistance(c,d,e,f);if(Math.abs(a-c)>j||Math.abs(b-d)>j)return!1;for(var k,l=sigma.utils.getDistance(a,b,c,d),m=sigma.utils.getDistance(a,b,e,f),n=.5,o=m>l?-.01:.01,p=.001,q=100,r=sigma.utils.getPointOnQuadraticCurve(n,c,d,e,f,g,h),s=sigma.utils.getDistance(a,b,r.x,r.y);q-- >0&&n>=0&&1>=n&&s>i&&(o>p||-p>o);)k=s,r=sigma.utils.getPointOnQuadraticCurve(n,c,d,e,f,g,h),s=sigma.utils.getDistance(a,b,r.x,r.y),s>k?(o=-o/2,n+=o):0>n+o||n+o>1?(o/=2,s=k):n+=o;return i>s},sigma.utils.isPointOnBezierCurve=function(a,b,c,d,e,f,g,h,i,j,k){var l=sigma.utils.getDistance(c,d,g,h);if(Math.abs(a-c)>l||Math.abs(b-d)>l)return!1;for(var m,n=sigma.utils.getDistance(a,b,c,d),o=sigma.utils.getDistance(a,b,e,f),p=.5,q=o>n?-.01:.01,r=.001,s=100,t=sigma.utils.getPointOnBezierCurve(p,c,d,e,f,g,h,i,j),u=sigma.utils.getDistance(a,b,t.x,t.y);s-- >0&&p>=0&&1>=p&&u>k&&(q>r||-r>q);)m=u,t=sigma.utils.getPointOnBezierCurve(p,c,d,e,f,g,h,i,j),u=sigma.utils.getDistance(a,b,t.x,t.y),u>m?(q=-q/2,p+=q):0>p+q||p+q>1?(q/=2,u=m):p+=q;return k>u},sigma.utils.getX=function(b){return b.offsetX!==a&&b.offsetX||b.layerX!==a&&b.layerX||b.clientX!==a&&b.clientX},sigma.utils.getY=function(b){return b.offsetY!==a&&b.offsetY||b.layerY!==a&&b.layerY||b.clientY!==a&&b.clientY},sigma.utils.getWidth=function(b){var c=b.target.ownerSVGElement?b.target.ownerSVGElement.width:b.target.width;return"number"==typeof c&&c||c!==a&&c.baseVal!==a&&c.baseVal.value},sigma.utils.getHeight=function(b){var c=b.target.ownerSVGElement?b.target.ownerSVGElement.height:b.target.height;return"number"==typeof c&&c||c!==a&&c.baseVal!==a&&c.baseVal.value},sigma.utils.getDelta=function(b){return b.wheelDelta!==a&&b.wheelDelta||b.detail!==a&&-b.detail},sigma.utils.getOffset=function(a){for(var b=0,c=0;a;)c+=parseInt(a.offsetTop),b+=parseInt(a.offsetLeft),a=a.offsetParent;return{top:c,left:b}},sigma.utils.doubleClick=function(a,b,c){var d,e=0;a._doubleClickHandler=a._doubleClickHandler||{},a._doubleClickHandler[b]=a._doubleClickHandler[b]||[],d=a._doubleClickHandler[b],d.push(function(a){return e++,2===e?(e=0,c(a)):void(1===e&&setTimeout(function(){e=0},sigma.settings.doubleClickTimeout))}),a.addEventListener(b,d[d.length-1],!1)},sigma.utils.unbindDoubleClick=function(a,b){for(var c,d=(a._doubleClickHandler||{})[b]||[];c=d.pop();)a.removeEventListener(b,c);delete(a._doubleClickHandler||{})[b]},sigma.utils.easings=sigma.utils.easings||{},sigma.utils.easings.linearNone=function(a){return a},sigma.utils.easings.quadraticIn=function(a){return a*a},sigma.utils.easings.quadraticOut=function(a){return a*(2-a)},sigma.utils.easings.quadraticInOut=function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)},sigma.utils.easings.cubicIn=function(a){return a*a*a},sigma.utils.easings.cubicOut=function(a){return--a*a*a+1},sigma.utils.easings.cubicInOut=function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)},sigma.utils.loadShader=function(a,b,c,d){var e,f=a.createShader(c);return a.shaderSource(f,b),a.compileShader(f),e=a.getShaderParameter(f,a.COMPILE_STATUS),e?f:(d&&d('Error compiling shader "'+f+'":'+a.getShaderInfoLog(f)),a.deleteShader(f),null)},sigma.utils.loadProgram=function(a,b,c,d,e){var f,g,h=a.createProgram();for(f=0;fg;g++)d[i[g]]=c[i[g]];return this}if(void 0!==d[a])return d[a];for(g=0,h=e.length;h>g;g++)if(void 0!==e[g][a])return e[g][a]}};for(f.embedObjects=function(){var b=e.concat(d).concat(Array.prototype.splice.call(arguments,0));return a.apply({},b)},b=0,c=arguments.length;c>b;b++)f(arguments[b]);return f};"undefined"!=typeof this.sigma?(this.sigma.classes=this.sigma.classes||{},this.sigma.classes.configurable=a):"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=a),exports.configurable=a):this.configurable=a}.call(this),function(a){"use strict";function b(a,b,c){var d=function(){var d,e;for(d in h[a])h[a][d].apply(b,arguments);e=c.apply(b,arguments);for(d in g[a])g[a][d].apply(b,arguments);return e};return d}function c(a){var b;for(b in a)"hasOwnProperty"in a&&!a.hasOwnProperty(b)||delete a[b];return a}var d=Object.create(null),e=Object.create(null),f=Object.create(null),g=Object.create(null),h=Object.create(null),i={immutable:!0,clone:!0},j=function(a){return i[a]},k=function(a){var c,e,g;g={settings:a||j,nodesArray:[],edgesArray:[],nodesIndex:Object.create(null),edgesIndex:Object.create(null),inNeighborsIndex:Object.create(null),outNeighborsIndex:Object.create(null),allNeighborsIndex:Object.create(null),inNeighborsCount:Object.create(null),outNeighborsCount:Object.create(null),allNeighborsCount:Object.create(null)};for(c in f)f[c].call(g);for(c in d)e=b(c,g,d[c]),this[c]=e,g[c]=e};k.addMethod=function(a,b){if("string"!=typeof a||"function"!=typeof b||2!==arguments.length)throw"addMethod: Wrong arguments.";if(d[a]||k[a])throw'The method "'+a+'" already exists.';return d[a]=b,g[a]=Object.create(null),h[a]=Object.create(null),this},k.hasMethod=function(a){return!(!d[a]&&!k[a])},k.attach=function(a,b,c,d){if("string"!=typeof a||"string"!=typeof b||"function"!=typeof c||arguments.length<3||arguments.length>4)throw"attach: Wrong arguments.";var e;if("constructor"===a)e=f;else if(d){if(!h[a])throw'The method "'+a+'" does not exist.';e=h[a]}else{if(!g[a])throw'The method "'+a+'" does not exist.';e=g[a]}if(e[b])throw'A function "'+b+'" is already attached to the method "'+a+'".';return e[b]=c,this},k.attachBefore=function(a,b,c){return this.attach(a,b,c,!0)},k.addIndex=function(a,b){if("string"!=typeof a||Object(b)!==b||2!==arguments.length)throw"addIndex: Wrong arguments.";if(e[a])throw'The index "'+a+'" already exists.';var c;e[a]=b;for(c in b){if("function"!=typeof b[c])throw"The bindings must be functions.";k.attach(c,a,b[c])}return this},k.addMethod("addNode",function(a){if(Object(a)!==a||1!==arguments.length)throw"addNode: Wrong arguments.";if("string"!=typeof a.id&&"number"!=typeof a.id)throw"The node must have a string or number id.";if(this.nodesIndex[a.id])throw'The node "'+a.id+'" already exists.';var b,c=a.id,d=Object.create(null);if(this.settings("clone"))for(b in a)"id"!==b&&(d[b]=a[b]);else d=a;return this.settings("immutable")?Object.defineProperty(d,"id",{value:c,enumerable:!0}):d.id=c,this.inNeighborsIndex[c]=Object.create(null),this.outNeighborsIndex[c]=Object.create(null),this.allNeighborsIndex[c]=Object.create(null),this.inNeighborsCount[c]=0,this.outNeighborsCount[c]=0,this.allNeighborsCount[c]=0,this.nodesArray.push(d),this.nodesIndex[d.id]=d,this}),k.addMethod("addEdge",function(a){if(Object(a)!==a||1!==arguments.length)throw"addEdge: Wrong arguments.";if("string"!=typeof a.id&&"number"!=typeof a.id)throw"The edge must have a string or number id.";if("string"!=typeof a.source&&"number"!=typeof a.source||!this.nodesIndex[a.source])throw"The edge source must have an existing node id.";if("string"!=typeof a.target&&"number"!=typeof a.target||!this.nodesIndex[a.target])throw"The edge target must have an existing node id.";if(this.edgesIndex[a.id])throw'The edge "'+a.id+'" already exists.';var b,c=Object.create(null);if(this.settings("clone"))for(b in a)"id"!==b&&"source"!==b&&"target"!==b&&(c[b]=a[b]);else c=a;return this.settings("immutable")?(Object.defineProperty(c,"id",{value:a.id,enumerable:!0}),Object.defineProperty(c,"source",{value:a.source,enumerable:!0}),Object.defineProperty(c,"target",{value:a.target,enumerable:!0})):(c.id=a.id,c.source=a.source,c.target=a.target),this.edgesArray.push(c),this.edgesIndex[c.id]=c,this.inNeighborsIndex[c.target][c.source]||(this.inNeighborsIndex[c.target][c.source]=Object.create(null)),this.inNeighborsIndex[c.target][c.source][c.id]=c,this.outNeighborsIndex[c.source][c.target]||(this.outNeighborsIndex[c.source][c.target]=Object.create(null)),this.outNeighborsIndex[c.source][c.target][c.id]=c,this.allNeighborsIndex[c.source][c.target]||(this.allNeighborsIndex[c.source][c.target]=Object.create(null)),this.allNeighborsIndex[c.source][c.target][c.id]=c,c.target!==c.source&&(this.allNeighborsIndex[c.target][c.source]||(this.allNeighborsIndex[c.target][c.source]=Object.create(null)),this.allNeighborsIndex[c.target][c.source][c.id]=c),this.inNeighborsCount[c.target]++,this.outNeighborsCount[c.source]++,this.allNeighborsCount[c.target]++,this.allNeighborsCount[c.source]++,this}),k.addMethod("dropNode",function(a){if("string"!=typeof a&&"number"!=typeof a||1!==arguments.length)throw"dropNode: Wrong arguments.";if(!this.nodesIndex[a])throw'The node "'+a+'" does not exist.';var b,c,d;for(delete this.nodesIndex[a],b=0,d=this.nodesArray.length;d>b;b++)if(this.nodesArray[b].id===a){this.nodesArray.splice(b,1);break}for(b=this.edgesArray.length-1;b>=0;b--)(this.edgesArray[b].source===a||this.edgesArray[b].target===a)&&this.dropEdge(this.edgesArray[b].id);delete this.inNeighborsIndex[a],delete this.outNeighborsIndex[a],delete this.allNeighborsIndex[a],delete this.inNeighborsCount[a],delete this.outNeighborsCount[a],delete this.allNeighborsCount[a];for(c in this.nodesIndex)delete this.inNeighborsIndex[c][a],delete this.outNeighborsIndex[c][a],delete this.allNeighborsIndex[c][a];return this}),k.addMethod("dropEdge",function(a){if("string"!=typeof a&&"number"!=typeof a||1!==arguments.length)throw"dropEdge: Wrong arguments.";if(!this.edgesIndex[a])throw'The edge "'+a+'" does not exist.';var b,c,d;for(d=this.edgesIndex[a],delete this.edgesIndex[a],b=0,c=this.edgesArray.length;c>b;b++)if(this.edgesArray[b].id===a){this.edgesArray.splice(b,1);break}return delete this.inNeighborsIndex[d.target][d.source][d.id],Object.keys(this.inNeighborsIndex[d.target][d.source]).length||delete this.inNeighborsIndex[d.target][d.source],delete this.outNeighborsIndex[d.source][d.target][d.id],Object.keys(this.outNeighborsIndex[d.source][d.target]).length||delete this.outNeighborsIndex[d.source][d.target],delete this.allNeighborsIndex[d.source][d.target][d.id],Object.keys(this.allNeighborsIndex[d.source][d.target]).length||delete this.allNeighborsIndex[d.source][d.target],d.target!==d.source&&(delete this.allNeighborsIndex[d.target][d.source][d.id],Object.keys(this.allNeighborsIndex[d.target][d.source]).length||delete this.allNeighborsIndex[d.target][d.source]),this.inNeighborsCount[d.target]--,this.outNeighborsCount[d.source]--,this.allNeighborsCount[d.source]--,this.allNeighborsCount[d.target]--,this}),k.addMethod("kill",function(){this.nodesArray.length=0,this.edgesArray.length=0,delete this.nodesArray,delete this.edgesArray,delete this.nodesIndex,delete this.edgesIndex,delete this.inNeighborsIndex,delete this.outNeighborsIndex,delete this.allNeighborsIndex,delete this.inNeighborsCount,delete this.outNeighborsCount,delete this.allNeighborsCount}),k.addMethod("clear",function(){return this.nodesArray.length=0,this.edgesArray.length=0,c(this.nodesIndex),c(this.edgesIndex),c(this.nodesIndex),c(this.inNeighborsIndex),c(this.outNeighborsIndex),c(this.allNeighborsIndex),c(this.inNeighborsCount),c(this.outNeighborsCount),c(this.allNeighborsCount),this}),k.addMethod("read",function(a){var b,c,d;for(c=a.nodes||[],b=0,d=c.length;d>b;b++)this.addNode(c[b]);for(c=a.edges||[],b=0,d=c.length;d>b;b++)this.addEdge(c[b]);return this}),k.addMethod("nodes",function(a){if(!arguments.length)return this.nodesArray.slice(0);if(1===arguments.length&&("string"==typeof a||"number"==typeof a))return this.nodesIndex[a];if(1===arguments.length&&"[object Array]"===Object.prototype.toString.call(a)){ -var b,c,d=[];for(b=0,c=a.length;c>b;b++){if("string"!=typeof a[b]&&"number"!=typeof a[b])throw"nodes: Wrong arguments.";d.push(this.nodesIndex[a[b]])}return d}throw"nodes: Wrong arguments."}),k.addMethod("degree",function(a,b){if(b={"in":this.inNeighborsCount,out:this.outNeighborsCount}[b||""]||this.allNeighborsCount,"string"==typeof a||"number"==typeof a)return b[a];if("[object Array]"===Object.prototype.toString.call(a)){var c,d,e=[];for(c=0,d=a.length;d>c;c++){if("string"!=typeof a[c]&&"number"!=typeof a[c])throw"degree: Wrong arguments.";e.push(b[a[c]])}return e}throw"degree: Wrong arguments."}),k.addMethod("edges",function(a){if(!arguments.length)return this.edgesArray.slice(0);if(1===arguments.length&&("string"==typeof a||"number"==typeof a))return this.edgesIndex[a];if(1===arguments.length&&"[object Array]"===Object.prototype.toString.call(a)){var b,c,d=[];for(b=0,c=a.length;c>b;b++){if("string"!=typeof a[b]&&"number"!=typeof a[b])throw"edges: Wrong arguments.";d.push(this.edgesIndex[a[b]])}return d}throw"edges: Wrong arguments."}),"undefined"!=typeof sigma?(sigma.classes=sigma.classes||Object.create(null),sigma.classes.graph=k):"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=k),exports.graph=k):this.graph=k}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.classes"),sigma.classes.camera=function(a,b,c,d){sigma.classes.dispatcher.extend(this),Object.defineProperty(this,"graph",{value:b}),Object.defineProperty(this,"id",{value:a}),Object.defineProperty(this,"readPrefix",{value:"read_cam"+a+":"}),Object.defineProperty(this,"prefix",{value:"cam"+a+":"}),this.x=0,this.y=0,this.ratio=1,this.angle=0,this.isAnimated=!1,this.settings="object"==typeof d&&d?c.embedObject(d):c},sigma.classes.camera.prototype.goTo=function(b){if(!this.settings("enableCamera"))return this;var c,d,e=b||{},f=["x","y","ratio","angle"];for(c=0,d=f.length;d>c;c++)if(e[f[c]]!==a){if("number"!=typeof e[f[c]]||isNaN(e[f[c]]))throw'Value for "'+f[c]+'" is not a number.';this[f[c]]=e[f[c]]}return this.dispatchEvent("coordinatesUpdated"),this},sigma.classes.camera.prototype.applyView=function(b,c,d){d=d||{},c=c!==a?c:this.prefix,b=b!==a?b:this.readPrefix;var e,f,g,h=d.nodes||this.graph.nodes(),i=d.edges||this.graph.edges(),j=Math.cos(this.angle),k=Math.sin(this.angle),l=Math.pow(this.ratio,this.settings("nodesPowRatio")),m=Math.pow(this.ratio,this.settings("edgesPowRatio"));for(e=0,f=h.length;f>e;e++)g=h[e],g[c+"x"]=(((g[b+"x"]||0)-this.x)*j+((g[b+"y"]||0)-this.y)*k)/this.ratio+(d.width||0)/2,g[c+"y"]=(((g[b+"y"]||0)-this.y)*j-((g[b+"x"]||0)-this.x)*k)/this.ratio+(d.height||0)/2,g[c+"size"]=(g[b+"size"]||0)/l;for(e=0,f=i.length;f>e;e++)i[e][c+"size"]=(i[e][b+"size"]||0)/m;return this},sigma.classes.camera.prototype.graphPosition=function(a,b,c){var d=0,e=0,f=Math.cos(this.angle),g=Math.sin(this.angle);return c||(d=-(this.x*f+this.y*g)/this.ratio,e=-(this.y*f-this.x*g)/this.ratio),{x:(a*f+b*g)/this.ratio+d,y:(b*f-a*g)/this.ratio+e}},sigma.classes.camera.prototype.cameraPosition=function(a,b,c){var d=0,e=0,f=Math.cos(this.angle),g=Math.sin(this.angle);return c||(d=-(this.x*f+this.y*g)/this.ratio,e=-(this.y*f-this.x*g)/this.ratio),{x:((a-d)*f-(b-e)*g)*this.ratio,y:((b-e)*f+(a-d)*g)*this.ratio}},sigma.classes.camera.prototype.getMatrix=function(){var a=sigma.utils.matrices.scale(1/this.ratio),b=sigma.utils.matrices.rotation(this.angle),c=sigma.utils.matrices.translation(-this.x,-this.y),d=sigma.utils.matrices.multiply(c,sigma.utils.matrices.multiply(b,a));return d},sigma.classes.camera.prototype.getRectangle=function(a,b){var c=this.cameraPosition(a,0,!0),d=this.cameraPosition(0,b,!0),e=this.cameraPosition(a/2,b/2,!0),f=this.cameraPosition(a/4,0,!0).x,g=this.cameraPosition(0,b/4,!0).y;return{x1:this.x-e.x-f,y1:this.y-e.y-g,x2:this.x-e.x+f+c.x,y2:this.y-e.y-g+c.y,height:Math.sqrt(Math.pow(d.x,2)+Math.pow(d.y+2*g,2))}}}.call(this),function(a){"use strict";function b(a,b){var c=b.x+b.width/2,d=b.y+b.height/2,e=a.yd;d++)a.x2>=b[d][0].x&&a.x1<=b[d][1].x&&a.y1+a.height>=b[d][0].y&&a.y1<=b[d][2].y&&c.push(d);return c}function d(a,b){for(var c=[],d=0;4>d;d++)j.collision(a,b[d])&&c.push(d);return c}function e(a,b){var c,d,e=b.level+1,f=Math.round(b.bounds.width/2),g=Math.round(b.bounds.height/2),h=Math.round(b.bounds.x),j=Math.round(b.bounds.y);switch(a){case 0:c=h,d=j;break;case 1:c=h+f,d=j;break;case 2:c=h,d=j+g;break;case 3:c=h+f,d=j+g}return i({x:c,y:d,width:f,height:g},e,b.maxElements,b.maxLevel)}function f(b,d,g){if(g.leveli;i++)g.nodes[h[i]]===a&&(g.nodes[h[i]]=e(h[i],g)),f(b,d,g.nodes[h[i]]);else g.elements.push(b)}function g(c,d){if(d.levelg;g++)c.nodes[f[g]]!==a&&h(b,c.nodes[f[g]],d,e);else for(var j=0,k=c.elements.length;k>j;j++)e[c.elements[j].id]===a&&(e[c.elements[j].id]=c.elements[j]);return e}function i(a,b,c,d){return{level:b||0,bounds:a,corners:j.splitSquare(a),maxElements:c||20,maxLevel:d||4,elements:[],nodes:[]}}var j={pointToSquare:function(a){return{x1:a.x-a.size,y1:a.y-a.size,x2:a.x+a.size,y2:a.y-a.size,height:2*a.size}},isAxisAligned:function(a){return a.x1===a.x2||a.y1===a.y2},axisAlignedTopPoints:function(a){return a.y1===a.y2&&a.x1a.y1?{x1:a.x1-a.height,y1:a.y1,x2:a.x1,y2:a.y1,height:a.height}:a.x1===a.x2&&a.y2f;f++){var g=this.projection(b[f],a),h=this.projection(c[f],a);d.push(g.x*a.x+g.y*a.y),e.push(h.x*a.x+h.y*a.y)}var i=Math.max.apply(Math,d),j=Math.max.apply(Math,e),k=Math.min.apply(Math,d),l=Math.min.apply(Math,e);return i>=l&&j>=k},collision:function(a,b){for(var c=this.axis(a,b),d=!0,e=0;4>e;e++)d=d&&this.axisCollision(c[e],a,b);return d}},k=function(){this._geom=j,this._tree=null,this._cache={query:!1,result:!1}};k.prototype.index=function(a,b){if(!b.bounds)throw"sigma.classes.quad.index: bounds information not given.";var c=b.prefix||"";this._tree=i(b.bounds,0,b.maxElements,b.maxLevel);for(var d=0,e=a.length;e>d;d++)f(a[d],j.pointToSquare({x:a[d][c+"x"],y:a[d][c+"y"],size:a[d][c+"size"]}),this._tree);return this._cache={query:!1,result:!1},this._tree},k.prototype.point=function(a,b){return this._tree?g({x:a,y:b},this._tree)||[]:[]},k.prototype.area=function(a){var b,e,f=JSON.stringify(a);if(this._cache.query===f)return this._cache.result;j.isAxisAligned(a)?(b=c,e=j.axisAlignedTopPoints(a)):(b=d,e=j.rectangleCorners(a));var g=this._tree?h(e,this._tree,b):[],i=[];for(var k in g)i.push(g[k]);return this._cache.query=f,this._cache.result=i,i},"undefined"!=typeof this.sigma?(this.sigma.classes=this.sigma.classes||{},this.sigma.classes.quad=k):"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=k),exports.quad=k):this.quad=k}.call(this),function(a){"use strict";function b(a,b){var c=b.x+b.width/2,d=b.y+b.height/2,e=a.yd;d++)a.x2>=b[d][0].x&&a.x1<=b[d][1].x&&a.y1+a.height>=b[d][0].y&&a.y1<=b[d][2].y&&c.push(d);return c}function d(a,b){for(var c=[],d=0;4>d;d++)j.collision(a,b[d])&&c.push(d);return c}function e(a,b){var c,d,e=b.level+1,f=Math.round(b.bounds.width/2),g=Math.round(b.bounds.height/2),h=Math.round(b.bounds.x),j=Math.round(b.bounds.y);switch(a){case 0:c=h,d=j;break;case 1:c=h+f,d=j;break;case 2:c=h,d=j+g;break;case 3:c=h+f,d=j+g}return i({x:c,y:d,width:f,height:g},e,b.maxElements,b.maxLevel)}function f(b,d,g){if(g.leveli;i++)g.nodes[h[i]]===a&&(g.nodes[h[i]]=e(h[i],g)),f(b,d,g.nodes[h[i]]);else g.elements.push(b)}function g(c,d){if(d.levelg;g++)c.nodes[f[g]]!==a&&h(b,c.nodes[f[g]],d,e);else for(var j=0,k=c.elements.length;k>j;j++)e[c.elements[j].id]===a&&(e[c.elements[j].id]=c.elements[j]);return e}function i(a,b,c,d){return{level:b||0,bounds:a,corners:j.splitSquare(a),maxElements:c||40,maxLevel:d||8,elements:[],nodes:[]}}var j={pointToSquare:function(a){return{x1:a.x-a.size,y1:a.y-a.size,x2:a.x+a.size,y2:a.y-a.size,height:2*a.size}},lineToSquare:function(a){return a.y1a.y1?{x1:a.x1-a.height,y1:a.y1,x2:a.x1,y2:a.y1,height:a.height}:a.x1===a.x2&&a.y2f;f++){var g=this.projection(b[f],a),h=this.projection(c[f],a);d.push(g.x*a.x+g.y*a.y),e.push(h.x*a.x+h.y*a.y)}var i=Math.max.apply(Math,d),j=Math.max.apply(Math,e),k=Math.min.apply(Math,d),l=Math.min.apply(Math,e);return i>=l&&j>=k},collision:function(a,b){for(var c=this.axis(a,b),d=!0,e=0;4>e;e++)d=d&&this.axisCollision(c[e],a,b);return d}},k=function(){this._geom=j,this._tree=null,this._cache={query:!1,result:!1},this._enabled=!0};k.prototype.index=function(a,b){if(!this._enabled)return this._tree;if(!b.bounds)throw"sigma.classes.edgequad.index: bounds information not given.";var c,d,e,g,h,k=b.prefix||"";this._tree=i(b.bounds,0,b.maxElements,b.maxLevel);for(var l=a.edges(),m=0,n=l.length;n>m;m++)d=a.nodes(l[m].source),e=a.nodes(l[m].target),h={x1:d[k+"x"],y1:d[k+"y"],x2:e[k+"x"],y2:e[k+"y"],size:l[m][k+"size"]||0},"curve"===l[m].type||"curvedArrow"===l[m].type?d.id===e.id?(g={x:d[k+"x"],y:d[k+"y"],size:d[k+"size"]||0},f(l[m],j.selfLoopToSquare(g),this._tree)):(c=sigma.utils.getQuadraticControlPoint(h.x1,h.y1,h.x2,h.y2),f(l[m],j.quadraticCurveToSquare(h,c),this._tree)):f(l[m],j.lineToSquare(h),this._tree);return this._cache={query:!1,result:!1},this._tree},k.prototype.point=function(a,b){return this._enabled&&this._tree?g({x:a,y:b},this._tree)||[]:[]},k.prototype.area=function(a){if(!this._enabled)return[];var b,e,f=JSON.stringify(a);if(this._cache.query===f)return this._cache.result;j.isAxisAligned(a)?(b=c,e=j.axisAlignedTopPoints(a)):(b=d,e=j.rectangleCorners(a));var g=this._tree?h(e,this._tree,b):[],i=[];for(var k in g)i.push(g[k]);return this._cache.query=f,this._cache.result=i,i},"undefined"!=typeof this.sigma?(this.sigma.classes=this.sigma.classes||{},this.sigma.classes.edgequad=k):"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=k),exports.edgequad=k):this.edgequad=k}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.captors"),sigma.captors.mouse=function(a,b,c){function d(a){var b,c,d;return y("mouseEnabled")&&v.dispatchEvent("mousemove",{x:sigma.utils.getX(a)-sigma.utils.getWidth(a)/2,y:sigma.utils.getY(a)-sigma.utils.getHeight(a)/2,clientX:a.clientX,clientY:a.clientY,ctrlKey:a.ctrlKey,metaKey:a.metaKey,altKey:a.altKey,shiftKey:a.shiftKey}),y("mouseEnabled")&&q?(r=!0,s=!0,u&&clearTimeout(u),u=setTimeout(function(){r=!1},y("dragTimeout")),sigma.misc.animation.killAll(x),x.isMoving=!0,d=x.cameraPosition(sigma.utils.getX(a)-o,sigma.utils.getY(a)-p,!0),b=k-d.x,c=l-d.y,(b!==x.x||c!==x.y)&&(m=x.x,n=x.y,x.goTo({x:b,y:c})),a.preventDefault?a.preventDefault():a.returnValue=!1,a.stopPropagation(),!1):void 0}function e(a){if(y("mouseEnabled")&&q){q=!1,u&&clearTimeout(u),x.isMoving=!1;var b=sigma.utils.getX(a),c=sigma.utils.getY(a);r?(sigma.misc.animation.killAll(x),sigma.misc.animation.camera(x,{x:x.x+y("mouseInertiaRatio")*(x.x-m),y:x.y+y("mouseInertiaRatio")*(x.y-n)},{easing:"quadraticOut",duration:y("mouseInertiaDuration")})):(o!==b||p!==c)&&x.goTo({x:x.x,y:x.y}),v.dispatchEvent("mouseup",{x:b-sigma.utils.getWidth(a)/2,y:c-sigma.utils.getHeight(a)/2,clientX:a.clientX,clientY:a.clientY,ctrlKey:a.ctrlKey,metaKey:a.metaKey,altKey:a.altKey,shiftKey:a.shiftKey}),r=!1}}function f(a){if(y("mouseEnabled"))switch(k=x.x,l=x.y,m=x.x,n=x.y,o=sigma.utils.getX(a),p=sigma.utils.getY(a),s=!1,t=(new Date).getTime(),a.which){case 2:break;case 3:v.dispatchEvent("rightclick",{x:o-sigma.utils.getWidth(a)/2,y:p-sigma.utils.getHeight(a)/2,clientX:a.clientX,clientY:a.clientY,ctrlKey:a.ctrlKey,metaKey:a.metaKey,altKey:a.altKey,shiftKey:a.shiftKey});break;default:q=!0,v.dispatchEvent("mousedown",{x:o-sigma.utils.getWidth(a)/2,y:p-sigma.utils.getHeight(a)/2,clientX:a.clientX,clientY:a.clientY,ctrlKey:a.ctrlKey,metaKey:a.metaKey,altKey:a.altKey,shiftKey:a.shiftKey})}}function g(a){y("mouseEnabled")&&v.dispatchEvent("mouseout")}function h(a){return y("mouseEnabled")&&v.dispatchEvent("click",{x:sigma.utils.getX(a)-sigma.utils.getWidth(a)/2,y:sigma.utils.getY(a)-sigma.utils.getHeight(a)/2,clientX:a.clientX,clientY:a.clientY,ctrlKey:a.ctrlKey,metaKey:a.metaKey,altKey:a.altKey,shiftKey:a.shiftKey,isDragging:(new Date).getTime()-t>100&&s}),a.preventDefault?a.preventDefault():a.returnValue=!1,a.stopPropagation(),!1}function i(a){var b,c,d;return y("mouseEnabled")?(c=1/y("doubleClickZoomingRatio"),v.dispatchEvent("doubleclick",{x:o-sigma.utils.getWidth(a)/2,y:p-sigma.utils.getHeight(a)/2,clientX:a.clientX,clientY:a.clientY,ctrlKey:a.ctrlKey,metaKey:a.metaKey,altKey:a.altKey,shiftKey:a.shiftKey}),y("doubleClickEnabled")&&(b=x.cameraPosition(sigma.utils.getX(a)-sigma.utils.getWidth(a)/2,sigma.utils.getY(a)-sigma.utils.getHeight(a)/2,!0),d={duration:y("doubleClickZoomDuration")},sigma.utils.zoomTo(x,b.x,b.y,c,d)),a.preventDefault?a.preventDefault():a.returnValue=!1,a.stopPropagation(),!1):void 0}function j(a){var b,c,d;return y("mouseEnabled")&&y("mouseWheelEnabled")?(c=sigma.utils.getDelta(a)>0?1/y("zoomingRatio"):y("zoomingRatio"),b=x.cameraPosition(sigma.utils.getX(a)-sigma.utils.getWidth(a)/2,sigma.utils.getY(a)-sigma.utils.getHeight(a)/2,!0),d={duration:y("mouseZoomDuration")},sigma.utils.zoomTo(x,b.x,b.y,c,d),a.preventDefault?a.preventDefault():a.returnValue=!1,a.stopPropagation(),!1):void 0}var k,l,m,n,o,p,q,r,s,t,u,v=this,w=a,x=b,y=c;sigma.classes.dispatcher.extend(this),sigma.utils.doubleClick(w,"click",i),w.addEventListener("DOMMouseScroll",j,!1),w.addEventListener("mousewheel",j,!1),w.addEventListener("mousemove",d,!1),w.addEventListener("mousedown",f,!1),w.addEventListener("click",h,!1),w.addEventListener("mouseout",g,!1),document.addEventListener("mouseup",e,!1),this.kill=function(){sigma.utils.unbindDoubleClick(w,"click"),w.removeEventListener("DOMMouseScroll",j),w.removeEventListener("mousewheel",j),w.removeEventListener("mousemove",d),w.removeEventListener("mousedown",f),w.removeEventListener("click",h),w.removeEventListener("mouseout",g),document.removeEventListener("mouseup",e)}}}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.captors"),sigma.captors.touch=function(a,b,c){function d(a){var b=sigma.utils.getOffset(B);return{x:a.pageX-b.left,y:a.pageY-b.top}}function e(a){if(D("touchEnabled")){var b,c,e,f,g,h;switch(E=a.touches,E.length){case 1:C.isMoving=!0,w=1,i=C.x,j=C.y,m=C.x,n=C.y,g=d(E[0]),q=g.x,r=g.y;break;case 2:return C.isMoving=!0,w=2,g=d(E[0]),h=d(E[1]),b=g.x,e=g.y,c=h.x,f=h.y,m=C.x,n=C.y,k=C.angle,l=C.ratio,i=C.x,j=C.y,q=b,r=e,s=c,t=f,u=Math.atan2(t-r,s-q),v=Math.sqrt(Math.pow(t-r,2)+Math.pow(s-q,2)),a.preventDefault(),!1}}}function f(a){if(D("touchEnabled")){E=a.touches;var b=D("touchInertiaRatio");switch(z&&(x=!1,clearTimeout(z)),w){case 2:if(1===a.touches.length){e(a),a.preventDefault();break}case 1:C.isMoving=!1,A.dispatchEvent("stopDrag"),x&&(y=!1,sigma.misc.animation.camera(C,{x:C.x+b*(C.x-m),y:C.y+b*(C.y-n)},{easing:"quadraticOut",duration:D("touchInertiaDuration")})),x=!1,w=0}}}function g(a){if(!y&&D("touchEnabled")){var b,c,e,f,g,h,B,F,G,H,I,J,K,L,M,N,O;switch(E=a.touches,x=!0,z&&clearTimeout(z),z=setTimeout(function(){x=!1},D("dragTimeout")),w){case 1:F=d(E[0]),b=F.x,e=F.y,H=C.cameraPosition(b-q,e-r,!0),L=i-H.x,M=j-H.y,(L!==C.x||M!==C.y)&&(m=C.x,n=C.y,C.goTo({x:L,y:M}),A.dispatchEvent("mousemove",{x:F.x-sigma.utils.getWidth(a)/2,y:F.y-sigma.utils.getHeight(a)/2,clientX:a.clientX,clientY:a.clientY,ctrlKey:a.ctrlKey,metaKey:a.metaKey,altKey:a.altKey,shiftKey:a.shiftKey}),A.dispatchEvent("drag"));break;case 2:F=d(E[0]),G=d(E[1]),b=F.x,e=F.y,c=G.x,f=G.y,I=C.cameraPosition((q+s)/2-sigma.utils.getWidth(a)/2,(r+t)/2-sigma.utils.getHeight(a)/2,!0),B=C.cameraPosition((b+c)/2-sigma.utils.getWidth(a)/2,(e+f)/2-sigma.utils.getHeight(a)/2,!0),J=Math.atan2(f-e,c-b)-u,K=Math.sqrt(Math.pow(f-e,2)+Math.pow(c-b,2))/v,b=I.x,e=I.y,N=l/K,b*=K,e*=K,O=k-J,g=Math.cos(-J),h=Math.sin(-J),c=b*g+e*h,f=e*g-b*h,b=c,e=f,L=b-B.x+i,M=e-B.y+j,(N!==C.ratio||O!==C.angle||L!==C.x||M!==C.y)&&(m=C.x,n=C.y,o=C.angle,p=C.ratio,C.goTo({x:L,y:M,angle:O,ratio:N}),A.dispatchEvent("drag"))}return a.preventDefault(),!1}}function h(a){var b,c,e;return a.touches&&1===a.touches.length&&D("touchEnabled")?(y=!0,c=1/D("doubleClickZoomingRatio"),b=d(a.touches[0]),A.dispatchEvent("doubleclick",{x:b.x-sigma.utils.getWidth(a)/2,y:b.y-sigma.utils.getHeight(a)/2,clientX:a.clientX,clientY:a.clientY,ctrlKey:a.ctrlKey,metaKey:a.metaKey,altKey:a.altKey,shiftKey:a.shiftKey}),D("doubleClickEnabled")&&(b=C.cameraPosition(b.x-sigma.utils.getWidth(a)/2,b.y-sigma.utils.getHeight(a)/2,!0),e={duration:D("doubleClickZoomDuration"),onComplete:function(){y=!1}},sigma.utils.zoomTo(C,b.x,b.y,c,e)),a.preventDefault?a.preventDefault():a.returnValue=!1,a.stopPropagation(),!1):void 0}var i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A=this,B=a,C=b,D=c,E=[];sigma.classes.dispatcher.extend(this),sigma.utils.doubleClick(B,"touchstart",h),B.addEventListener("touchstart",e,!1),B.addEventListener("touchend",f,!1),B.addEventListener("touchcancel",f,!1),B.addEventListener("touchleave",f,!1),B.addEventListener("touchmove",g,!1),this.kill=function(){sigma.utils.unbindDoubleClick(B,"touchstart"),B.addEventListener("touchstart",e),B.addEventListener("touchend",f),B.addEventListener("touchcancel",f),B.addEventListener("touchleave",f),B.addEventListener("touchmove",g)}}}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";if("undefined"==typeof conrad)throw"conrad is not declared";sigma.utils.pkg("sigma.renderers"),sigma.renderers.canvas=function(a,b,c,d){if("object"!=typeof d)throw"sigma.renderers.canvas: Wrong arguments.";if(!(d.container instanceof HTMLElement))throw"Container not found.";var e,f,g,h;for(sigma.classes.dispatcher.extend(this),Object.defineProperty(this,"conradId",{value:sigma.utils.id()}),this.graph=a,this.camera=b,this.contexts={},this.domElements={},this.options=d,this.container=this.options.container,this.settings="object"==typeof d.settings&&d.settings?c.embedObjects(d.settings):c,this.nodesOnScreen=[],this.edgesOnScreen=[],this.jobs={},this.options.prefix="renderer"+this.conradId+":",this.settings("batchEdgesDrawing")?(this.initDOM("canvas","edges"),this.initDOM("canvas","scene"),this.contexts.nodes=this.contexts.scene,this.contexts.labels=this.contexts.scene):(this.initDOM("canvas","scene"),this.contexts.edges=this.contexts.scene,this.contexts.nodes=this.contexts.scene,this.contexts.labels=this.contexts.scene),this.initDOM("canvas","mouse"),this.contexts.hover=this.contexts.mouse,this.captors=[],g=this.options.captors||[sigma.captors.mouse,sigma.captors.touch],e=0,f=g.length;f>e;e++)h="function"==typeof g[e]?g[e]:sigma.captors[g[e]],this.captors.push(new h(this.domElements.mouse,this.camera,this.settings));sigma.misc.bindEvents.call(this,this.options.prefix),sigma.misc.drawHovers.call(this,this.options.prefix),this.resize(!1)},sigma.renderers.canvas.prototype.render=function(b){b=b||{};var c,d,e,f,g,h,i,j,k,l,m,n,o,p={},q=this.graph,r=this.graph.nodes,s=(this.options.prefix||"",this.settings(b,"drawEdges")),t=this.settings(b,"drawNodes"),u=this.settings(b,"drawLabels"),v=this.settings(b,"drawEdgeLabels"),w=this.settings.embedObjects(b,{prefix:this.options.prefix});this.resize(!1),this.settings(b,"hideEdgesOnMove")&&(this.camera.isAnimated||this.camera.isMoving)&&(s=!1),this.camera.applyView(a,this.options.prefix,{width:this.width,height:this.height}),this.clear();for(e in this.jobs)conrad.hasJob(e)&&conrad.killJob(e);for(this.edgesOnScreen=[],this.nodesOnScreen=this.camera.quadtree.area(this.camera.getRectangle(this.width,this.height)),c=this.nodesOnScreen,d=0,f=c.length;f>d;d++)p[c[d].id]=c[d];if(s){for(c=q.edges(),d=0,f=c.length;f>d;d++)g=c[d],!p[g.source]&&!p[g.target]||g.hidden||r(g.source).hidden||r(g.target).hidden||this.edgesOnScreen.push(g);if(this.settings(b,"batchEdgesDrawing"))h="edges_"+this.conradId,n=w("canvasEdgesBatchSize"),l=this.edgesOnScreen,f=l.length,k=0,i=Math.min(l.length,k+n),j=function(){for(o=this.contexts.edges.globalCompositeOperation,this.contexts.edges.globalCompositeOperation="destination-over",m=sigma.canvas.edges,d=k;i>d;d++)g=l[d],(m[g.type||this.settings(b,"defaultEdgeType")]||m.def)(g,q.nodes(g.source),q.nodes(g.target),this.contexts.edges,w);if(v)for(m=sigma.canvas.edges.labels,d=k;i>d;d++)g=l[d],g.hidden||(m[g.type||this.settings(b,"defaultEdgeType")]||m.def)(g,q.nodes(g.source),q.nodes(g.target),this.contexts.labels,w);return this.contexts.edges.globalCompositeOperation=o,i===l.length?(delete this.jobs[h],!1):(k=i+1,i=Math.min(l.length,k+n),!0)},this.jobs[h]=j,conrad.addJob(h,j.bind(this));else{for(m=sigma.canvas.edges,c=this.edgesOnScreen,d=0,f=c.length;f>d;d++)g=c[d],(m[g.type||this.settings(b,"defaultEdgeType")]||m.def)(g,q.nodes(g.source),q.nodes(g.target),this.contexts.edges,w);if(v)for(m=sigma.canvas.edges.labels,c=this.edgesOnScreen,d=0,f=c.length;f>d;d++)c[d].hidden||(m[c[d].type||this.settings(b,"defaultEdgeType")]||m.def)(c[d],q.nodes(c[d].source),q.nodes(c[d].target),this.contexts.labels,w)}}if(t)for(m=sigma.canvas.nodes,c=this.nodesOnScreen,d=0,f=c.length;f>d;d++)c[d].hidden||(m[c[d].type||this.settings(b,"defaultNodeType")]||m.def)(c[d],this.contexts.nodes,w);if(u)for(m=sigma.canvas.labels,c=this.nodesOnScreen,d=0,f=c.length;f>d;d++)c[d].hidden||(m[c[d].type||this.settings(b,"defaultNodeType")]||m.def)(c[d],this.contexts.labels,w);return this.dispatchEvent("render"),this},sigma.renderers.canvas.prototype.initDOM=function(a,b){var c=document.createElement(a);c.style.position="absolute",c.setAttribute("class","sigma-"+b),this.domElements[b]=c,this.container.appendChild(c),"canvas"===a.toLowerCase()&&(this.contexts[b]=c.getContext("2d"))},sigma.renderers.canvas.prototype.resize=function(b,c){var d,e=this.width,f=this.height,g=1;if(b!==a&&c!==a?(this.width=b,this.height=c):(this.width=this.container.offsetWidth,this.height=this.container.offsetHeight,b=this.width,c=this.height),e!==this.width||f!==this.height)for(d in this.domElements)this.domElements[d].style.width=b+"px",this.domElements[d].style.height=c+"px","canvas"===this.domElements[d].tagName.toLowerCase()&&(this.domElements[d].setAttribute("width",b*g+"px"),this.domElements[d].setAttribute("height",c*g+"px"),1!==g&&this.contexts[d].scale(g,g));return this},sigma.renderers.canvas.prototype.clear=function(){var a;for(a in this.domElements)"CANVAS"===this.domElements[a].tagName&&(this.domElements[a].width=this.domElements[a].width);return this},sigma.renderers.canvas.prototype.kill=function(){for(var a,b;b=this.captors.pop();)b.kill();delete this.captors;for(a in this.domElements)this.domElements[a].parentNode.removeChild(this.domElements[a]),delete this.domElements[a],delete this.contexts[a];delete this.domElements,delete this.contexts},sigma.utils.pkg("sigma.canvas.nodes"),sigma.utils.pkg("sigma.canvas.edges"),sigma.utils.pkg("sigma.canvas.labels")}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.renderers"),sigma.renderers.webgl=function(a,b,c,d){if("object"!=typeof d)throw"sigma.renderers.webgl: Wrong arguments.";if(!(d.container instanceof HTMLElement))throw"Container not found.";var e,f,g,h;for(sigma.classes.dispatcher.extend(this),this.jobs={},Object.defineProperty(this,"conradId",{value:sigma.utils.id()}),this.graph=a,this.camera=b,this.contexts={},this.domElements={},this.options=d,this.container=this.options.container,this.settings="object"==typeof d.settings&&d.settings?c.embedObjects(d.settings):c,this.options.prefix=this.camera.readPrefix,Object.defineProperty(this,"nodePrograms",{value:{}}),Object.defineProperty(this,"edgePrograms",{value:{}}),Object.defineProperty(this,"nodeFloatArrays",{value:{}}),Object.defineProperty(this,"edgeFloatArrays",{value:{}}),this.settings(d,"batchEdgesDrawing")?(this.initDOM("canvas","edges",!0),this.initDOM("canvas","nodes",!0)):(this.initDOM("canvas","scene",!0),this.contexts.nodes=this.contexts.scene,this.contexts.edges=this.contexts.scene),this.initDOM("canvas","labels"),this.initDOM("canvas","mouse"),this.contexts.hover=this.contexts.mouse,this.captors=[],g=this.options.captors||[sigma.captors.mouse,sigma.captors.touch],e=0,f=g.length;f>e;e++)h="function"==typeof g[e]?g[e]:sigma.captors[g[e]],this.captors.push(new h(this.domElements.mouse,this.camera,this.settings));sigma.misc.bindEvents.call(this,this.camera.prefix),sigma.misc.drawHovers.call(this,this.camera.prefix),this.resize()},sigma.renderers.webgl.prototype.process=function(){var a,b,c,d,e,f,g=this.graph,h=sigma.utils.extend(h,this.options);for(d in this.nodeFloatArrays)delete this.nodeFloatArrays[d];for(d in this.edgeFloatArrays)delete this.edgeFloatArrays[d];for(a=g.edges(),b=0,c=a.length;c>b;b++)e=a[b].type||this.settings(h,"defaultEdgeType"),d=e&&sigma.webgl.edges[e]?e:"def",this.edgeFloatArrays[d]||(this.edgeFloatArrays[d]={edges:[]}),this.edgeFloatArrays[d].edges.push(a[b]);for(a=g.nodes(),b=0,c=a.length;c>b;b++)e=a[b].type||this.settings(h,"defaultNodeType"),d=e&&sigma.webgl.nodes[e]?e:"def",this.nodeFloatArrays[d]||(this.nodeFloatArrays[d]={nodes:[]}),this.nodeFloatArrays[d].nodes.push(a[b]);for(d in this.edgeFloatArrays)for(f=sigma.webgl.edges[d],a=this.edgeFloatArrays[d].edges,b=0,c=a.length;c>b;b++)this.edgeFloatArrays[d].array||(this.edgeFloatArrays[d].array=new Float32Array(a.length*f.POINTS*f.ATTRIBUTES)),a[b].hidden||g.nodes(a[b].source).hidden||g.nodes(a[b].target).hidden||f.addEdge(a[b],g.nodes(a[b].source),g.nodes(a[b].target),this.edgeFloatArrays[d].array,b*f.POINTS*f.ATTRIBUTES,h.prefix,this.settings);for(d in this.nodeFloatArrays)for(f=sigma.webgl.nodes[d],a=this.nodeFloatArrays[d].nodes,b=0,c=a.length;c>b;b++)this.nodeFloatArrays[d].array||(this.nodeFloatArrays[d].array=new Float32Array(a.length*f.POINTS*f.ATTRIBUTES)),a[b].hidden||f.addNode(a[b],this.nodeFloatArrays[d].array,b*f.POINTS*f.ATTRIBUTES,h.prefix,this.settings);return this},sigma.renderers.webgl.prototype.render=function(b){var c,d,e,f,g,h,i=this,j=(this.graph,this.contexts.nodes),k=this.contexts.edges,l=this.camera.getMatrix(),m=sigma.utils.extend(b,this.options),n=this.settings(m,"drawLabels"),o=this.settings(m,"drawEdges"),p=this.settings(m,"drawNodes");this.resize(!1),this.settings(m,"hideEdgesOnMove")&&(this.camera.isAnimated||this.camera.isMoving)&&(o=!1),this.clear(),l=sigma.utils.matrices.multiply(l,sigma.utils.matrices.translation(this.width/2,this.height/2));for(f in this.jobs)conrad.hasJob(f)&&conrad.killJob(f);if(o)if(this.settings(m,"batchEdgesDrawing"))(function(){var a,b,c,d,e,f,g,h,i;c="edges_"+this.conradId,i=this.settings(m,"webglEdgesBatchSize"),a=Object.keys(this.edgeFloatArrays),a.length&&(b=0,h=sigma.webgl.edges[a[b]],e=this.edgeFloatArrays[a[b]].array,g=0,f=Math.min(g+i*h.POINTS,e.length/h.ATTRIBUTES),d=function(){return this.edgePrograms[a[b]]||(this.edgePrograms[a[b]]=h.initProgram(k)),f>g&&(k.useProgram(this.edgePrograms[a[b]]),h.render(k,this.edgePrograms[a[b]],e,{settings:this.settings,matrix:l,width:this.width,height:this.height,ratio:this.camera.ratio,scalingRatio:this.settings(m,"webglOversamplingRatio"),start:g,count:f-g})),f>=e.length/h.ATTRIBUTES&&b===a.length-1?(delete this.jobs[c],!1):(f>=e.length/h.ATTRIBUTES?(b++,e=this.edgeFloatArrays[a[b]].array,h=sigma.webgl.edges[a[b]],g=0,f=Math.min(g+i*h.POINTS,e.length/h.ATTRIBUTES)):(g=f,f=Math.min(g+i*h.POINTS,e.length/h.ATTRIBUTES)),!0)},this.jobs[c]=d,conrad.addJob(c,d.bind(this)))}).call(this);else for(f in this.edgeFloatArrays)h=sigma.webgl.edges[f],this.edgePrograms[f]||(this.edgePrograms[f]=h.initProgram(k)),this.edgeFloatArrays[f]&&(k.useProgram(this.edgePrograms[f]),h.render(k,this.edgePrograms[f],this.edgeFloatArrays[f].array,{ -settings:this.settings,matrix:l,width:this.width,height:this.height,ratio:this.camera.ratio,scalingRatio:this.settings(m,"webglOversamplingRatio")}));if(p){j.blendFunc(j.SRC_ALPHA,j.ONE_MINUS_SRC_ALPHA),j.enable(j.BLEND);for(f in this.nodeFloatArrays)h=sigma.webgl.nodes[f],this.nodePrograms[f]||(this.nodePrograms[f]=h.initProgram(j)),this.nodeFloatArrays[f]&&(j.useProgram(this.nodePrograms[f]),h.render(j,this.nodePrograms[f],this.nodeFloatArrays[f].array,{settings:this.settings,matrix:l,width:this.width,height:this.height,ratio:this.camera.ratio,scalingRatio:this.settings(m,"webglOversamplingRatio")}))}if(n)for(c=this.camera.quadtree.area(this.camera.getRectangle(this.width,this.height)),this.camera.applyView(a,a,{nodes:c,edges:[],width:this.width,height:this.height}),g=function(a){return i.settings({prefix:i.camera.prefix},a)},d=0,e=c.length;e>d;d++)c[d].hidden||(sigma.canvas.labels[c[d].type||this.settings(m,"defaultNodeType")]||sigma.canvas.labels.def)(c[d],this.contexts.labels,g);return this.dispatchEvent("render"),this},sigma.renderers.webgl.prototype.initDOM=function(a,b,c){var d=document.createElement(a),e=this;d.style.position="absolute",d.setAttribute("class","sigma-"+b),this.domElements[b]=d,this.container.appendChild(d),"canvas"===a.toLowerCase()&&(this.contexts[b]=d.getContext(c?"experimental-webgl":"2d",{preserveDrawingBuffer:!0}),c&&(d.addEventListener("webglcontextlost",function(a){a.preventDefault()},!1),d.addEventListener("webglcontextrestored",function(a){e.render()},!1)))},sigma.renderers.webgl.prototype.resize=function(b,c){var d,e=this.width,f=this.height;if(b!==a&&c!==a?(this.width=b,this.height=c):(this.width=this.container.offsetWidth,this.height=this.container.offsetHeight,b=this.width,c=this.height),e!==this.width||f!==this.height)for(d in this.domElements)this.domElements[d].style.width=b+"px",this.domElements[d].style.height=c+"px","canvas"===this.domElements[d].tagName.toLowerCase()&&(this.contexts[d]&&this.contexts[d].scale?(this.domElements[d].setAttribute("width",b+"px"),this.domElements[d].setAttribute("height",c+"px")):(this.domElements[d].setAttribute("width",b*this.settings("webglOversamplingRatio")+"px"),this.domElements[d].setAttribute("height",c*this.settings("webglOversamplingRatio")+"px")));for(d in this.contexts)this.contexts[d]&&this.contexts[d].viewport&&this.contexts[d].viewport(0,0,this.width*this.settings("webglOversamplingRatio"),this.height*this.settings("webglOversamplingRatio"));return this},sigma.renderers.webgl.prototype.clear=function(){var a;for(a in this.domElements)"CANVAS"===this.domElements[a].tagName&&(this.domElements[a].width=this.domElements[a].width);return this.contexts.nodes.clear(this.contexts.nodes.COLOR_BUFFER_BIT),this.contexts.edges.clear(this.contexts.edges.COLOR_BUFFER_BIT),this},sigma.renderers.webgl.prototype.kill=function(){for(var a,b;b=this.captors.pop();)b.kill();delete this.captors;for(a in this.domElements)this.domElements[a].parentNode.removeChild(this.domElements[a]),delete this.domElements[a],delete this.contexts[a];delete this.domElements,delete this.contexts},sigma.utils.pkg("sigma.webgl.nodes"),sigma.utils.pkg("sigma.webgl.edges"),sigma.utils.pkg("sigma.canvas.labels")}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";if("undefined"==typeof conrad)throw"conrad is not declared";sigma.utils.pkg("sigma.renderers"),sigma.renderers.svg=function(a,b,c,d){if("object"!=typeof d)throw"sigma.renderers.svg: Wrong arguments.";if(!(d.container instanceof HTMLElement))throw"Container not found.";var e,f,g,h,i=this;for(sigma.classes.dispatcher.extend(this),this.graph=a,this.camera=b,this.domElements={graph:null,groups:{},nodes:{},edges:{},labels:{},hovers:{}},this.measurementCanvas=null,this.options=d,this.container=this.options.container,this.settings="object"==typeof d.settings&&d.settings?c.embedObjects(d.settings):c,this.settings("freeStyle",!!this.options.freeStyle),this.settings("xmlns","http://www.w3.org/2000/svg"),this.nodesOnScreen=[],this.edgesOnScreen=[],this.options.prefix="renderer"+sigma.utils.id()+":",this.initDOM("svg"),this.captors=[],g=this.options.captors||[sigma.captors.mouse,sigma.captors.touch],e=0,f=g.length;f>e;e++)h="function"==typeof g[e]?g[e]:sigma.captors[g[e]],this.captors.push(new h(this.domElements.graph,this.camera,this.settings));window.addEventListener("resize",function(){i.resize()}),sigma.misc.bindDOMEvents.call(this,this.domElements.graph),this.bindHovers(this.options.prefix),this.resize(!1)},sigma.renderers.svg.prototype.render=function(b){b=b||{};var c,d,e,f,g,h,i,j,k,l={},m=this.graph,n=this.graph.nodes,o=(this.options.prefix||"",this.settings(b,"drawEdges")),p=this.settings(b,"drawNodes"),q=(this.settings(b,"drawLabels"),this.settings.embedObjects(b,{prefix:this.options.prefix,forceLabels:this.options.forceLabels}));for(this.settings(b,"hideEdgesOnMove")&&(this.camera.isAnimated||this.camera.isMoving)&&(o=!1),this.camera.applyView(a,this.options.prefix,{width:this.width,height:this.height}),this.hideDOMElements(this.domElements.nodes),this.hideDOMElements(this.domElements.edges),this.hideDOMElements(this.domElements.labels),this.edgesOnScreen=[],this.nodesOnScreen=this.camera.quadtree.area(this.camera.getRectangle(this.width,this.height)),c=this.nodesOnScreen,d=0,f=c.length;f>d;d++)l[c[d].id]=c[d];for(c=m.edges(),d=0,f=c.length;f>d;d++)g=c[d],!l[g.source]&&!l[g.target]||g.hidden||n(g.source).hidden||n(g.target).hidden||this.edgesOnScreen.push(g);if(j=sigma.svg.nodes,k=sigma.svg.labels,p)for(c=this.nodesOnScreen,d=0,f=c.length;f>d;d++)c[d].hidden||this.domElements.nodes[c[d].id]||(e=(j[c[d].type]||j.def).create(c[d],q),this.domElements.nodes[c[d].id]=e,this.domElements.groups.nodes.appendChild(e),e=(k[c[d].type]||k.def).create(c[d],q),this.domElements.labels[c[d].id]=e,this.domElements.groups.labels.appendChild(e));if(p)for(c=this.nodesOnScreen,d=0,f=c.length;f>d;d++)c[d].hidden||((j[c[d].type]||j.def).update(c[d],this.domElements.nodes[c[d].id],q),(k[c[d].type]||k.def).update(c[d],this.domElements.labels[c[d].id],q));if(j=sigma.svg.edges,o)for(c=this.edgesOnScreen,d=0,f=c.length;f>d;d++)this.domElements.edges[c[d].id]||(h=n(c[d].source),i=n(c[d].target),e=(j[c[d].type]||j.def).create(c[d],h,i,q),this.domElements.edges[c[d].id]=e,this.domElements.groups.edges.appendChild(e));if(o)for(c=this.edgesOnScreen,d=0,f=c.length;f>d;d++)h=n(c[d].source),i=n(c[d].target),(j[c[d].type]||j.def).update(c[d],this.domElements.edges[c[d].id],h,i,q);return this.dispatchEvent("render"),this},sigma.renderers.svg.prototype.initDOM=function(a){var b,c,d,e=document.createElementNS(this.settings("xmlns"),a),f=this.settings("classPrefix");e.style.position="absolute",e.setAttribute("class",f+"-svg"),e.setAttribute("xmlns",this.settings("xmlns")),e.setAttribute("xmlns:xlink","http://www.w3.org/1999/xlink"),e.setAttribute("version","1.1");var g=document.createElement("canvas");g.setAttribute("class",f+"-measurement-canvas"),this.domElements.graph=this.container.appendChild(e);var h=["edges","nodes","labels","hovers"];for(d=0,c=h.length;c>d;d++)b=document.createElementNS(this.settings("xmlns"),"g"),b.setAttributeNS(null,"id",f+"-group-"+h[d]),b.setAttributeNS(null,"class",f+"-group"),this.domElements.groups[h[d]]=this.domElements.graph.appendChild(b);this.container.appendChild(g),this.measurementCanvas=g.getContext("2d")},sigma.renderers.svg.prototype.hideDOMElements=function(a){var b,c;for(c in a)b=a[c],sigma.svg.utils.hide(b);return this},sigma.renderers.svg.prototype.bindHovers=function(a){function b(b){var c=b.data.node,d=g.settings.embedObjects({prefix:a});if(d("enableHovering")){var h=(f[c.type]||f.def).create(c,g.domElements.nodes[c.id],g.measurementCanvas,d);g.domElements.hovers[c.id]=h,g.domElements.groups.hovers.appendChild(h),e=c}}function c(b){var c=b.data.node,d=g.settings.embedObjects({prefix:a});d("enableHovering")&&(g.domElements.groups.hovers.removeChild(g.domElements.hovers[c.id]),e=null,delete g.domElements.hovers[c.id],g.domElements.groups.nodes.appendChild(g.domElements.nodes[c.id]))}function d(){if(e){var b=g.settings.embedObjects({prefix:a});g.domElements.groups.hovers.removeChild(g.domElements.hovers[e.id]),delete g.domElements.hovers[e.id];var c=(f[e.type]||f.def).create(e,g.domElements.nodes[e.id],g.measurementCanvas,b);g.domElements.hovers[e.id]=c,g.domElements.groups.hovers.appendChild(c)}}var e,f=sigma.svg.hovers,g=this;this.bind("overNode",b),this.bind("outNode",c),this.bind("render",d)},sigma.renderers.svg.prototype.resize=function(b,c){var d=this.width,e=this.height,f=1;return b!==a&&c!==a?(this.width=b,this.height=c):(this.width=this.container.offsetWidth,this.height=this.container.offsetHeight,b=this.width,c=this.height),(d!==this.width||e!==this.height)&&(this.domElements.graph.style.width=b+"px",this.domElements.graph.style.height=c+"px","svg"===this.domElements.graph.tagName.toLowerCase()&&(this.domElements.graph.setAttribute("width",b*f),this.domElements.graph.setAttribute("height",c*f))),this},sigma.utils.pkg("sigma.svg.nodes"),sigma.utils.pkg("sigma.svg.edges"),sigma.utils.pkg("sigma.svg.labels")}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.renderers");var b,c=!!a.WebGLRenderingContext;if(c){b=document.createElement("canvas");try{c=!(!b.getContext("webgl")&&!b.getContext("experimental-webgl"))}catch(d){c=!1}}sigma.renderers.def=c?sigma.renderers.webgl:sigma.renderers.canvas}(this),function(){"use strict";sigma.utils.pkg("sigma.webgl.nodes"),sigma.webgl.nodes.def={POINTS:3,ATTRIBUTES:5,addNode:function(a,b,c,d,e){var f=sigma.utils.floatColor(a.color||e("defaultNodeColor"));b[c++]=a[d+"x"],b[c++]=a[d+"y"],b[c++]=a[d+"size"],b[c++]=f,b[c++]=0,b[c++]=a[d+"x"],b[c++]=a[d+"y"],b[c++]=a[d+"size"],b[c++]=f,b[c++]=2*Math.PI/3,b[c++]=a[d+"x"],b[c++]=a[d+"y"],b[c++]=a[d+"size"],b[c++]=f,b[c++]=4*Math.PI/3},render:function(a,b,c,d){var e,f=a.getAttribLocation(b,"a_position"),g=a.getAttribLocation(b,"a_size"),h=a.getAttribLocation(b,"a_color"),i=a.getAttribLocation(b,"a_angle"),j=a.getUniformLocation(b,"u_resolution"),k=a.getUniformLocation(b,"u_matrix"),l=a.getUniformLocation(b,"u_ratio"),m=a.getUniformLocation(b,"u_scale");e=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,e),a.bufferData(a.ARRAY_BUFFER,c,a.DYNAMIC_DRAW),a.uniform2f(j,d.width,d.height),a.uniform1f(l,1/Math.pow(d.ratio,d.settings("nodesPowRatio"))),a.uniform1f(m,d.scalingRatio),a.uniformMatrix3fv(k,!1,d.matrix),a.enableVertexAttribArray(f),a.enableVertexAttribArray(g),a.enableVertexAttribArray(h),a.enableVertexAttribArray(i),a.vertexAttribPointer(f,2,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,0),a.vertexAttribPointer(g,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,8),a.vertexAttribPointer(h,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,12),a.vertexAttribPointer(i,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,16),a.drawArrays(a.TRIANGLES,d.start||0,d.count||c.length/this.ATTRIBUTES)},initProgram:function(a){var b,c,d;return b=sigma.utils.loadShader(a,["attribute vec2 a_position;","attribute float a_size;","attribute float a_color;","attribute float a_angle;","uniform vec2 u_resolution;","uniform float u_ratio;","uniform float u_scale;","uniform mat3 u_matrix;","varying vec4 color;","varying vec2 center;","varying float radius;","void main() {","radius = a_size * u_ratio;","vec2 position = (u_matrix * vec3(a_position, 1)).xy;","center = position * u_scale;","center = vec2(center.x, u_scale * u_resolution.y - center.y);","position = position +","2.0 * radius * vec2(cos(a_angle), sin(a_angle));","position = (position / u_resolution * 2.0 - 1.0) * vec2(1, -1);","radius = radius * u_scale;","gl_Position = vec4(position, 0, 1);","float c = a_color;","color.b = mod(c, 256.0); c = floor(c / 256.0);","color.g = mod(c, 256.0); c = floor(c / 256.0);","color.r = mod(c, 256.0); c = floor(c / 256.0); color /= 255.0;","color.a = 1.0;","}"].join("\n"),a.VERTEX_SHADER),c=sigma.utils.loadShader(a,["precision mediump float;","varying vec4 color;","varying vec2 center;","varying float radius;","void main(void) {","vec4 color0 = vec4(0.0, 0.0, 0.0, 0.0);","vec2 m = gl_FragCoord.xy - center;","float diff = radius - sqrt(m.x * m.x + m.y * m.y);","if (diff > 0.0)","gl_FragColor = color;","else","gl_FragColor = color0;","}"].join("\n"),a.FRAGMENT_SHADER),d=sigma.utils.loadProgram(a,[b,c])}}}(),function(){"use strict";sigma.utils.pkg("sigma.webgl.nodes"),sigma.webgl.nodes.fast={POINTS:1,ATTRIBUTES:4,addNode:function(a,b,c,d,e){b[c++]=a[d+"x"],b[c++]=a[d+"y"],b[c++]=a[d+"size"],b[c++]=sigma.utils.floatColor(a.color||e("defaultNodeColor"))},render:function(a,b,c,d){var e,f=a.getAttribLocation(b,"a_position"),g=a.getAttribLocation(b,"a_size"),h=a.getAttribLocation(b,"a_color"),i=a.getUniformLocation(b,"u_resolution"),j=a.getUniformLocation(b,"u_matrix"),k=a.getUniformLocation(b,"u_ratio"),l=a.getUniformLocation(b,"u_scale");e=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,e),a.bufferData(a.ARRAY_BUFFER,c,a.DYNAMIC_DRAW),a.uniform2f(i,d.width,d.height),a.uniform1f(k,1/Math.pow(d.ratio,d.settings("nodesPowRatio"))),a.uniform1f(l,d.scalingRatio),a.uniformMatrix3fv(j,!1,d.matrix),a.enableVertexAttribArray(f),a.enableVertexAttribArray(g),a.enableVertexAttribArray(h),a.vertexAttribPointer(f,2,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,0),a.vertexAttribPointer(g,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,8),a.vertexAttribPointer(h,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,12),a.drawArrays(a.POINTS,d.start||0,d.count||c.length/this.ATTRIBUTES)},initProgram:function(a){var b,c,d;return b=sigma.utils.loadShader(a,["attribute vec2 a_position;","attribute float a_size;","attribute float a_color;","uniform vec2 u_resolution;","uniform float u_ratio;","uniform float u_scale;","uniform mat3 u_matrix;","varying vec4 color;","void main() {","gl_Position = vec4(","((u_matrix * vec3(a_position, 1)).xy /","u_resolution * 2.0 - 1.0) * vec2(1, -1),","0,","1",");","gl_PointSize = a_size * u_ratio * u_scale * 2.0;","float c = a_color;","color.b = mod(c, 256.0); c = floor(c / 256.0);","color.g = mod(c, 256.0); c = floor(c / 256.0);","color.r = mod(c, 256.0); c = floor(c / 256.0); color /= 255.0;","color.a = 1.0;","}"].join("\n"),a.VERTEX_SHADER),c=sigma.utils.loadShader(a,["precision mediump float;","varying vec4 color;","void main(void) {","gl_FragColor = color;","}"].join("\n"),a.FRAGMENT_SHADER),d=sigma.utils.loadProgram(a,[b,c])}}}(),function(){"use strict";sigma.utils.pkg("sigma.webgl.edges"),sigma.webgl.edges.def={POINTS:6,ATTRIBUTES:7,addEdge:function(a,b,c,d,e,f,g){var h=(a[f+"size"]||1)/2,i=b[f+"x"],j=b[f+"y"],k=c[f+"x"],l=c[f+"y"],m=a.color;if(!m)switch(g("edgeColor")){case"source":m=b.color||g("defaultNodeColor");break;case"target":m=c.color||g("defaultNodeColor");break;default:m=g("defaultEdgeColor")}m=sigma.utils.floatColor(m),d[e++]=i,d[e++]=j,d[e++]=k,d[e++]=l,d[e++]=h,d[e++]=0,d[e++]=m,d[e++]=k,d[e++]=l,d[e++]=i,d[e++]=j,d[e++]=h,d[e++]=1,d[e++]=m,d[e++]=k,d[e++]=l,d[e++]=i,d[e++]=j,d[e++]=h,d[e++]=0,d[e++]=m,d[e++]=k,d[e++]=l,d[e++]=i,d[e++]=j,d[e++]=h,d[e++]=0,d[e++]=m,d[e++]=i,d[e++]=j,d[e++]=k,d[e++]=l,d[e++]=h,d[e++]=1,d[e++]=m,d[e++]=i,d[e++]=j,d[e++]=k,d[e++]=l,d[e++]=h,d[e++]=0,d[e++]=m},render:function(a,b,c,d){var e,f=a.getAttribLocation(b,"a_color"),g=a.getAttribLocation(b,"a_position1"),h=a.getAttribLocation(b,"a_position2"),i=a.getAttribLocation(b,"a_thickness"),j=a.getAttribLocation(b,"a_minus"),k=a.getUniformLocation(b,"u_resolution"),l=a.getUniformLocation(b,"u_matrix"),m=a.getUniformLocation(b,"u_matrixHalfPi"),n=a.getUniformLocation(b,"u_matrixHalfPiMinus"),o=a.getUniformLocation(b,"u_ratio"),p=a.getUniformLocation(b,"u_scale");e=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,e),a.bufferData(a.ARRAY_BUFFER,c,a.STATIC_DRAW),a.uniform2f(k,d.width,d.height),a.uniform1f(o,d.ratio/Math.pow(d.ratio,d.settings("edgesPowRatio"))),a.uniform1f(p,d.scalingRatio),a.uniformMatrix3fv(l,!1,d.matrix),a.uniformMatrix2fv(m,!1,sigma.utils.matrices.rotation(Math.PI/2,!0)),a.uniformMatrix2fv(n,!1,sigma.utils.matrices.rotation(-Math.PI/2,!0)),a.enableVertexAttribArray(f),a.enableVertexAttribArray(g),a.enableVertexAttribArray(h),a.enableVertexAttribArray(i),a.enableVertexAttribArray(j),a.vertexAttribPointer(g,2,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,0),a.vertexAttribPointer(h,2,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,8),a.vertexAttribPointer(i,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,16),a.vertexAttribPointer(j,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,20),a.vertexAttribPointer(f,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,24),a.drawArrays(a.TRIANGLES,d.start||0,d.count||c.length/this.ATTRIBUTES)},initProgram:function(a){var b,c,d;return b=sigma.utils.loadShader(a,["attribute vec2 a_position1;","attribute vec2 a_position2;","attribute float a_thickness;","attribute float a_minus;","attribute float a_color;","uniform vec2 u_resolution;","uniform float u_ratio;","uniform float u_scale;","uniform mat3 u_matrix;","uniform mat2 u_matrixHalfPi;","uniform mat2 u_matrixHalfPiMinus;","varying vec4 color;","void main() {","vec2 position = a_thickness * u_ratio *","normalize(a_position2 - a_position1);","mat2 matrix = a_minus * u_matrixHalfPiMinus +","(1.0 - a_minus) * u_matrixHalfPi;","position = matrix * position + a_position1;","gl_Position = vec4(","((u_matrix * vec3(position, 1)).xy /","u_resolution * 2.0 - 1.0) * vec2(1, -1),","0,","1",");","float c = a_color;","color.b = mod(c, 256.0); c = floor(c / 256.0);","color.g = mod(c, 256.0); c = floor(c / 256.0);","color.r = mod(c, 256.0); c = floor(c / 256.0); color /= 255.0;","color.a = 1.0;","}"].join("\n"),a.VERTEX_SHADER),c=sigma.utils.loadShader(a,["precision mediump float;","varying vec4 color;","void main(void) {","gl_FragColor = color;","}"].join("\n"),a.FRAGMENT_SHADER),d=sigma.utils.loadProgram(a,[b,c])}}}(),function(){"use strict";sigma.utils.pkg("sigma.webgl.edges"),sigma.webgl.edges.fast={POINTS:2,ATTRIBUTES:3,addEdge:function(a,b,c,d,e,f,g){var h=((a[f+"size"]||1)/2,b[f+"x"]),i=b[f+"y"],j=c[f+"x"],k=c[f+"y"],l=a.color;if(!l)switch(g("edgeColor")){case"source":l=b.color||g("defaultNodeColor");break;case"target":l=c.color||g("defaultNodeColor");break;default:l=g("defaultEdgeColor")}l=sigma.utils.floatColor(l),d[e++]=h,d[e++]=i,d[e++]=l,d[e++]=j,d[e++]=k,d[e++]=l},render:function(a,b,c,d){var e,f=a.getAttribLocation(b,"a_color"),g=a.getAttribLocation(b,"a_position"),h=a.getUniformLocation(b,"u_resolution"),i=a.getUniformLocation(b,"u_matrix");e=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,e),a.bufferData(a.ARRAY_BUFFER,c,a.DYNAMIC_DRAW),a.uniform2f(h,d.width,d.height),a.uniformMatrix3fv(i,!1,d.matrix),a.enableVertexAttribArray(g),a.enableVertexAttribArray(f),a.vertexAttribPointer(g,2,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,0),a.vertexAttribPointer(f,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,8),a.lineWidth(3),a.drawArrays(a.LINES,d.start||0,d.count||c.length/this.ATTRIBUTES)},initProgram:function(a){var b,c,d;return b=sigma.utils.loadShader(a,["attribute vec2 a_position;","attribute float a_color;","uniform vec2 u_resolution;","uniform mat3 u_matrix;","varying vec4 color;","void main() {","gl_Position = vec4(","((u_matrix * vec3(a_position, 1)).xy /","u_resolution * 2.0 - 1.0) * vec2(1, -1),","0,","1",");","float c = a_color;","color.b = mod(c, 256.0); c = floor(c / 256.0);","color.g = mod(c, 256.0); c = floor(c / 256.0);","color.r = mod(c, 256.0); c = floor(c / 256.0); color /= 255.0;","color.a = 1.0;","}"].join("\n"),a.VERTEX_SHADER),c=sigma.utils.loadShader(a,["precision mediump float;","varying vec4 color;","void main(void) {","gl_FragColor = color;","}"].join("\n"),a.FRAGMENT_SHADER),d=sigma.utils.loadProgram(a,[b,c])}}}(),function(){"use strict";sigma.utils.pkg("sigma.webgl.edges"),sigma.webgl.edges.arrow={POINTS:9,ATTRIBUTES:11,addEdge:function(a,b,c,d,e,f,g){var h=(a[f+"size"]||1)/2,i=b[f+"x"],j=b[f+"y"],k=c[f+"x"],l=c[f+"y"],m=c[f+"size"],n=a.color;if(!n)switch(g("edgeColor")){case"source":n=b.color||g("defaultNodeColor");break;case"target":n=c.color||g("defaultNodeColor");break;default:n=g("defaultEdgeColor")}n=sigma.utils.floatColor(n),d[e++]=i,d[e++]=j,d[e++]=k,d[e++]=l,d[e++]=h,d[e++]=m,d[e++]=0,d[e++]=0,d[e++]=0,d[e++]=0,d[e++]=n,d[e++]=k,d[e++]=l,d[e++]=i,d[e++]=j,d[e++]=h,d[e++]=m,d[e++]=1,d[e++]=1,d[e++]=0,d[e++]=0,d[e++]=n,d[e++]=k,d[e++]=l,d[e++]=i,d[e++]=j,d[e++]=h,d[e++]=m,d[e++]=1,d[e++]=0,d[e++]=0,d[e++]=0,d[e++]=n,d[e++]=k,d[e++]=l,d[e++]=i,d[e++]=j,d[e++]=h,d[e++]=m,d[e++]=1,d[e++]=0,d[e++]=0,d[e++]=0,d[e++]=n,d[e++]=i,d[e++]=j,d[e++]=k,d[e++]=l,d[e++]=h,d[e++]=m,d[e++]=0,d[e++]=1,d[e++]=0,d[e++]=0,d[e++]=n,d[e++]=i,d[e++]=j,d[e++]=k,d[e++]=l,d[e++]=h,d[e++]=m,d[e++]=0,d[e++]=0,d[e++]=0,d[e++]=0,d[e++]=n,d[e++]=k,d[e++]=l,d[e++]=i,d[e++]=j,d[e++]=h,d[e++]=m,d[e++]=1,d[e++]=0,d[e++]=1,d[e++]=-1,d[e++]=n,d[e++]=k,d[e++]=l,d[e++]=i,d[e++]=j,d[e++]=h,d[e++]=m,d[e++]=1,d[e++]=0,d[e++]=1,d[e++]=0,d[e++]=n,d[e++]=k,d[e++]=l,d[e++]=i,d[e++]=j,d[e++]=h,d[e++]=m,d[e++]=1,d[e++]=0,d[e++]=1,d[e++]=1,d[e++]=n},render:function(a,b,c,d){var e,f=a.getAttribLocation(b,"a_pos1"),g=a.getAttribLocation(b,"a_pos2"),h=a.getAttribLocation(b,"a_thickness"),i=a.getAttribLocation(b,"a_tSize"),j=a.getAttribLocation(b,"a_delay"),k=a.getAttribLocation(b,"a_minus"),l=a.getAttribLocation(b,"a_head"),m=a.getAttribLocation(b,"a_headPosition"),n=a.getAttribLocation(b,"a_color"),o=a.getUniformLocation(b,"u_resolution"),p=a.getUniformLocation(b,"u_matrix"),q=a.getUniformLocation(b,"u_matrixHalfPi"),r=a.getUniformLocation(b,"u_matrixHalfPiMinus"),s=a.getUniformLocation(b,"u_ratio"),t=a.getUniformLocation(b,"u_nodeRatio"),u=a.getUniformLocation(b,"u_arrowHead"),v=a.getUniformLocation(b,"u_scale");e=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,e),a.bufferData(a.ARRAY_BUFFER,c,a.STATIC_DRAW),a.uniform2f(o,d.width,d.height),a.uniform1f(s,d.ratio/Math.pow(d.ratio,d.settings("edgesPowRatio"))),a.uniform1f(t,Math.pow(d.ratio,d.settings("nodesPowRatio"))/d.ratio),a.uniform1f(u,5),a.uniform1f(v,d.scalingRatio),a.uniformMatrix3fv(p,!1,d.matrix),a.uniformMatrix2fv(q,!1,sigma.utils.matrices.rotation(Math.PI/2,!0)),a.uniformMatrix2fv(r,!1,sigma.utils.matrices.rotation(-Math.PI/2,!0)),a.enableVertexAttribArray(f),a.enableVertexAttribArray(g),a.enableVertexAttribArray(h),a.enableVertexAttribArray(i),a.enableVertexAttribArray(j),a.enableVertexAttribArray(k),a.enableVertexAttribArray(l),a.enableVertexAttribArray(m),a.enableVertexAttribArray(n),a.vertexAttribPointer(f,2,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,0),a.vertexAttribPointer(g,2,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,8),a.vertexAttribPointer(h,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,16),a.vertexAttribPointer(i,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,20),a.vertexAttribPointer(j,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,24),a.vertexAttribPointer(k,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,28),a.vertexAttribPointer(l,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,32),a.vertexAttribPointer(m,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,36),a.vertexAttribPointer(n,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,40),a.drawArrays(a.TRIANGLES,d.start||0,d.count||c.length/this.ATTRIBUTES)},initProgram:function(a){var b,c,d;return b=sigma.utils.loadShader(a,["attribute vec2 a_pos1;","attribute vec2 a_pos2;","attribute float a_thickness;","attribute float a_tSize;","attribute float a_delay;","attribute float a_minus;","attribute float a_head;","attribute float a_headPosition;","attribute float a_color;","uniform vec2 u_resolution;","uniform float u_ratio;","uniform float u_nodeRatio;","uniform float u_arrowHead;","uniform float u_scale;","uniform mat3 u_matrix;","uniform mat2 u_matrixHalfPi;","uniform mat2 u_matrixHalfPiMinus;","varying vec4 color;","void main() {","vec2 pos = normalize(a_pos2 - a_pos1);","mat2 matrix = (1.0 - a_head) *","(","a_minus * u_matrixHalfPiMinus +","(1.0 - a_minus) * u_matrixHalfPi",") + a_head * (","a_headPosition * u_matrixHalfPiMinus * 0.6 +","(a_headPosition * a_headPosition - 1.0) * mat2(1.0)",");","pos = a_pos1 + (","(1.0 - a_head) * a_thickness * u_ratio * matrix * pos +","a_head * u_arrowHead * a_thickness * u_ratio * matrix * pos +","a_delay * pos * (","a_tSize / u_nodeRatio +","u_arrowHead * a_thickness * u_ratio",")",");","gl_Position = vec4(","((u_matrix * vec3(pos, 1)).xy /","u_resolution * 2.0 - 1.0) * vec2(1, -1),","0,","1",");","float c = a_color;","color.b = mod(c, 256.0); c = floor(c / 256.0);","color.g = mod(c, 256.0); c = floor(c / 256.0);","color.r = mod(c, 256.0); c = floor(c / 256.0); color /= 255.0;","color.a = 1.0;","}"].join("\n"),a.VERTEX_SHADER),c=sigma.utils.loadShader(a,["precision mediump float;","varying vec4 color;","void main(void) {","gl_FragColor = color;","}"].join("\n"),a.FRAGMENT_SHADER),d=sigma.utils.loadProgram(a,[b,c])}}}(),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.canvas.labels"),sigma.canvas.labels.def=function(a,b,c){var d,e=c("prefix")||"",f=a[e+"size"];f0&&(b.beginPath(),b.fillStyle="node"===c("nodeBorderColor")?a.color||c("defaultNodeColor"):c("defaultNodeBorderColor"),b.arc(a[j+"x"],a[j+"y"],k+c("borderSize"),0,2*Math.PI,!0),b.closePath(),b.fill());var m=sigma.canvas.nodes[a.type]||sigma.canvas.nodes.def;m(a,b,c),a.label&&"string"==typeof a.label&&(b.fillStyle="node"===c("labelHoverColor")?a.color||c("defaultNodeColor"):c("defaultLabelHoverColor"),b.fillText(a.label,Math.round(a[j+"x"]+k+3),Math.round(a[j+"y"]+l/3)))}}.call(this),function(){"use strict";sigma.utils.pkg("sigma.canvas.nodes"),sigma.canvas.nodes.def=function(a,b,c){var d=c("prefix")||"";b.fillStyle=a.color||c("defaultNodeColor"),b.beginPath(),b.arc(a[d+"x"],a[d+"y"],a[d+"size"],0,2*Math.PI,!0),b.closePath(),b.fill()}}(),function(){"use strict";sigma.utils.pkg("sigma.canvas.edges"),sigma.canvas.edges.def=function(a,b,c,d,e){var f=a.color,g=e("prefix")||"",h=a[g+"size"]||1,i=e("edgeColor"),j=e("defaultNodeColor"),k=e("defaultEdgeColor");if(!f)switch(i){case"source":f=b.color||j;break;case"target":f=c.color||j;break;default:f=k}d.strokeStyle=f,d.lineWidth=h,d.beginPath(),d.moveTo(b[g+"x"],b[g+"y"]),d.lineTo(c[g+"x"],c[g+"y"]),d.stroke()}}(),function(){"use strict";sigma.utils.pkg("sigma.canvas.edges"),sigma.canvas.edges.curve=function(a,b,c,d,e){var f=a.color,g=e("prefix")||"",h=a[g+"size"]||1,i=e("edgeColor"),j=e("defaultNodeColor"),k=e("defaultEdgeColor"),l={},m=b[g+"size"],n=b[g+"x"],o=b[g+"y"],p=c[g+"x"],q=c[g+"y"];if(l=b.id===c.id?sigma.utils.getSelfLoopControlPoints(n,o,m):sigma.utils.getQuadraticControlPoint(n,o,p,q),!f)switch(i){case"source":f=b.color||j;break;case"target":f=c.color||j;break;default:f=k}d.strokeStyle=f,d.lineWidth=h,d.beginPath(),d.moveTo(n,o),b.id===c.id?d.bezierCurveTo(l.x1,l.y1,l.x2,l.y2,p,q):d.quadraticCurveTo(l.x,l.y,p,q),d.stroke()}}(),function(){"use strict";sigma.utils.pkg("sigma.canvas.edges"),sigma.canvas.edges.arrow=function(a,b,c,d,e){var f=a.color,g=e("prefix")||"",h=e("edgeColor"),i=e("defaultNodeColor"),j=e("defaultEdgeColor"),k=a[g+"size"]||1,l=c[g+"size"],m=b[g+"x"],n=b[g+"y"],o=c[g+"x"],p=c[g+"y"],q=Math.max(2.5*k,e("minArrowSize")),r=Math.sqrt(Math.pow(o-m,2)+Math.pow(p-n,2)),s=m+(o-m)*(r-q-l)/r,t=n+(p-n)*(r-q-l)/r,u=(o-m)*q/r,v=(p-n)*q/r;if(!f)switch(h){case"source":f=b.color||i;break;case"target":f=c.color||i;break;default:f=j}d.strokeStyle=f,d.lineWidth=k,d.beginPath(),d.moveTo(m,n),d.lineTo(s,t),d.stroke(),d.fillStyle=f,d.beginPath(),d.moveTo(s+u,t+v),d.lineTo(s+.6*v,t-.6*u),d.lineTo(s-.6*v,t+.6*u),d.lineTo(s+u,t+v),d.closePath(),d.fill()}}(),function(){"use strict";sigma.utils.pkg("sigma.canvas.edges"),sigma.canvas.edges.curvedArrow=function(a,b,c,d,e){var f,g,h,i,j,k=a.color,l=e("prefix")||"",m=e("edgeColor"),n=e("defaultNodeColor"),o=e("defaultEdgeColor"),p={},q=a[l+"size"]||1,r=c[l+"size"],s=b[l+"x"],t=b[l+"y"],u=c[l+"x"],v=c[l+"y"],w=Math.max(2.5*q,e("minArrowSize"));if(p=b.id===c.id?sigma.utils.getSelfLoopControlPoints(s,t,r):sigma.utils.getQuadraticControlPoint(s,t,u,v),b.id===c.id?(f=Math.sqrt(Math.pow(u-p.x1,2)+Math.pow(v-p.y1,2)),g=p.x1+(u-p.x1)*(f-w-r)/f,h=p.y1+(v-p.y1)*(f-w-r)/f,i=(u-p.x1)*w/f,j=(v-p.y1)*w/f):(f=Math.sqrt(Math.pow(u-p.x,2)+Math.pow(v-p.y,2)),g=p.x+(u-p.x)*(f-w-r)/f,h=p.y+(v-p.y)*(f-w-r)/f,i=(u-p.x)*w/f,j=(v-p.y)*w/f),!k)switch(m){case"source":k=b.color||n;break;case"target":k=c.color||n;break;default:k=o}d.strokeStyle=k,d.lineWidth=q,d.beginPath(),d.moveTo(s,t),b.id===c.id?d.bezierCurveTo(p.x2,p.y2,p.x1,p.y1,g,h):d.quadraticCurveTo(p.x,p.y,g,h),d.stroke(),d.fillStyle=k,d.beginPath(),d.moveTo(g+i,h+j),d.lineTo(g+.6*j,h-.6*i),d.lineTo(g-.6*j,h+.6*i),d.lineTo(g+i,h+j),d.closePath(),d.fill()}}(),function(){"use strict";sigma.utils.pkg("sigma.canvas.edgehovers"),sigma.canvas.edgehovers.def=function(a,b,c,d,e){var f=a.color,g=e("prefix")||"",h=a[g+"size"]||1,i=e("edgeColor"),j=e("defaultNodeColor"),k=e("defaultEdgeColor");if(!f)switch(i){case"source":f=b.color||j;break;case"target":f=c.color||j;break;default:f=k}f="edge"===e("edgeHoverColor")?a.hover_color||f:a.hover_color||e("defaultEdgeHoverColor")||f,h*=e("edgeHoverSizeRatio"),d.strokeStyle=f,d.lineWidth=h,d.beginPath(),d.moveTo(b[g+"x"],b[g+"y"]),d.lineTo(c[g+"x"],c[g+"y"]),d.stroke()}}(),function(){"use strict";sigma.utils.pkg("sigma.canvas.edgehovers"),sigma.canvas.edgehovers.curve=function(a,b,c,d,e){var f=a.color,g=e("prefix")||"",h=e("edgeHoverSizeRatio")*(a[g+"size"]||1),i=e("edgeColor"),j=e("defaultNodeColor"),k=e("defaultEdgeColor"),l={},m=b[g+"size"],n=b[g+"x"],o=b[g+"y"],p=c[g+"x"],q=c[g+"y"];if(l=b.id===c.id?sigma.utils.getSelfLoopControlPoints(n,o,m):sigma.utils.getQuadraticControlPoint(n,o,p,q),!f)switch(i){case"source":f=b.color||j;break;case"target":f=c.color||j;break;default:f=k}f="edge"===e("edgeHoverColor")?a.hover_color||f:a.hover_color||e("defaultEdgeHoverColor")||f,d.strokeStyle=f,d.lineWidth=h,d.beginPath(),d.moveTo(n,o),b.id===c.id?d.bezierCurveTo(l.x1,l.y1,l.x2,l.y2,p,q):d.quadraticCurveTo(l.x,l.y,p,q),d.stroke()}}(),function(){"use strict";sigma.utils.pkg("sigma.canvas.edgehovers"),sigma.canvas.edgehovers.arrow=function(a,b,c,d,e){var f=a.color,g=e("prefix")||"",h=e("edgeColor"),i=e("defaultNodeColor"),j=e("defaultEdgeColor"),k=a[g+"size"]||1,l=c[g+"size"],m=b[g+"x"],n=b[g+"y"],o=c[g+"x"],p=c[g+"y"]; -k=a.hover?e("edgeHoverSizeRatio")*k:k;var q=2.5*k,r=Math.sqrt(Math.pow(o-m,2)+Math.pow(p-n,2)),s=m+(o-m)*(r-q-l)/r,t=n+(p-n)*(r-q-l)/r,u=(o-m)*q/r,v=(p-n)*q/r;if(!f)switch(h){case"source":f=b.color||i;break;case"target":f=c.color||i;break;default:f=j}f="edge"===e("edgeHoverColor")?a.hover_color||f:a.hover_color||e("defaultEdgeHoverColor")||f,d.strokeStyle=f,d.lineWidth=k,d.beginPath(),d.moveTo(m,n),d.lineTo(s,t),d.stroke(),d.fillStyle=f,d.beginPath(),d.moveTo(s+u,t+v),d.lineTo(s+.6*v,t-.6*u),d.lineTo(s-.6*v,t+.6*u),d.lineTo(s+u,t+v),d.closePath(),d.fill()}}(),function(){"use strict";sigma.utils.pkg("sigma.canvas.edgehovers"),sigma.canvas.edgehovers.curvedArrow=function(a,b,c,d,e){var f,g,h,i,j,k,l=a.color,m=e("prefix")||"",n=e("edgeColor"),o=e("defaultNodeColor"),p=e("defaultEdgeColor"),q={},r=e("edgeHoverSizeRatio")*(a[m+"size"]||1),s=c[m+"size"],t=b[m+"x"],u=b[m+"y"],v=c[m+"x"],w=c[m+"y"];if(q=b.id===c.id?sigma.utils.getSelfLoopControlPoints(t,u,s):sigma.utils.getQuadraticControlPoint(t,u,v,w),b.id===c.id?(f=Math.sqrt(Math.pow(v-q.x1,2)+Math.pow(w-q.y1,2)),g=2.5*r,h=q.x1+(v-q.x1)*(f-g-s)/f,i=q.y1+(w-q.y1)*(f-g-s)/f,j=(v-q.x1)*g/f,k=(w-q.y1)*g/f):(f=Math.sqrt(Math.pow(v-q.x,2)+Math.pow(w-q.y,2)),g=2.5*r,h=q.x+(v-q.x)*(f-g-s)/f,i=q.y+(w-q.y)*(f-g-s)/f,j=(v-q.x)*g/f,k=(w-q.y)*g/f),!l)switch(n){case"source":l=b.color||o;break;case"target":l=c.color||o;break;default:l=p}l="edge"===e("edgeHoverColor")?a.hover_color||l:a.hover_color||e("defaultEdgeHoverColor")||l,d.strokeStyle=l,d.lineWidth=r,d.beginPath(),d.moveTo(t,u),b.id===c.id?d.bezierCurveTo(q.x2,q.y2,q.x1,q.y1,h,i):d.quadraticCurveTo(q.x,q.y,h,i),d.stroke(),d.fillStyle=l,d.beginPath(),d.moveTo(h+j,i+k),d.lineTo(h+.6*k,i-.6*j),d.lineTo(h-.6*k,i+.6*j),d.lineTo(h+j,i+k),d.closePath(),d.fill()}}(),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.canvas.extremities"),sigma.canvas.extremities.def=function(a,b,c,d,e){(sigma.canvas.hovers[b.type]||sigma.canvas.hovers.def)(b,d,e),(sigma.canvas.hovers[c.type]||sigma.canvas.hovers.def)(c,d,e)}}.call(this),function(){"use strict";sigma.utils.pkg("sigma.svg.utils"),sigma.svg.utils={show:function(a){return a.style.display="",this},hide:function(a){return a.style.display="none",this}}}(),function(){"use strict";sigma.utils.pkg("sigma.svg.nodes"),sigma.svg.nodes.def={create:function(a,b){var c=(b("prefix")||"",document.createElementNS(b("xmlns"),"circle"));return c.setAttributeNS(null,"data-node-id",a.id),c.setAttributeNS(null,"class",b("classPrefix")+"-node"),c.setAttributeNS(null,"fill",a.color||b("defaultNodeColor")),c},update:function(a,b,c){var d=c("prefix")||"";return b.setAttributeNS(null,"cx",a[d+"x"]),b.setAttributeNS(null,"cy",a[d+"y"]),b.setAttributeNS(null,"r",a[d+"size"]),c("freeStyle")||b.setAttributeNS(null,"fill",a.color||c("defaultNodeColor")),b.style.display="",this}}}(),function(){"use strict";sigma.utils.pkg("sigma.svg.edges"),sigma.svg.edges.def={create:function(a,b,c,d){var e=a.color,f=(d("prefix")||"",d("edgeColor")),g=d("defaultNodeColor"),h=d("defaultEdgeColor");if(!e)switch(f){case"source":e=b.color||g;break;case"target":e=c.color||g;break;default:e=h}var i=document.createElementNS(d("xmlns"),"line");return i.setAttributeNS(null,"data-edge-id",a.id),i.setAttributeNS(null,"class",d("classPrefix")+"-edge"),i.setAttributeNS(null,"stroke",e),i},update:function(a,b,c,d,e){var f=e("prefix")||"";return b.setAttributeNS(null,"stroke-width",a[f+"size"]||1),b.setAttributeNS(null,"x1",c[f+"x"]),b.setAttributeNS(null,"y1",c[f+"y"]),b.setAttributeNS(null,"x2",d[f+"x"]),b.setAttributeNS(null,"y2",d[f+"y"]),b.style.display="",this}}}(),function(){"use strict";sigma.utils.pkg("sigma.svg.edges"),sigma.svg.edges.curve={create:function(a,b,c,d){var e=a.color,f=(d("prefix")||"",d("edgeColor")),g=d("defaultNodeColor"),h=d("defaultEdgeColor");if(!e)switch(f){case"source":e=b.color||g;break;case"target":e=c.color||g;break;default:e=h}var i=document.createElementNS(d("xmlns"),"path");return i.setAttributeNS(null,"data-edge-id",a.id),i.setAttributeNS(null,"class",d("classPrefix")+"-edge"),i.setAttributeNS(null,"stroke",e),i},update:function(a,b,c,d,e){var f=e("prefix")||"";b.setAttributeNS(null,"stroke-width",a[f+"size"]||1);var g=(c[f+"x"]+d[f+"x"])/2+(d[f+"y"]-c[f+"y"])/4,h=(c[f+"y"]+d[f+"y"])/2+(c[f+"x"]-d[f+"x"])/4,i="M"+c[f+"x"]+","+c[f+"y"]+" Q"+g+","+h+" "+d[f+"x"]+","+d[f+"y"];return b.setAttributeNS(null,"d",i),b.setAttributeNS(null,"fill","none"),b.style.display="",this}}}(),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.svg.labels"),sigma.svg.labels.def={create:function(a,b){var c=b("prefix")||"",d=a[c+"size"],e=document.createElementNS(b("xmlns"),"text"),f="fixed"===b("labelSize")?b("defaultLabelSize"):b("labelSizeRatio")*d,g="node"===b("labelColor")?a.color||b("defaultNodeColor"):b("defaultLabelColor");return e.setAttributeNS(null,"data-label-target",a.id),e.setAttributeNS(null,"class",b("classPrefix")+"-label"),e.setAttributeNS(null,"font-size",f),e.setAttributeNS(null,"font-family",b("font")),e.setAttributeNS(null,"fill",g),e.innerHTML=a.label,e.textContent=a.label,e},update:function(a,b,c){var d=c("prefix")||"",e=a[d+"size"],f="fixed"===c("labelSize")?c("defaultLabelSize"):c("labelSizeRatio")*e;return!c("forceLabels")&&ed;d++)if(!y[x[d]])throw new Error('The rescale setting "'+x[d]+'" is not recognized.');var z=~x.indexOf("nodePosition"),A=~x.indexOf("nodeSize"),B=~x.indexOf("edgeSize");for(j="outside"===n("scalingMode")?Math.max(v/Math.max(r-p,1),w/Math.max(s-q,1)):Math.min(v/Math.max(r-p,1),w/Math.max(s-q,1)),k=(n("rescaleIgnoreSize")?0:(n("maxNodeSize")||t)/j)+(n("sideMargin")||0),r+=k,p-=k,s+=k,q-=k,j="outside"===n("scalingMode")?Math.max(v/Math.max(r-p,1),w/Math.max(s-q,1)):Math.min(v/Math.max(r-p,1),w/Math.max(s-q,1)),n("maxNodeSize")||n("minNodeSize")?n("maxNodeSize")===n("minNodeSize")?(f=0,g=+n("maxNodeSize")):(f=(n("maxNodeSize")-n("minNodeSize"))/t,g=+n("minNodeSize")):(f=1,g=0),n("maxEdgeSize")||n("minEdgeSize")?n("maxEdgeSize")===n("minEdgeSize")?(h=0,i=+n("minEdgeSize")):(h=(n("maxEdgeSize")-n("minEdgeSize"))/u,i=+n("minEdgeSize")):(h=1,i=0),d=0,e=m.length;e>d;d++)m[d][b+"size"]=m[d][a+"size"]*(B?h:1)+(B?i:0);for(d=0,e=l.length;e>d;d++)l[d][b+"size"]=l[d][a+"size"]*(A?f:1)+(A?g:0),l[d][b+"x"]=(l[d][a+"x"]-(r+p)/2)*(z?j:1),l[d][b+"y"]=(l[d][a+"y"]-(s+q)/2)*(z?j:1)},sigma.utils.getBoundaries=function(a,b,c){var d,e,f=a.edges(),g=a.nodes(),h=-(1/0),i=-(1/0),j=1/0,k=1/0,l=-(1/0),m=-(1/0);if(c)for(d=0,e=f.length;e>d;d++)h=Math.max(f[d][b+"size"],h);for(d=0,e=g.length;e>d;d++)i=Math.max(g[d][b+"size"],i),l=Math.max(g[d][b+"x"],l),j=Math.min(g[d][b+"x"],j),m=Math.max(g[d][b+"y"],m),k=Math.min(g[d][b+"y"],k);return h=h||1,i=i||1,{weightMax:h,sizeMax:i,minX:j,minY:k,maxX:l,maxY:m}}}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.middlewares"),sigma.middlewares.copy=function(a,b){var c,d,e;if(b+""!=a+""){for(e=this.graph.nodes(),c=0,d=e.length;d>c;c++)e[c][b+"x"]=e[c][a+"x"],e[c][b+"y"]=e[c][a+"y"],e[c][b+"size"]=e[c][a+"size"];for(e=this.graph.edges(),c=0,d=e.length;d>c;c++)e[c][b+"size"]=e[c][a+"size"]}}}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.misc.animation.running");var b=function(){var a=0;return function(){return""+ ++a}}();sigma.misc.animation.camera=function(c,d,e){if(!(c instanceof sigma.classes.camera&&"object"==typeof d&&d))throw"animation.camera: Wrong arguments.";if("number"!=typeof d.x&&"number"!=typeof d.y&&"number"!=typeof d.ratio&&"number"!=typeof d.angle)throw"There must be at least one valid coordinate in the given val.";var f,g,h,i,j,k,l=e||{},m=sigma.utils.dateNow();return k={x:c.x,y:c.y,ratio:c.ratio,angle:c.angle},j=l.duration,i="function"!=typeof l.easing?sigma.utils.easings[l.easing||"quadraticInOut"]:l.easing,f=function(){var b,e=l.duration?(sigma.utils.dateNow()-m)/l.duration:1;e>=1?(c.isAnimated=!1,c.goTo({x:d.x!==a?d.x:k.x,y:d.y!==a?d.y:k.y,ratio:d.ratio!==a?d.ratio:k.ratio,angle:d.angle!==a?d.angle:k.angle}),cancelAnimationFrame(g),delete sigma.misc.animation.running[g],"function"==typeof l.onComplete&&l.onComplete()):(b=i(e),c.isAnimated=!0,c.goTo({x:d.x!==a?k.x+(d.x-k.x)*b:k.x,y:d.y!==a?k.y+(d.y-k.y)*b:k.y,ratio:d.ratio!==a?k.ratio+(d.ratio-k.ratio)*b:k.ratio,angle:d.angle!==a?k.angle+(d.angle-k.angle)*b:k.angle}),"function"==typeof l.onNewFrame&&l.onNewFrame(),h.frameId=requestAnimationFrame(f))},g=b(),h={frameId:requestAnimationFrame(f),target:c,type:"camera",options:l,fn:f},sigma.misc.animation.running[g]=h,g},sigma.misc.animation.kill=function(a){if(1!==arguments.length||"number"!=typeof a)throw"animation.kill: Wrong arguments.";var b=sigma.misc.animation.running[a];return b&&(cancelAnimationFrame(a),delete sigma.misc.animation.running[b.frameId],"camera"===b.type&&(b.target.isAnimated=!1),"function"==typeof(b.options||{}).onComplete&&b.options.onComplete()),this},sigma.misc.animation.killAll=function(a){var b,c,d=0,e="string"==typeof a?a:null,f="object"==typeof a?a:null,g=sigma.misc.animation.running;for(c in g)e&&g[c].type!==e||f&&g[c].target!==f||(b=sigma.misc.animation.running[c],cancelAnimationFrame(b.frameId),delete sigma.misc.animation.running[c],"camera"===b.type&&(b.target.isAnimated=!1),d++,"function"==typeof(b.options||{}).onComplete&&b.options.onComplete());return d},sigma.misc.animation.has=function(a){var b,c="string"==typeof a?a:null,d="object"==typeof a?a:null,e=sigma.misc.animation.running;for(b in e)if(!(c&&e[b].type!==c||d&&e[b].target!==d))return!0;return!1}}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.misc"),sigma.misc.bindEvents=function(b){function c(a){a&&(h="x"in a.data?a.data.x:h,i="y"in a.data?a.data.y:i);var c,d,e,f,g,k,l,m,n=[],o=h+j.width/2,p=i+j.height/2,q=j.camera.cameraPosition(h,i),r=j.camera.quadtree.point(q.x,q.y);if(r.length)for(c=0,e=r.length;e>c;c++)if(f=r[c],g=f[b+"x"],k=f[b+"y"],l=f[b+"size"],!f.hidden&&o>g-l&&g+l>o&&p>k-l&&k+l>p&&Math.sqrt(Math.pow(o-g,2)+Math.pow(p-k,2))n[d].size){n.splice(d,0,f),m=!0;break}m||n.push(f)}return n}function d(c){function d(a,b){for(r=!1,g=0;ga[g].size){a.splice(g,0,b),r=!0;break}r||a.push(b)}if(!j.settings("enableEdgeHovering"))return[];var e=sigma.renderers.canvas&&j instanceof sigma.renderers.canvas;if(!e)throw new Error("The edge events feature is not compatible with the WebGL renderer");c&&(h="x"in c.data?c.data.x:h,i="y"in c.data?c.data.y:i);var f,g,k,l,m,n,o,p,q,r,s=j.settings("edgeHoverPrecision"),t={},u=[],v=h+j.width/2,w=i+j.height/2,x=j.camera.cameraPosition(h,i),y=[];if(e){var z=j.camera.quadtree.area(j.camera.getRectangle(j.width,j.height));for(l=z,f=0,k=l.length;k>f;f++)t[l[f].id]=l[f]}if(j.camera.edgequadtree!==a&&(y=j.camera.edgequadtree.point(x.x,x.y)),y.length)for(f=0,k=y.length;k>f;f++)m=y[f],o=j.graph.nodes(m.source),p=j.graph.nodes(m.target),n=m[b+"size"]||m["read_"+b+"size"],!m.hidden&&!o.hidden&&!p.hidden&&(!e||t[m.source]||t[m.target])&&sigma.utils.getDistance(o[b+"x"],o[b+"y"],v,w)>o[b+"size"]&&sigma.utils.getDistance(p[b+"x"],p[b+"y"],v,w)>p[b+"size"]&&("curve"==m.type||"curvedArrow"==m.type?o.id===p.id?(q=sigma.utils.getSelfLoopControlPoints(o[b+"x"],o[b+"y"],o[b+"size"]),sigma.utils.isPointOnBezierCurve(v,w,o[b+"x"],o[b+"y"],p[b+"x"],p[b+"y"],q.x1,q.y1,q.x2,q.y2,Math.max(n,s))&&d(u,m)):(q=sigma.utils.getQuadraticControlPoint(o[b+"x"],o[b+"y"],p[b+"x"],p[b+"y"]),sigma.utils.isPointOnQuadraticCurve(v,w,o[b+"x"],o[b+"y"],p[b+"x"],p[b+"y"],q.x,q.y,Math.max(n,s))&&d(u,m)):sigma.utils.isPointOnSegment(v,w,o[b+"x"],o[b+"y"],p[b+"x"],p[b+"y"],Math.max(n,s))&&d(u,m));return u}function e(a){function b(a){j.settings("eventsEnabled")&&(j.dispatchEvent("click",a.data),i=c(a),k=d(a),i.length?(j.dispatchEvent("clickNode",{node:i[0],captor:a.data}),j.dispatchEvent("clickNodes",{node:i,captor:a.data})):k.length?(j.dispatchEvent("clickEdge",{edge:k[0],captor:a.data}),j.dispatchEvent("clickEdges",{edge:k,captor:a.data})):j.dispatchEvent("clickStage",{captor:a.data}))}function e(a){j.settings("eventsEnabled")&&(j.dispatchEvent("doubleClick",a.data),i=c(a),k=d(a),i.length?(j.dispatchEvent("doubleClickNode",{node:i[0],captor:a.data}),j.dispatchEvent("doubleClickNodes",{node:i,captor:a.data})):k.length?(j.dispatchEvent("doubleClickEdge",{edge:k[0],captor:a.data}),j.dispatchEvent("doubleClickEdges",{edge:k,captor:a.data})):j.dispatchEvent("doubleClickStage",{captor:a.data}))}function f(a){j.settings("eventsEnabled")&&(j.dispatchEvent("rightClick",a.data),i=c(a),k=d(a),i.length?(j.dispatchEvent("rightClickNode",{node:i[0],captor:a.data}),j.dispatchEvent("rightClickNodes",{node:i,captor:a.data})):k.length?(j.dispatchEvent("rightClickEdge",{edge:k[0],captor:a.data}),j.dispatchEvent("rightClickEdges",{edge:k,captor:a.data})):j.dispatchEvent("rightClickStage",{captor:a.data}))}function g(a){if(j.settings("eventsEnabled")){var b,c,d,e,f=[],g=[];for(b in l)f.push(l[b]);for(l={},c=0,d=f.length;d>c;c++)j.dispatchEvent("outNode",{node:f[c],captor:a.data});for(f.length&&j.dispatchEvent("outNodes",{nodes:f,captor:a.data}),m={},c=0,e=g.length;e>c;c++)j.dispatchEvent("outEdge",{edge:g[c],captor:a.data});g.length&&j.dispatchEvent("outEdges",{edges:g,captor:a.data})}}function h(a){if(j.settings("eventsEnabled")){i=c(a),k=d(a);var b,e,f,g,h=[],n=[],o={},p=i.length,q=[],r=[],s={},t=k.length;for(b=0;p>b;b++)f=i[b],o[f.id]=f,l[f.id]||(n.push(f),l[f.id]=f);for(e in l)o[e]||(h.push(l[e]),delete l[e]);for(b=0,p=n.length;p>b;b++)j.dispatchEvent("overNode",{node:n[b],captor:a.data});for(b=0,p=h.length;p>b;b++)j.dispatchEvent("outNode",{node:h[b],captor:a.data});for(n.length&&j.dispatchEvent("overNodes",{nodes:n,captor:a.data}),h.length&&j.dispatchEvent("outNodes",{nodes:h,captor:a.data}),b=0;t>b;b++)g=k[b],s[g.id]=g,m[g.id]||(r.push(g),m[g.id]=g);for(e in m)s[e]||(q.push(m[e]),delete m[e]);for(b=0,t=r.length;t>b;b++)j.dispatchEvent("overEdge",{edge:r[b],captor:a.data});for(b=0,t=q.length;t>b;b++)j.dispatchEvent("outEdge",{edge:q[b],captor:a.data});r.length&&j.dispatchEvent("overEdges",{edges:r,captor:a.data}),q.length&&j.dispatchEvent("outEdges",{edges:q,captor:a.data})}}var i,k,l={},m={};a.bind("click",b),a.bind("mousedown",h),a.bind("mouseup",h),a.bind("mousemove",h),a.bind("mouseout",g),a.bind("doubleclick",e),a.bind("rightclick",f),j.bind("render",h)}var f,g,h,i,j=this;for(f=0,g=this.captors.length;g>f;f++)e(this.captors[f])}}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.misc"),sigma.misc.bindDOMEvents=function(a){function b(a){this.attr=function(b){return a.getAttributeNS(null,b)},this.tag=a.tagName,this["class"]=this.attr("class"),this.id=this.attr("id"),this.isNode=function(){return!!~this["class"].indexOf(g.settings("classPrefix")+"-node")},this.isEdge=function(){return!!~this["class"].indexOf(g.settings("classPrefix")+"-edge")},this.isHover=function(){return!!~this["class"].indexOf(g.settings("classPrefix")+"-hover")}}function c(a){if(g.settings("eventsEnabled")){g.dispatchEvent("click",a);var c=new b(a.target);c.isNode()?g.dispatchEvent("clickNode",{node:h.nodes(c.attr("data-node-id"))}):g.dispatchEvent("clickStage"),a.preventDefault(),a.stopPropagation()}}function d(a){if(g.settings("eventsEnabled")){g.dispatchEvent("doubleClick",a);var c=new b(a.target);c.isNode()?g.dispatchEvent("doubleClickNode",{node:h.nodes(c.attr("data-node-id"))}):g.dispatchEvent("doubleClickStage"),a.preventDefault(),a.stopPropagation()}}function e(a){var c=a.toElement||a.target;if(g.settings("eventsEnabled")&&c){var d=new b(c);if(d.isNode())g.dispatchEvent("overNode",{node:h.nodes(d.attr("data-node-id"))});else if(d.isEdge()){var e=h.edges(d.attr("data-edge-id"));g.dispatchEvent("overEdge",{edge:e,source:h.nodes(e.source),target:h.nodes(e.target)})}}}function f(a){var c=a.fromElement||a.originalTarget;if(g.settings("eventsEnabled")){var d=new b(c);if(d.isNode())g.dispatchEvent("outNode",{node:h.nodes(d.attr("data-node-id"))});else if(d.isEdge()){var e=h.edges(d.attr("data-edge-id"));g.dispatchEvent("outEdge",{edge:e,source:h.nodes(e.source),target:h.nodes(e.target)})}}}var g=this,h=this.graph;a.addEventListener("click",c,!1),sigma.utils.doubleClick(a,"click",d),a.addEventListener("touchstart",c,!1),sigma.utils.doubleClick(a,"touchstart",d),a.addEventListener("mouseover",e,!0),a.addEventListener("mouseout",f,!0)}}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.misc"),sigma.misc.drawHovers=function(a){function b(){c.contexts.hover.canvas.width=c.contexts.hover.canvas.width;var b,f,g,h,i,j=c.settings("defaultNodeType"),k=c.settings("defaultEdgeType"),l=sigma.canvas.hovers,m=sigma.canvas.edgehovers,n=sigma.canvas.extremities,o=c.settings.embedObjects({prefix:a});if(o("enableHovering")&&o("singleHover")&&Object.keys(d).length&&(h=d[Object.keys(d)[0]],(l[h.type]||l[j]||l.def)(h,c.contexts.hover,o)),o("enableHovering")&&!o("singleHover"))for(b in d)(l[d[b].type]||l[j]||l.def)(d[b],c.contexts.hover,o);if(o("enableEdgeHovering")&&o("singleHover")&&Object.keys(e).length&&(i=e[Object.keys(e)[0]],f=c.graph.nodes(i.source),g=c.graph.nodes(i.target),i.hidden||((m[i.type]||m[k]||m.def)(i,f,g,c.contexts.hover,o),o("edgeHoverExtremities")?(n[i.type]||n.def)(i,f,g,c.contexts.hover,o):((sigma.canvas.nodes[f.type]||sigma.canvas.nodes.def)(f,c.contexts.hover,o),(sigma.canvas.nodes[g.type]||sigma.canvas.nodes.def)(g,c.contexts.hover,o)))),o("enableEdgeHovering")&&!o("singleHover"))for(b in e)i=e[b],f=c.graph.nodes(i.source),g=c.graph.nodes(i.target),i.hidden||((m[i.type]||m[k]||m.def)(i,f,g,c.contexts.hover,o),o("edgeHoverExtremities")?(n[i.type]||n.def)(i,f,g,c.contexts.hover,o):((sigma.canvas.nodes[f.type]||sigma.canvas.nodes.def)(f,c.contexts.hover,o),(sigma.canvas.nodes[g.type]||sigma.canvas.nodes.def)(g,c.contexts.hover,o)))}var c=this,d={},e={};this.bind("overNode",function(a){var c=a.data.node;c.hidden||(d[c.id]=c,b())}),this.bind("outNode",function(a){delete d[a.data.node.id],b()}),this.bind("overEdge",function(a){var c=a.data.edge;c.hidden||(e[c.id]=c,b())}),this.bind("outEdge",function(a){delete e[a.data.edge.id],b()}),this.bind("render",function(a){b()})}}.call(this); - -/**sigma.plugins.dragNodes**/ -(function(){"use strict";function a(a,b){function c(a){var b=window.getComputedStyle(a),c=function(a){return parseInt(b.getPropertyValue(a).replace("px",""))||0};return{left:a.getBoundingClientRect().left+c("padding-left"),top:a.getBoundingClientRect().top+c("padding-top")}}function d(a){t=!1,l.removeEventListener("mousemove",i),l.removeEventListener("mouseup",h),r.length||(p=null)}function e(a){s[a.data.node.id]||(r.push(a.data.node),s[a.data.node.id]=!0,r.length&&!t&&(p=r[r.length-1],n.addEventListener("mousedown",g)))}function f(a){var b=r.map(function(a){return a}).indexOf(a.data.node);r.splice(b,1),delete s[a.data.node.id],r.length&&!t?p=r[r.length-1]:n.removeEventListener("mousedown",g)}function g(a){t=!0;var b=k.graph.nodes().length;if(p&&b>1){n.removeEventListener("mousedown",g),l.addEventListener("mousemove",i),l.addEventListener("mouseup",h);var c,d;for(c in k.cameras)d=k.cameras[c],void 0!==d.edgequadtree&&(d.edgequadtree._enabled=!1);m.settings({mouseEnabled:!1,enableHovering:!1}),k.refresh(),j.dispatchEvent("startdrag",{node:p,captor:a,renderer:m})}}function h(a){t=!1,n.addEventListener("mousedown",g),l.removeEventListener("mousemove",i),l.removeEventListener("mouseup",h);var b,c;for(b in k.cameras)c=k.cameras[b],void 0!==c.edgequadtree&&(c.edgequadtree._enabled=!0);m.settings({mouseEnabled:!0,enableHovering:!0}),k.refresh(),u&&j.dispatchEvent("drop",{node:p,captor:a,renderer:m}),j.dispatchEvent("dragend",{node:p,captor:a,renderer:m}),u=!1,p=null}function i(a){function b(){for(var b=c(m.container),d=a.clientX-b.left,e=a.clientY-b.top,f=Math.cos(o.angle),g=Math.sin(o.angle),h=k.graph.nodes(),i=[],l=0;2>l;l++){var n=h[l],r={x:n.x*f+n.y*g,y:n.y*f-n.x*g,renX:n[q+"x"],renY:n[q+"y"]};i.push(r)}if(i[0].x===i[1].x&&i[0].y===i[1].y){var s=0===i[0].renX?1:i[0].renX,t=0===i[0].renY?1:i[0].renY;d=i[0].x/s*(d-i[0].renX)+i[0].x,e=i[0].y/t*(e-i[0].renY)+i[0].y}else{var s=(i[1].renX-i[0].renX)/(i[1].x-i[0].x),t=(i[1].renY-i[0].renY)/(i[1].y-i[0].y);i[1].x===i[0].x&&(s=t),i[1].y===i[0].y&&(t=s),d=(d-i[0].renX)/s+i[0].x,e=(e-i[0].renY)/t+i[0].y}p.x=d*f-e*g,p.y=e*f+d*g,k.refresh(),u=!0,j.dispatchEvent("drag",{node:p,captor:a,renderer:m})}if(navigator.userAgent.toLowerCase().indexOf("firefox")>-1){clearTimeout(d);var d=setTimeout(b,0)}else b()}if(sigma.classes.dispatcher.extend(this),sigma.renderers.webgl&&b instanceof sigma.renderers.webgl)throw new Error("The sigma.plugins.dragNodes is not compatible with the WebGL renderer");var j=this,k=a,l=document.body,m=b,n=b.container.lastChild,o=b.camera,p=null,q="",r=[],s={},t=!1,u=!1;b instanceof sigma.renderers.svg&&(n=b.container.firstChild),q=b instanceof sigma.renderers.webgl?b.options.prefix.substr(5):b.options.prefix,b.bind("overNode",e),b.bind("outNode",f),b.bind("click",d),k.bind("kill",function(){j.unbindAll()}),this.unbindAll=function(){n.removeEventListener("mousedown",g),l.removeEventListener("mousemove",i),l.removeEventListener("mouseup",h),m.unbind("overNode",e),m.unbind("outNode",f)}}if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.plugins");var b={};sigma.plugins.dragNodes=function(c,d){return b[c.id]||(b[c.id]=new a(c,d)),c.bind("kill",function(){sigma.plugins.killDragNodes(c)}),b[c.id]},sigma.plugins.killDragNodes=function(c){b[c.id]instanceof a&&(b[c.id].unbindAll(),delete b[c.id])}}).call(window); - -/**shape-library**/ -(function(c){var b=[];var m=function(o,n,p){b.push({"name":o,"drawShape":n,"drawBorder":p})};var d=function(){return b};var h=function(n){return function(s,o,t,r,p,q){q.fillStyle=p;q.beginPath();n(s,o,t,r,q);q.closePath();q.fill()}};var j=function(n){return function(s,o,t,r,p,q){q.strokeStyle=p;q.lineWidth=r/5;q.beginPath();n(s,o,t,r,q);q.closePath();q.stroke()}};var f=function(s,n,t,r,q){var o=Math.PI*45/180;q.moveTo(n+r*Math.sin(o),t-r*Math.cos(o));for(var p=1;p<4;p++){q.lineTo(n+Math.sin(o+2*Math.PI*p/4)*r,t-Math.cos(o+2*Math.PI*p/4)*r)}};m("square",h(f),j(f));var i=function(q,n,r,p,o){o.arc(n,r,p,0,Math.PI*2,true)};m("circle",h(i),j(i));var a=function(q,n,r,p,o){o.moveTo(n-p,r);o.lineTo(n,r-p);o.lineTo(n+p,r);o.lineTo(n,r+p)};m("diamond",h(a),j(a));var g=function(r,n,s,q,p){var o=(r.cross&&r.cross.lineWeight)||5;p.moveTo(n-q,s-o);p.lineTo(n-q,s+o);p.lineTo(n-o,s+o);p.lineTo(n-o,s+q);p.lineTo(n+o,s+q);p.lineTo(n+o,s+o);p.lineTo(n+q,s+o);p.lineTo(n+q,s-o);p.lineTo(n+o,s-o);p.lineTo(n+o,s-q);p.lineTo(n-o,s-q);p.lineTo(n-o,s-o)};m("cross",h(g),j(g));var e=function(o,t,s,v,n){var u=(o.equilateral&&o.equilateral.numPoints)||5;var p=((o.equilateral&&o.equilateral.rotate)||0)*Math.PI/180;var r=v;n.moveTo(t+r*Math.sin(p),s-r*Math.cos(p));for(var q=1;qg;g++)e.lineTo(b+Math.sin(f+2*Math.PI*g/4)*d,c-Math.cos(f+2*Math.PI*g/4)*d)};c("square",e(g),f(g));var h=function(a,b,c,d,e){e.arc(b,c,d,0,2*Math.PI,!0)};c("circle",e(h),f(h));var i=function(a,b,c,d,e){e.moveTo(b-d,c),e.lineTo(b,c-d),e.lineTo(b+d,c),e.lineTo(b,c+d)};c("diamond",e(i),f(i));var j=function(a,b,c,d,e){var f=a.cross&&a.cross.lineWeight||5;e.moveTo(b-d,c-f),e.lineTo(b-d,c+f),e.lineTo(b-f,c+f),e.lineTo(b-f,c+d),e.lineTo(b+f,c+d),e.lineTo(b+f,c+f),e.lineTo(b+d,c+f),e.lineTo(b+d,c-f),e.lineTo(b+f,c-f),e.lineTo(b+f,c-d),e.lineTo(b-f,c-d),e.lineTo(b-f,c-f)};c("cross",e(j),f(j));var k=function(a,b,c,d,e){var f=a.equilateral&&a.equilateral.numPoints||5,g=(a.equilateral&&a.equilateral.rotate||0)*Math.PI/180,h=d;e.moveTo(b+h*Math.sin(g),c-h*Math.cos(g));for(var i=1;f>i;i++)e.lineTo(b+Math.sin(g+2*Math.PI*i/f)*h,c-Math.cos(g+2*Math.PI*i/f)*h)};c("equilateral",e(k),f(k));var l=function(a,b,c,d,e){var f=a.star&&a.star.numPoints||5,g=a.star&&a.star.innerRatio||.5,h=d,i=d*g,j=Math.PI/f;e.moveTo(b,c-d);for(var k=0;f>k;k++)e.lineTo(b+Math.sin(j+2*Math.PI*k/f)*i,c-Math.cos(j+2*Math.PI*k/f)*i),e.lineTo(b+Math.sin(2*Math.PI*(k+1)/f)*h,c-Math.cos(2*Math.PI*(k+1)/f)*h)};c("star",e(l),f(l));var m=function(a,b,c,d,e,f){f.fillStyle="yellow",f.beginPath(),f.arc(b,c,d,1.25*Math.PI,0,!1),f.arc(b,c,d,0,.75*Math.PI,!1),f.lineTo(b,c),f.closePath(),f.fill(),f.fillStyle="white",f.strokeStyle="black",f.beginPath(),f.arc(b+d/3,c-d/3,d/4,0,2*Math.PI,!1),f.closePath(),f.fill(),f.stroke(),f.fillStyle="black",f.beginPath(),f.arc(b+4*d/9,c-d/3,d/8,0,2*Math.PI,!1),f.closePath(),f.fill()};c("pacman",m,null),this.ShapeLibrary={enumerate:d,version:"0.1"}}).call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";if("undefined"==typeof ShapeLibrary)throw"ShapeLibrary is not declared";sigma.utils.pkg("sigma.canvas.nodes"),sigma.utils.pkg("sigma.svg.nodes");var b=a,c={},d=function(a){b=a},e=function(a,d,e,f,g){if(b&&a.image&&a.image.url){var h=a.image.url,i=a.image.h||1,j=a.image.w||1,k=a.image.scale||1,l=a.image.clip||1,m=c[h];m||(m=document.createElement("IMG"),m.src=h,m.status="loading",m.onerror=function(){/*console.log("error loading",h),*/m.status="error"},m.onload=function(){/*console.log("redraw on image load",h),*/m.status="ok",b.refresh()},c[h]=m);var n=i>j?j/i:1,o=j>i?i/j:1,p=f*k;g.save(),g.beginPath(),g.arc(d,e,f*l,0,2*Math.PI,!0),g.closePath(),g.clip(),"ok"===m.status&&g.drawImage(m,d+Math.sin(-0.7855)*p*n,e-Math.cos(-0.7855)*p*o,p*n*2*Math.sin(-0.7855)*-1,p*o*2*Math.cos(-0.7855)),g.restore()}},f=function(a,c,d){if(b&&a.image&&a.image.url){var e=document.createElementNS(d("xmlns"),"circle"),f=document.createElementNS(d("xmlns"),"clipPath"),g=d("classPrefix")+"-clip-path-"+a.id,h=document.createElementNS(d("xmlns"),"defs"),i=document.createElementNS(d("xmlns"),"image");a.image.url;f.setAttributeNS(null,"id",g),f.appendChild(e),h.appendChild(f);var j=/MSIE [5-9]/.test(navigator.userAgent)?"":document.location.href;j=j.split("#")[0],i.setAttributeNS(null,"class",d("classPrefix")+"-node-image"),i.setAttributeNS(null,"clip-path","url("+j+"#"+g+")"),i.setAttributeNS(null,"pointer-events","none"),i.setAttributeNS("http://www.w3.org/1999/xlink","href",a.image.url),c.appendChild(h),c.appendChild(i)}},g=function(a,b,c){sigma.canvas.nodes[a]=function(a,d,f){var g=(arguments,f("prefix")||""),h=a[g+"size"],i=a.color||f("defaultNodeColor"),j=a.borderColor||i,k=a[g+"x"],l=a[g+"y"];d.save(),b&&b(a,k,l,h,i,d),c&&c(a,k,l,h,j,d),e(a,k,l,h,d),d.restore()},sigma.svg.nodes[a]={create:function(a,b){var c=document.createElementNS(b("xmlns"),"g"),d=document.createElementNS(b("xmlns"),"circle");return c.setAttributeNS(null,"class",b("classPrefix")+"-node-group"),c.setAttributeNS(null,"data-node-id",a.id),d.setAttributeNS(null,"data-node-id",a.id),d.setAttributeNS(null,"class",b("classPrefix")+"-node"),d.setAttributeNS(null,"fill",a.color||b("defaultNodeColor")),c.appendChild(d),f(a,c,b),c},update:function(a,b,c){for(var d=c("classPrefix"),e=a.image.clip||1,f=a.image.h||1,g=a.image.w||1,h=c("prefix")||"",i=a.image.scale||1,j=a[h+"size"],k=a[h+"x"],l=a[h+"y"],m=i*j,n=f>g?g/f:1,o=g>f?f/g:1,p=0,q=b.childNodes;pwMr00009a7bBm001r{ z001r{0eGc9b^rhhO=&|zP*7-ZbZ>KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z3sFf#K~#9!?45gzTvZ*%KUYj2g6tr*NI@B!LNKU1L_x5IPI+iRp<6*E5MYre^3;V8 zABpHxs{~(ceH26p12&2TaTfy-1v@25A_SOim510ko6<_Ft+SzqLLb*Z&Y3cM_uR+K z&QABve80)f&d&MGz4x3s_j|s--|w6=p6~kzf*`y}O&|z@$UqQ;eR#8)pv~~SslGxF za2&7zc&B~+F5qC`Ex>GGM%_TL7kCYL6?g^sH?R))yFJRlSlil1ZtMQ*nu-~uo(v8F zP6ieNi-9a~cni1*oUxPH~_c`SYhK9F5C-TZ{rjq1CfC+2{On4-?P%(g)yrX?%a>H z$N{$k9||eoY~7mQiVQ>sLUUxW0Qe>F!I1KofOCN-ra?^(0)7RY6;i$zxEi=cWRMPM z2IBO=>A;!@BG>?&F-?d7U?) z;EIUyJFVOBx|D&)KnN#;e&BXYaL$D-z$w$12*6BWx(74=Aq@8c7hvW>hzvvqLVygG z07EgKSOPqdf||_)9s^E{u(<`eQe>c*fiNEL2Z}K^-%be;fSKud3Gm+tn=61X>Z_MB z5Z+J*^MJLO>_Hfw!Yn}Am9iT46QB0H82GuAfykiS$-uL&!8s9Ddx6t1s|3@Cdw|bG zl<&Z-vRo%J5E*nc8C(S19b+|wN!z6rbAi8M7CnVw1o((029bec23?6232eTW@;Yt> zz8hoH3w%r6LCT<;mBGoFG~x_<%&hx63$ya?z7DAALBM+4ORe|m0N~Vd?vVPU$e@eJ zpqpyD4ER}$O&Jp?-6=AVn;>*9?gXBVvB?2nQd3D82;-5#EM2Zi>k7fS2P6B2LRu}_kXIcAu{NuxIi&N z354NN;@2_=LetPMDzz6m`#|@`*o|UlA(k*f#Il-BkTU2jA}A$r3&sLAW0)O~3u;0^ zWY9fC5QUXC&L9X=0%a4X7ZHrwhkmI&M(WDGK=jn!4jQ7oJf2s?^K$AwiWzhYG7Y!} z156AMmNCDVSVNz68G_en^r0y=ScgW>UnMHe;dxnnzv6g5!}#E8mhfM45<~{6LJ}ev z#%u^ub(B>c4`vX3H1`_{BliA^ArEejWWi1smQOgRdC&{Cu043(T6{lWSKeo@SKnTX z)P>|GbOHtwJV?v!!(5%jb($SHd#&s73?_3?Pc&Ie6unKJd&ofqC40RdhawmReiKqA zWgumcYUFLlk3y1p0~v?g&K9r`@W9WA7$T-+WUhE&(jz9d^S*?^P|xpurJ2g=d9gONO`5yE-@_N*cn8PGb5%vW>Uun=qC`HQma3zv&LEsUa z4fuNC-2r^R>`(+_f!BFwkWr8_NYPOV8CCPPER*m&nZV~=YN8Y|%9kDIt3=pWtzF)q z9I|z)pd1+O3l2q4^`kVKhO&vmD{V^y7I00V2rR`&+c{J>MS)xElTVeot>9oYspPW z8#0df?xL{?MHxrLzYyXAL`?{~wh0o7BbdRMY(#}*`z@Gkf-5fKc|*3nE~#^m^6FY5 zgS5fbX$uXWV<@05npFkOj^de!vfcy)6eNdWfOF+O|KChM4l1c7fjCJX-><4`wFk;3 zOdUo-q<9#Lj)$ke!9Zn=K*~+tbH7zHYZ;&SPl8g+|099mU@qcZ!y0&PbkDu`z*(qr6Eyx)xZioRCov?-CST7m&oyPHUUo2FwO_0ek9>-S)2!+>P(ARTmN&bQ&QP2;c2!*v1!% zjeldQB!iCuzl*Wi0-S*FZ&ddY8FVTsX>G3? zYn=g}1rCp}dBM6>uZaxyACyfHrW%*V5COo|z-wx%{R_=NY%gYE0%f&;*;fz-MD@W+bpl1FnxDf*(#G0zt~4i$uTs;@C!P-?NQt=-gq23gEvo(pkL_G*cL(rmU={F0OWR2OQDh)8XbK<3q$JM--eX7eslF>?Xt zSb~@X9E90`WRI2oFJpp#TY-N8&tVo6?QClssXvMg1VPxp`2PTS7A)>+2Sr2x0000< KMNUMnLSTaA=Y3WH diff --git a/openoiui-standlone/src/main/assembly/webroot/framework/img/integration/netnumenLogo.png b/openoiui-standlone/src/main/assembly/webroot/framework/img/integration/netnumenLogo.png deleted file mode 100644 index 21f9e87a7c30edaaaf3e23fe728abef788d64dd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4097 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 diff --git a/openoiui-standlone/src/main/assembly/webroot/framework/img/integration/zte_logo_white.png b/openoiui-standlone/src/main/assembly/webroot/framework/img/integration/zte_logo_white.png deleted file mode 100644 index ef9aedb7cfad2a4779fd8ef766f2cc0fbbf5e16e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5717 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 diff --git a/openoiui-standlone/src/main/assembly/webroot/framework/js/core/const.js b/openoiui-standlone/src/main/assembly/webroot/framework/js/core/const.js deleted file mode 100644 index 1b86b79d..00000000 --- a/openoiui-standlone/src/main/assembly/webroot/framework/js/core/const.js +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -var fMenuSiderDivId = 'page-f-sidebar-menu'; -var ICTFRAME_CONST_SPINNER_GIF_PATH="../../iui/framework/img/loading-spinner-grey.gif"; -var ICTFRAME_CONST_IFRAME_HEIGHT_AJUST = 10; -var ICTFRAME_CONST_IFRAME_HEIGHT_AJUST_IE = 5; -var ICTFRAME_CONST_THEME_COLOR_CSS_PREFFIX = "css/themes/"; -var ICTFRAME_CONST_DEFAULTPAGE_PATH = "default.html?"; -var ICTFRAME_CONST_DATABACKUP_PATH = 'menus/dataBackup-mysql.html'; -var IS_V5_TESTVERSION = true; - - -var FrameConst={}; - -FrameConst.DEFAULT_LOGINSKIP_PAGE = "main-page.html"; - -FrameConst.do_heartbeat = false; -FrameConst.change_pass = false; - -FrameConst.isEncypt = "false"; -//FrameConst.REST_FRAMECOMMIFO = "/web/rest/web-common/getMenuItemVisible"; -FrameConst.REST_FRAMECOMMIFO = "../../api/uiframe/v1/frameCommInfo"; -//FrameConst.REST_HEARTBEAT = "/web/rest/web-common/common?action=heartbeat"; -FrameConst.REST_HEARTBEAT = "../../api/uiframe/v1/heartbeat"; -//FrameConst.REST_GETLICENSEINFO = "/web/rest/web-license/getlicensevalueinfo"; -FrameConst.REST_GETLICENSEINFO = "../../api/uiframe/v1/licensevalueinfo"; -//FrameConst.REST_CHECKRIGHT = "/web/rest/web-common/checkRight"; -FrameConst.REST_CHECKRIGHT = "../../api/uiframe/v1/checkRight"; -//FrameConst.REST_LOGIN = "/web/res/web-common/login"; -FrameConst.REST_LOGIN = "../../api/uiframe/v1/login"; -//FrameConst.REST_LOGOUT = "/web/res/web-common/loginOut?SSOAction=SSOLogout"; -FrameConst.REST_LOGOUT = "../../api/uiframe/v1/loginOut?SSOAction=SSOLogout"; -//FrameConst.REST_GET_FRAME_MENUDIRECTION = "/web/rest/web-common/GetConfByKey?key=usf.mainframe.web.navigation.direction"; -FrameConst.REST_GET_FRAME_MENUDIRECTION = "../../api/uiframe/v1/confByKey?key=usf.mainframe.web.navigation.direction"; -//FrameConst.REST_GET_USERNAME = "/web/rest/web-common/common?action=getUserName"; -FrameConst.REST_GET_USERNAME = "../../api/uiframe/v1/userName"; - - -//FrameConst.REST_GET_VERSIONINFO = "/web/rest/web-common/getVersionInfo"; -FrameConst.REST_GET_VERSIONINFO = "../../api/uiframe/v1/versionInfo"; -var zte_http_headers=new Array(); -zte_http_headers.push({"key":"ICTAuthentication","value":"icttka","store":true}); -zte_http_headers.push({"key":"isFromWeb","value":"1","store":false}); -zte_http_headers.push({"key":"language-option","value":"language-option","store":true}); \ No newline at end of file diff --git a/openoiui-standlone/src/main/assembly/webroot/framework/json/main-page.json b/openoiui-standlone/src/main/assembly/webroot/framework/json/main-page.json deleted file mode 100644 index 0b57f581..00000000 --- a/openoiui-standlone/src/main/assembly/webroot/framework/json/main-page.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "propertiesFileNamePrefix":"web-framework-integration-i18n", - "productName":"OPENO", - "productImage":"img/integration/zte_logo_white.png", - "modules":[ - { - "cover":"org_openo_orchestrator_framework_main_page_service", - "background":"skyBlue-mainpage", - "toolsImage":"toolsImageBrokenLine", - "url":"", - "linkId":"openo-nsoc-template", - "contentTip":"" - }, - { - "cover":"org_openo_orchestrator_framework_main_page_cloud", - "background":"golden-mainpage", - "toolsImage":"toolsImageHierachy", - "url":"", - "linkId":"openo-roc-vim", - "contentTip":"" - }, - { - "cover":"", - "background":"manLieONCloud-image", - "toolsImage":"", - "url":"http://vnjs.net/www/project/freewall/", - "contentTip":"" - }, - { - "cover":"org_openo_orchestrator_framework_main_page_orchestrator", - "background":"orange-mainpage", - "toolsImage":"toolsImageGear", - "url":"", - "linkId":"openo-nsoc-vApp", - - "contentTip":"" - }, - { - "cover":"org_openo_orchestrator_framework_main_page_monitor", - "background":"pinkishRed-mainpage", - "toolsImage":"toolsImagePresent", - "url":"", - "linkId":"openo-umc-monitor-setting", - - "contentTip":"" - }, - { - "cover":"", - "background":"magicCube-image", - "toolsImage":"", - "url":"", - "contentTip":"" - }, - { - "cover":"org_openo_orchestrator_framework_main_page_resource", - "background":"grassGreen-mainpage", - "toolsImage":"toolsImageFile", - "url":"", - "linkId":"openo-roc-rs-view-overview", - - "contentTip":"" - }, - { - "cover":"", - "background":"meeting-image", - "toolsImage":"", - "url":"", - "contentTip":"" - }, - { - "cover":"", - "background":"earth-image", - "toolsImage":"", - "url":"", - "contentTip":"" - }, - { - "cover":"org_openo_orchestrator_framework_main_page_design", - "background":"orange-mainpage", - "toolsImage":"toolsImageGear", - "url":"", - "linkId":"openo-nsoc-model-design", - - "contentTip":"" - }, - { - "cover":"org_openo_orchestrator_framework_main_page_alarm", - "background":"skyBlue-mainpage", - "toolsImage":"toolsImageBriefcase", - "url":"", - "linkId":"openo-umc-monitor-alarm-currentAlarm", - - "contentTip":"" - }, - { - "cover":"org_openo_orchestrator_framework_main_page_performance", - "background":"pinkishRed-mainpage", - "toolsImage":"toolsImagePresent", - "url":"", - "linkId":"openo-umc-monitor-pm-historyQuery", - - "contentTip":"" - } - ] -} \ No newline at end of file diff --git a/openoiui-standlone/src/main/assembly/webroot/framework/login.html b/openoiui-standlone/src/main/assembly/webroot/framework/login.html deleted file mode 100644 index e82cb513..00000000 --- a/openoiui-standlone/src/main/assembly/webroot/framework/login.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
- -
- - - - - - - - - - - - - - - - - diff --git a/openoiui-standlone/src/main/assembly/webroot/framework/menus/main_Fmegabar.html b/openoiui-standlone/src/main/assembly/webroot/framework/menus/main_Fmegabar.html deleted file mode 100644 index a7dd5610..00000000 --- a/openoiui-standlone/src/main/assembly/webroot/framework/menus/main_Fmegabar.html +++ /dev/null @@ -1,62 +0,0 @@ - -
  • - - - - - - - - -
  • -
  • - - - - - - - - -
  • -
  • - - - - - - - - -
  • - - - \ No newline at end of file diff --git a/openoiui-standlone/src/main/assembly/webroot/framework/menus/main_Fsiderbar.html b/openoiui-standlone/src/main/assembly/webroot/framework/menus/main_Fsiderbar.html deleted file mode 100644 index 3c22912a..00000000 --- a/openoiui-standlone/src/main/assembly/webroot/framework/menus/main_Fsiderbar.html +++ /dev/null @@ -1,297 +0,0 @@ - -
  • - - - - - - - - - - - -
  • -
  • - - - - - - - - - - - -
  • -
  • - - - - - - - - - - - -
  • -
  • - - - - - - - - - - - -
  • -
  • - - - - - - - - - - - -
  • -
  • - - - - - - - - - - - -
  • -
  • - - - - - - - - - - - -
  • -
  • - - - - - - - - - - - -
  • \ No newline at end of file diff --git a/openoiui-standlone/src/main/assembly/webroot/framework/menus/main_siderbar.html b/openoiui-standlone/src/main/assembly/webroot/framework/menus/main_siderbar.html deleted file mode 100644 index 517fe12a..00000000 --- a/openoiui-standlone/src/main/assembly/webroot/framework/menus/main_siderbar.html +++ /dev/null @@ -1,231 +0,0 @@ - -
  • - - - - - - - - - - - -
  • -
  • - - - - - - - - - - - -
  • -
  • - - - - - - - - - - - - - -
  • -
  • - - - - - - - - - - - -
  • - - - \ No newline at end of file diff --git a/openoiui-standlone/src/main/assembly/webroot/framework/menus/readme.txt b/openoiui-standlone/src/main/assembly/webroot/framework/menus/readme.txt deleted file mode 100644 index ac089ae8..00000000 --- a/openoiui-standlone/src/main/assembly/webroot/framework/menus/readme.txt +++ /dev/null @@ -1,17 +0,0 @@ -==== - Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -==== - -本目录放置菜单。 \ No newline at end of file diff --git a/pom.xml b/pom.xml deleted file mode 100644 index ec220253..00000000 --- a/pom.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - org.openo.oparent - oparent - 1.0.0-SNAPSHOT - - - 4.0.0 - org.openo.gso.gui - openoiui-parent - pom - openoiui - - http://${openo.project.git.ip}/oipgit/git/Open-O/openoiui.git - http://${openo.project.git.ip}/oipgit/Open-O/openoiui - - - - diff --git a/roc-iui/pom.xml b/roc-iui/pom.xml deleted file mode 100644 index 81139f2c..00000000 --- a/roc-iui/pom.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - 4.0.0 - - org.openo.orchestrator.openoiui - openoiui-parent - 0.0.1-SNAPSHOT - - org.openo.orchestrator.openoiui - roc-iui - jar - openo/openoiui/roc-iui - Open-O roc-iui - diff --git a/roc-iui/src/main/resources/webroot/roc-rs-view/css/res.css b/roc-iui/src/main/resources/webroot/roc-rs-view/css/res.css deleted file mode 100644 index eaeec3ba..00000000 --- a/roc-iui/src/main/resources/webroot/roc-rs-view/css/res.css +++ /dev/null @@ -1,593 +0,0 @@ -/** - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -body { - font-family: microsoft yahei !important; - background-color: #f1f3fa !important; - -} - - -.titlefont { - font-size: 16px; - margin-top: 10px; -} - -.separator-line { - height: 1px; - width: 100%; - background: #ddd; - overflow: hidden; - margin-bottom: 15px; - margin-top: 6px; - opacity: 0.6; -} - -div.separator { - margin: 0px; -} - -div.separator div { - text-align: center; - line-height: 0; -} - -div.separator-line { - height: 1px !important; - width: 100%; - background: #ddd; - overflow: hidden; -} - - -.container-fluid { - background-color: #fff; -} - - - -#right-menu { - position: absolute; - top: 0; - right: 0; - width: 400px; - height: 100%; - border-left: 4px solid rgb(58,174,218); - background-color: rgba(255,255,255,.95); - padding-left: 19px; - padding-right: 13px; - padding-top: 20px; - z-index: 9999; - overflow-y: auto; -} - -.right-button-pointer { - display: inline-block; - cursor: pointer; -} -.rigth { - float: right; - margin-bottom:10px; -} - -.btn-default { - color: #5b9bd1; - background-color: #fff; - border-color: #ccc; -} -.btn { - /* border-width: 0; */ - /* padding: 7px 14px; */ - /* font-size: 14px; */ - /* outline: none !important; */ - /* background-image: none !important; */ - /* filter: none; */ - /* -webkit-box-shadow: none; */ - -moz-box-shadow: none; - /* box-shadow: none; */ - /* text-shadow: none; */ -} - -.nodesDetail{ - margin-top:15px; -} - - -/* blue pill (inspired by iTunes) -*******************************************************************************/ - -.grey { - background-color: #e5e5e5; - color: #333; -} - -.blue { - - background-color: #5b9bd1; - border-radius: 20px; - color: #fff; - font-weight: bold; - padding: 8px 0; - text-align: center; - width: 100px; -} - -.blue:hover { - background-color: #e8f3fd; - color: #5b9bd1; -} - -.blue.selected { - border: 0; - background-color: #5b9bd1; - color: #fff; -} - -.blue.selected:hover { - border: 0; - background-color: #5b9bd1; - color: #fff; -} - - - -p { - color: #444; - font-size: 14px; - font-weight: normal; - line-height: 21px; - margin: 0 0 12px 0; -} - -p.credit { - border-top: 1px solid #ccc; - font-size: 14px; - line-height: 140%; - margin: 36px 0 12px 0; - padding: 8px 0 0 0; - text-align: center; -} - -ul.column { - float: left; - list-style: none; - width: 675px; -} - -ul.column li { - background: #eee; - -webkit-border-radius: 5px; - border-radius: 5px; - -webkit-box-shadow: inset 0 1px 1px 0 #c7c7c7; - box-shadow: inset 0 1px 1px 0 #c7c7c7; - float: left; - margin: 10px 0 0 10px; - display: block; - height: 150px; - text-align: center; - width: 215px; -} - -/* Clear Floated Elements -------------------------------------------------------------------------------*/ -.column:after,.button-collection:after,.clearfix:after,div.project-info:after - { - clear: both; - content: ' '; - display: block; - font-size: 0; - line-height: 0; - visibility: hidden; - width: 0; - height: 0; -} - - -.nav-tabs { - border: 0; -} - -.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus - { - border: 0; - border-top: 3px solid #F3565D; -} - -.nav-tabs>li>a { - border-radius: 0; -} - -.nav-tabs>li>a:hover { - background-color: #f1f3fa; - border: 1px solid #f1f3fa; -} - -.c3 { - margin-top: 120px; -} - -.skills-chart-breadcrumb { - -} - -.blue:selected { - border: 0; - background-color: #5b9bd1; -} - - - -select { - border-width: 1px; - padding: 4px 1px; - border-radius: 4px; -} - -.input-sm { - padding: 4px 10px; -} - -.btn-block { - display: block; - width: 100%; - padding-left: 0; - padding-right: 0; -} - -/* Bootstrap buttons */ - - -.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active - { - color: #333; - background-color: #ededed; - border-color: #b3b3b3; -} - -.open .btn-default.dropdown-toggle { - color: #333; - background-color: #ededed; - border-color: #b3b3b3; -} - -.btn-default:active,.btn-default.active { - background-image: none; - background-color: #e0e0e0; - font-weight: bold; -} - -.btn-default:active:hover,.btn-default.active:hover { - background-color: #e6e6e6; -} - -.open .btn-default.dropdown-toggle { - background-image: none; -} - -.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active - { - background-color: #fff; - border-color: #ccc; -} - -.btn-default .badge { - color: #fff; - background-color: #333; -} - - -.btn-default>i[class^="icon-"],.btn-default>i[class*="icon-"] { - color: #8c8c8c; -} - - - -div[data-name="res-conds-zone"] { - display: inline; -} - -div[data-name="res-conds-zone"] select,div[data-name="res-conds-zone"] span - { - /**height:33px;*/ - margin-left: 15px; - color: #5b9bd1; - border-color: #ccc; - font-weight: bold; -} - - - -.dropdown-toggle { - color: #5b9bd1; -} - -.calendar-date { - color: #5b9bd1; -} - -.range_inputs { - color: #5b9bd1; -} - - -#skills-chart-breadcrumb { - margin-bottom: 10px -} - -/*增加daterangepicker的css*/ -input[name="daterange"] { - width: 220px; - line-height: 0; - height: 31px; - vertical-align: top; - margin-top: 2px; -} - -.daterangepicker .ranges { - width: 205px; -} - -.daterangepicker .ranges input { - width: 95px !important; -} - -td.details-control { - background: url('../images/details_open.png') no-repeat center center; - cursor: pointer; -} - -tr.shown td.details-control { - background: url('../images/details_close.png') no-repeat center center; -} - -.details table td { - word-wrap: break-word; - word-break: normal; - border-top: 1px solid #dddddd; -} - -.details table tr:first-child td { - border-top: none; -} - -.details table { - table-layout: fixed; - width: 100%; -} - -td.title { - width: 10%; -} - -/*table*/ -table{ -font-size: 12px; -} -table .DataTables_sort_wrapper{ -font-size: 14px; -} -table.dataTable tbody th, table.dataTable tbody td{ -padding: 8px 10px 4px 10px !important; -} -table tr:nth-of-type(odd){ - background:#f9f9f9; -} -table tr:nth-of-type(even){ - background:#fff; -} -table td:hover{ - background-color: #f5f5f5; - border-bottom: 1px solid #d0d0d0; - border-top: 1px solid #d0d0d0; -} -table tr td label{ - cursor: pointer; -} -.table-btn span{ -padding-left:5px; -padding-right:5px; - -} - -/*table*/ -table, .dataTables_length, .dataTables_info, .dataTables_paginate{ -font-size: 12px; -} -table .heading{ -font-size: 14px; -background:#fff !important; -} -table.dataTable tbody th, table.dataTable tbody td{ -padding: 8px 10px 4px 10px !important; -} -table tr:nth-of-type(odd){ - background:#f9f9f9; -} -table tr:nth-of-type(even){ - background:#fff; -} -table td:hover{ - background-color: #f5f5f5; - border-bottom: 1px solid #d0d0d0; - border-top: 1px solid #d0d0d0; -} -table tr td label{ - cursor: pointer; -} -.table-btn span{ -padding-left:5px; -padding-right:5px; - -} - -/*** -Responsive & Scrollable Tables -***/ - -.table-scrollable { - width: 100%; - overflow-x: auto; - overflow-y: hidden; - border: 1px solid #dddddd; -} - -.table-scrollable > .table { - width: 100% !important; - margin: 0 !important; - margin-bottom: 0; - background-color: #fff; -} - -.table-scrollable > .table > thead > tr > th, -.table-scrollable > .table > tbody > tr > th, -.table-scrollable > .table > tfoot > tr > th, -.table-scrollable > .table > thead > tr > td, -.table-scrollable > .table > tbody > tr > td, -.table-scrollable > .table > tfoot > tr > td { - white-space: nowrap; -} - -.table-scrollable > .table-bordered { - border: 0; -} -.table-scrollable > .table-bordered > thead > tr > th:first-child, -.table-scrollable > .table-bordered > tbody > tr > th:first-child, -.table-scrollable > .table-bordered > tfoot > tr > th:first-child, -.table-scrollable > .table-bordered > thead > tr > td:first-child, -.table-scrollable > .table-bordered > tbody > tr > td:first-child, -.table-scrollable > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} - -.table-scrollable > .table-bordered > thead > tr > th:last-child, -.table-scrollable > .table-bordered > tbody > tr > th:last-child, -.table-scrollable > .table-bordered > tfoot > tr > th:last-child, -.table-scrollable > .table-bordered > thead > tr > td:last-child, -.table-scrollable > .table-bordered > tbody > tr > td:last-child, -.table-scrollable > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} - -.table-scrollable > .table-bordered > thead > tr:last-child > th, -.table-scrollable > .table-bordered > tbody > tr:last-child > th, -.table-scrollable > .table-bordered > tfoot > tr:last-child > th, -.table-scrollable > .table-bordered > thead > tr:last-child > td, -.table-scrollable > .table-bordered > tbody > tr:last-child > td, -.table-scrollable > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; -} - - - -div.dataTables_length,div.dataTables_info { - display: inline; -} - -div.dataTables_paginate { - display: inline; - float: right; -} - -div.pagination-panel { - margin-right: 10px; -} - -input.pagination-panel-input { - width: 50px; -} - -#ict_res_table_div { - margin-top: 15px; -} - -#ict_res_table_div label { - font-weight: 100; -} - -.daterangepicker .daterangepicker_start_input label,.daterangepicker .daterangepicker_end_input label - { - color: #5b9bd1; -} - -.daterangepicker .ranges .input-mini { - color: #5b9bd1; -} - -.cancelBtn { - padding: 5px 10px 5px 10px; -} - -.btn:focus,.btn:active:focus,.btn.active:focus { - outline: 0; -} - -#ict_res_table_div table { - width: 100% !important; -} - -.control-label .required { - color: #e02222; - font-size: 12px; - padding-left: 2px; -} - -#ict_vim_table tbody tr{ - cursor:pointer; -} - - - - - -h3{ - margin-top: 10px; - margin-bottom: 40px; - font-weight: 200; -} - -.blue-font{ - color:#428bca; -} - -.hpanel > .panel-footer .pull-right a{ - margin-left: 5px; -} - -.font-bold { - font-weight: 600; - margin-bottom: 15px; -} - -.hpanel_show{ - cursor: pointer; - background-color: #f7f9fa; -} -.input{ - width:250px; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; -} - diff --git a/roc-iui/src/main/resources/webroot/roc-rs-view/i18n/loadi18nApp_ngict-rs_view.js b/roc-iui/src/main/resources/webroot/roc-rs-view/i18n/loadi18nApp_ngict-rs_view.js deleted file mode 100644 index d4644dc0..00000000 --- a/roc-iui/src/main/resources/webroot/roc-rs-view/i18n/loadi18nApp_ngict-rs_view.js +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -function loadPropertiesSideMenu(lang, propertiesFileNamePrefix, propertiesFilePath){ - jQuery.i18n.properties({ - language:lang, - name:propertiesFileNamePrefix, - path:propertiesFilePath, // 资源文件路径 - mode:'map', // 用 Map 的方式使用资源文件中的值 - callback: function() {// 加载成功后设置显示内容 - var i18nItems = $('[name_i18n=com_zte_conductor_roc_rs_view_ui_i18n]'); - for(var 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 diff --git a/roc-iui/src/main/resources/webroot/roc-rs-view/images/up.png b/roc-iui/src/main/resources/webroot/roc-rs-view/images/up.png deleted file mode 100644 index 8bd537413744aab36a450a77d6f9aeb1e60a2d9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2926 zcmV-!3z77RP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0GmlfK~#9!tkOLWf}(Z`0~(ndw}E*`_$pVnho+j$nb28~zI29vb_7u>I%OkO6L zqHS9vn`4hFUa3pvNTfo8HENtwu`m&VBW@^iLKPkn^68L@r9i6=se9&0SV%yc0VEj< ze_S#O>w}gZvKjf6y;$f$nhD4t7BXG(6N{lmhiv8P3o9d}$%w=loJ!1a@8qZa?QnSy Y06eiBG" + status + ""; - } else if (status === vm.$Status.inactive) { - return " " + status + ""; - } else if (status === vm.$Status.terminated) { - return " " + status + ""; - } else { - return " " + status + ""; - } - -} diff --git a/roc-iui/src/main/resources/webroot/roc-rs-view/resView.html b/roc-iui/src/main/resources/webroot/roc-rs-view/resView.html deleted file mode 100644 index 5109301f..00000000 --- a/roc-iui/src/main/resources/webroot/roc-rs-view/resView.html +++ /dev/null @@ -1,1062 +0,0 @@ - - - - - - - - - - - - - -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - {{vm.resType}}- - -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    - - mocName -
    - - {{res.name}} - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - mocName -
    - - {{res.name}} - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    - - mocName -
    - - {{res.name}} - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - mocName -
    - - {{res.name}} - -
    - - - - - - - - - - - - - - - - - - - - -
    - - mocName -
    - - {{res.name}} - -
    - - - - - - - - - - - - - - - - - - -
    - - mocName -
    - - {{res.name}} - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    - - mocName -
    - - {{res.name}} - -
    - - - - - - - - - - - - - - - - - - - - - - -
    - - mocName -
    - - {{res.name}} - -
    - - - - - - - - - - - - - - - - - - -
    -
    - - {{res.name}} - -
    - - - - - - - - - - - - - - - - - - -
    -
    - - {{res.name}} - -
    - - - - - - - - - - - - - - - - - - -
    -
    - - {{res.name}} - -
    -
    -
    -
    -
    -
    -

    - {{nodesDetail.detailTitle}} -

    -
    - -
    -
    -
    -
    - - - -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Oid -
    - moc -
    - mocName -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Oid -
    - moc -
    - mocName -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Oid -
    - moc -
    - mocName -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Oid -
    - moc -
    - mocName -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Oid -
    - moc -
    - mocName -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Oid -
    - moc -
    - mocName -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Oid -
    - moc -
    - mocName -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Oid -
    -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - -
    - Oid -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/roc-iui/src/main/resources/webroot/roc-sdn/css/sdn.css b/roc-iui/src/main/resources/webroot/roc-sdn/css/sdn.css deleted file mode 100644 index 558ac201..00000000 --- a/roc-iui/src/main/resources/webroot/roc-sdn/css/sdn.css +++ /dev/null @@ -1,492 +0,0 @@ -/** - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -body { - font-family: microsoft yahei !important; -} - -/* blue pill (inspired by iTunes) -*******************************************************************************/ - -.grey { - background-color: #e5e5e5; - color: #333; -} - -.blue { - - background-color: #5b9bd1; - border-radius: 20px; - color: #fff; - font-weight: bold; - padding: 8px 0; - text-align: center; - width: 100px; -} - -.blue:hover { - background-color: #e8f3fd; - color: #5b9bd1; -} - -.blue.selected { - border: 0; - background-color: #5b9bd1; - color: #fff; -} - -.blue.selected:hover { - border: 0; - background-color: #5b9bd1; - color: #fff; -} - -p { - color: #444; - font-size: 14px; - font-weight: normal; - line-height: 21px; - margin: 0 0 12px 0; -} - -p.credit { - border-top: 1px solid #ccc; - font-size: 14px; - line-height: 140%; - margin: 36px 0 12px 0; - padding: 8px 0 0 0; - text-align: center; -} - -ul.column { - float: left; - list-style: none; - width: 675px; -} - -ul.column li { - background: #eee; - -webkit-border-radius: 5px; - border-radius: 5px; - -webkit-box-shadow: inset 0 1px 1px 0 #c7c7c7; - box-shadow: inset 0 1px 1px 0 #c7c7c7; - float: left; - margin: 10px 0 0 10px; - display: block; - height: 150px; - text-align: center; - width: 215px; -} - -/* Clear Floated Elements -------------------------------------------------------------------------------*/ -.column:after,.button-collection:after,.clearfix:after,div.project-info:after - { - clear: both; - content: ' '; - display: block; - font-size: 0; - line-height: 0; - visibility: hidden; - width: 0; - height: 0; -} - -.container-fluid { - background-color:white !important; - min-height:500px; -} - -.nav-tabs { - border: 0; -} - -.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus - { - border: 0; - border-top: 3px solid #F3565D; -} - -.nav-tabs>li>a { - border-radius: 0; -} - -.nav-tabs>li>a:hover { - background-color: #f1f3fa; - border: 1Px solid #f1f3fa; -} - -.c3 { - margin-top: 120px; -} - -.skills-chart-breadcrumb { - -} - -.blue:selected { - border: 0; - background-color: #5b9bd1; -} - -.btn { - /* border-width: 0; */ - /* padding: 7px 14px; */ - /* font-size: 14px; */ - /* outline: none !important; */ - /* background-image: none !important; */ - /* filter: none; */ - /* -webkit-box-shadow: none; */ - -moz-box-shadow: none; - /* box-shadow: none; */ - /* text-shadow: none; */ -} - -select { - border-width: 1px; - padding: 4px 1px; - border-radius: 4px; -} - -.input-sm { - padding: 4px 10px; -} - -.btn-block { - display: block; - width: 100%; - padding-left: 0; - padding-right: 0; -} - -/* Bootstrap buttons */ - - -.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active - { - color: #333; - background-color: #ededed; - border-color: #b3b3b3; -} - -.open .btn-default.dropdown-toggle { - color: #333; - background-color: #ededed; - border-color: #b3b3b3; -} - -.btn-default:active,.btn-default.active { - background-image: none; - background-color: #e0e0e0; - font-weight: bold; -} - -.btn-default:active:hover,.btn-default.active:hover { - background-color: #e6e6e6; -} - -.open .btn-default.dropdown-toggle { - background-image: none; -} - -.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active - { - background-color: #fff; - border-color: #ccc; -} - -.btn-default .badge { - color: #fff; - background-color: #333; -} - - -.btn-default>i[class^="icon-"],.btn-default>i[class*="icon-"] { - color: #8c8c8c; -} - -div[data-name="tab_zone"] div { - background-color: #f1f3fa; - padding: 0px; -} - -div[data-name="cond_zone"] div { - background-color: #fff; - margin-top: 15px; - margin-bottom: 15px; -} - -div[data-name="res-conds-zone"] { - display: inline; -} - -div[data-name="res-conds-zone"] select,div[data-name="res-conds-zone"] span - { - /**height:33px;*/ - margin-left: 15px; - color: #5b9bd1; - border-color: #ccc; - font-weight: bold; -} - -.input{ - width:250px; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; -} - -div.separator { - margin: 20px; -} - -div.separator div { - text-align: center; - line-height: 0; -} - -div.separator-line { - height: 1px !important; - width: 100%; - background: #ddd; - overflow: hidden; -} - -.dropdown-toggle { - color: #5b9bd1; -} - -.calendar-date { - color: #5b9bd1; -} - -.range_inputs { - color: #5b9bd1; -} - -.btn.dropdown-toggle,.btn-group .btn.dropdown-toggle,.btn:hover,.btn:disabled,.btn[disabled],.btn:focus,.btn:active,.btn.active - { - outline: none !important; - background-image: none !important; - filter: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - text-shadow: none; -} - -#skills-chart-breadcrumb { - margin-bottom: 10px -} - -/*增加daterangepicker的css*/ -input[name="daterange"] { - width: 220px; - line-height: 0; - height: 31px; - vertical-align: top; - margin-top: 2px; -} - -.daterangepicker .ranges { - width: 205px; -} - -.daterangepicker .ranges input { - width: 95px !important; -} - -td.details-control { - background: url('../images/details_open.png') no-repeat center center; - cursor: pointer; -} - -tr.shown td.details-control { - background: url('../images/details_close.png') no-repeat center center; -} - -.details table td { - word-wrap: break-word; - word-break: normal; - border-top: 1px solid #dddddd; -} - -.details table tr:first-child td { - border-top: none; -} - -.details table { - table-layout: fixed; - width: 100%; -} - -td.title { - width: 10%; -} - -table.dataTable tbody th,table.dataTable tbody td { - padding: 8px 10px; -} - -div.dataTables_length,div.dataTables_info { - display: inline; -} - -div.dataTables_paginate { - display: inline; - float: right; -} - -div.pagination-panel { - margin-right: 10px; -} - -input.pagination-panel-input { - width: 50px; -} - -#ict_res_table_div { - margin-top: 15px; -} - -#ict_res_table_div label { - font-weight: 100; -} - -.daterangepicker .daterangepicker_start_input label,.daterangepicker .daterangepicker_end_input label - { - color: #5b9bd1; -} - -.daterangepicker .ranges .input-mini { - color: #5b9bd1; -} - -.cancelBtn { - padding: 5px 10px 5px 10px; -} - -.btn:focus,.btn:active:focus,.btn.active:focus { - outline: 0; -} - -#ict_res_table_div table { - width: 100% !important; -} - -.control-label .required { - color: #e02222; - font-size: 12px; - padding-left: 2px; -} - -#ict_vim_table tbody tr{ - cursor:pointer; -} - - -/*卡片面板样式*/ -.animated-panel { - -webkit-animation-duration: .5s; - animation-duration: .5s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} - -.hpanel { - background-color: none; - border: none; - box-shadow: none; - margin-bottom: 25px; - -} - -.hpanel .panel-body { - border: 1px solid #e4e5e7; - border-radius: 2px; - padding: 20px; - position: relative; -} -.h-200 { - min-height: 220px; -} - -.m-t-xl { - margin-top: 40px; -} - -.m-t-xl div { - margin-bottom: 15px; -} - -.text-success { - color: #0d638f; -} -.hpanel > .panel-footer { - color: inherit; - border: 1px solid #e4e5e7; - border-top: none; - font-size: 90%; - background: #f7f9fa; - height:40px; - padding: 5px 15px; -} -.color_cloud{ - color:#ccc; -} -.stats-title{ - -} - -h3{ - margin-top: 10px; - margin-bottom: 40px; - font-weight: 200; -} - -.blue-font{ - color:#428bca; -} - -.hpanel > .panel-footer .pull-right a{ - margin-left: 5px; -} - -.hpanel > .panel-footer .pull-right .btn{ - min-width: 30px !important; -} - -.font-bold { - font-weight: 600; - margin-bottom: 15px; -} - -.hpanel_show{ - background-color: #f7f9fa; -} - -.sdn-padding { - padding-left: 0; -} \ No newline at end of file diff --git a/roc-iui/src/main/resources/webroot/roc-sdn/i18n/loadi18nApp.js b/roc-iui/src/main/resources/webroot/roc-sdn/i18n/loadi18nApp.js deleted file mode 100644 index df993437..00000000 --- a/roc-iui/src/main/resources/webroot/roc-sdn/i18n/loadi18nApp.js +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -function loadPropertiesSideMenu(lang, propertiesFileNamePrefix, propertiesFilePath){ - jQuery.i18n.properties({ - language:lang, - name:propertiesFileNamePrefix, - path:propertiesFilePath, - mode:'map', - callback: function() { - var i18nItems = $('[name_i18n=org_openo_nfv_roc_ui_i18n]'); - for(var i=0;i - - - - - - - - - - - - - - - - -
    - -
    -
    - -
    -
    - -
    - -
    -
    -
    -
    - -
    -
    - -
    -
    -

    -
    :
    -
    URL :
    -
    -
    - -
    -
    -
    -
    -
    - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/roc-iui/src/main/resources/webroot/roc-vim/css/animate.min.css b/roc-iui/src/main/resources/webroot/roc-vim/css/animate.min.css deleted file mode 100644 index c71f06b5..00000000 --- a/roc-iui/src/main/resources/webroot/roc-vim/css/animate.min.css +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -@charset "UTF-8"; -/*! -Animate.css - http://daneden.me/animate -Licensed under the MIT license - http://opensource.org/licenses/MIT - -Copyright (c) 2014 Daniel Eden -*/ -.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}@-webkit-keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);-ms-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);-ms-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);-ms-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);-ms-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);-ms-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);-ms-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);-ms-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);-ms-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);-ms-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);-ms-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);-ms-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);-ms-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);-ms-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);-ms-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes tada{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}@keyframes wobble{0%{-webkit-transform:none;-ms-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);-ms-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);-ms-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);-ms-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);-ms-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);-ms-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);-ms-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);-ms-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);-ms-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);-ms-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);-ms-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);-ms-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);-ms-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);-ms-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);-ms-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);-ms-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);-ms-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);-ms-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);-ms-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);-ms-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);-ms-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);-ms-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);-ms-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);-ms-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);-ms-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;-ms-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);-ms-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);-ms-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);-ms-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);-ms-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);-ms-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);-ms-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{0%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);-ms-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);-ms-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{0%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);-ms-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0,0,1,45deg);transform:rotate(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0,0,1,45deg);-ms-transform:rotate(0,0,1,45deg);transform:rotate(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);-ms-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);-ms-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);-ms-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);-ms-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);-ms-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);-ms-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-ms-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-ms-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);-ms-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;-ms-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);-ms-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp} \ No newline at end of file diff --git a/roc-iui/src/main/resources/webroot/roc-vim/css/bootstrap.css b/roc-iui/src/main/resources/webroot/roc-vim/css/bootstrap.css deleted file mode 100644 index 0193ce71..00000000 --- a/roc-iui/src/main/resources/webroot/roc-vim/css/bootstrap.css +++ /dev/null @@ -1,4965 +0,0 @@ -/** - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -nav, -section { - display: block; -} - -audio, -canvas, -video { - display: inline-block; - *display: inline; - *zoom: 1; -} - -audio:not([controls]) { - display: none; -} - -html { - font-size: 100%; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} - -a:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} - -a:hover, -a:active { - outline: 0; -} - -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -img { - max-width: 100%; - vertical-align: middle; - border: 0; - -ms-interpolation-mode: bicubic; -} - -button, -input, -select, -textarea { - margin: 0; - font-size: 100%; - vertical-align: middle; -} - -button, -input { - *overflow: visible; - line-height: normal; -} - -button::-moz-focus-inner, -input::-moz-focus-inner { - padding: 0; - border: 0; -} - -button, -input[type="button"], -input[type="reset"], -input[type="submit"] { - cursor: pointer; - -webkit-appearance: button; -} - -input[type="search"] { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; -} - -input[type="search"]::-webkit-search-decoration, -input[type="search"]::-webkit-search-cancel-button { - -webkit-appearance: none; -} - -textarea { - overflow: auto; - vertical-align: top; -} - -.clearfix { - *zoom: 1; -} - -.clearfix:before, -.clearfix:after { - display: table; - content: ""; -} - -.clearfix:after { - clear: both; -} - -.hide-text { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} - -.input-block-level { - display: block; - width: 100%; - min-height: 28px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -body { - margin: 0; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; - line-height: 18px; - color: #333333; - background-color: #ffffff; -} - -a { - color: #0088cc; - text-decoration: none; -} - -a:hover { - color: #005580; - text-decoration: underline; -} - -.row { - margin-left: -20px; - *zoom: 1; -} - -.row:before, -.row:after { - display: table; - content: ""; -} - -.row:after { - clear: both; -} - -[class*="span"] { - float: left; - margin-left: 20px; -} - -.container, -.navbar-fixed-top .container, -.navbar-fixed-bottom .container { - width: 940px; -} - -.span12 { - width: 940px; -} - -.span11 { - width: 860px; -} - -.span10 { - width: 780px; -} - -.span9 { - width: 700px; -} - -.span8 { - width: 620px; -} - -.span7 { - width: 540px; -} - -.span6 { - width: 460px; -} - -.span5 { - width: 380px; -} - -.span4 { - width: 300px; -} - -.span3 { - width: 220px; -} - -.span2 { - width: 140px; -} - -.span1 { - width: 60px; -} - -.offset12 { - margin-left: 980px; -} - -.offset11 { - margin-left: 900px; -} - -.offset10 { - margin-left: 820px; -} - -.offset9 { - margin-left: 740px; -} - -.offset8 { - margin-left: 660px; -} - -.offset7 { - margin-left: 580px; -} - -.offset6 { - margin-left: 500px; -} - -.offset5 { - margin-left: 420px; -} - -.offset4 { - margin-left: 340px; -} - -.offset3 { - margin-left: 260px; -} - -.offset2 { - margin-left: 180px; -} - -.offset1 { - margin-left: 100px; -} - -.row-fluid { - width: 100%; - *zoom: 1; -} - -.row-fluid:before, -.row-fluid:after { - display: table; - content: ""; -} - -.row-fluid:after { - clear: both; -} - -.row-fluid [class*="span"] { - display: block; - float: left; - width: 100%; - min-height: 28px; - margin-left: 2.127659574%; - *margin-left: 2.0744680846382977%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -.row-fluid [class*="span"]:first-child { - margin-left: 0; -} - -.row-fluid .span12 { - width: 99.99999998999999%; - *width: 99.94680850063828%; -} - -.row-fluid .span11 { - width: 91.489361693%; - *width: 91.4361702036383%; -} - -.row-fluid .span10 { - width: 82.97872339599999%; - *width: 82.92553190663828%; -} - -.row-fluid .span9 { - width: 74.468085099%; - *width: 74.4148936096383%; -} - -.row-fluid .span8 { - width: 65.95744680199999%; - *width: 65.90425531263828%; -} - -.row-fluid .span7 { - width: 57.446808505%; - *width: 57.3936170156383%; -} - -.row-fluid .span6 { - width: 48.93617020799999%; - *width: 48.88297871863829%; -} - -.row-fluid .span5 { - width: 40.425531911%; - *width: 40.3723404216383%; -} - -.row-fluid .span4 { - width: 31.914893614%; - *width: 31.8617021246383%; -} - -.row-fluid .span3 { - width: 23.404255317%; - *width: 23.3510638276383%; -} - -.row-fluid .span2 { - width: 14.89361702%; - *width: 14.8404255306383%; -} - -.row-fluid .span1 { - width: 6.382978723%; - *width: 6.329787233638298%; -} - -.container { - margin-right: auto; - margin-left: auto; - *zoom: 1; -} - -.container:before, -.container:after { - display: table; - content: ""; -} - -.container:after { - clear: both; -} - -.container-fluid { - padding-right: 20px; - padding-left: 20px; - *zoom: 1; -} - -.container-fluid:before, -.container-fluid:after { - display: table; - content: ""; -} - -.container-fluid:after { - clear: both; -} - -p { - margin: 0 0 9px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; - line-height: 18px; -} - -p small { - font-size: 11px; - color: #999999; -} - -.lead { - margin-bottom: 18px; - font-size: 20px; - font-weight: 200; - line-height: 27px; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - margin: 0; - font-family: inherit; - font-weight: bold; - color: inherit; - text-rendering: optimizelegibility; -} - -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small { - font-weight: normal; - color: #999999; -} - -h1 { - font-size: 30px; - line-height: 36px; -} - -h1 small { - font-size: 18px; -} - -h2 { - font-size: 24px; - line-height: 36px; -} - -h2 small { - font-size: 18px; -} - -h3 { - font-size: 18px; - line-height: 27px; -} - -h3 small { - font-size: 14px; -} - -h4, -h5, -h6 { - line-height: 18px; -} - -h4 { - font-size: 14px; -} - -h4 small { - font-size: 12px; -} - -h5 { - font-size: 12px; -} - -h6 { - font-size: 11px; - color: #999999; - text-transform: uppercase; -} - -.page-header { - padding-bottom: 17px; - margin: 18px 0; - border-bottom: 1px solid #eeeeee; -} - -.page-header h1 { - line-height: 1; -} - -ul, -ol { - padding: 0; - margin: 0 0 9px 25px; -} - -ul ul, -ul ol, -ol ol, -ol ul { - margin-bottom: 0; -} - -ul { - list-style: disc; -} - -ol { - list-style: decimal; -} - -li { - line-height: 18px; -} - -ul.unstyled, -ol.unstyled { - margin-left: 0; - list-style: none; -} - -dl { - margin-bottom: 18px; -} - -dt, -dd { - line-height: 18px; -} - -dt { - font-weight: bold; - line-height: 17px; -} - -dd { - margin-left: 9px; -} - -.dl-horizontal dt { - float: left; - width: 120px; - overflow: hidden; - clear: left; - text-align: right; - text-overflow: ellipsis; - white-space: nowrap; -} - -.dl-horizontal dd { - margin-left: 130px; -} - -hr { - margin: 18px 0; - border: 0; - border-top: 1px solid #eeeeee; - border-bottom: 1px solid #ffffff; -} - -strong { - font-weight: bold; -} - -em { - font-style: italic; -} - -.muted { - color: #999999; -} - -abbr[title] { - cursor: help; - border-bottom: 1px dotted #ddd; -} - -abbr.initialism { - font-size: 90%; - text-transform: uppercase; -} - -blockquote { - padding: 0 0 0 15px; - margin: 0 0 18px; - border-left: 5px solid #eeeeee; -} - -blockquote p { - margin-bottom: 0; - font-size: 16px; - font-weight: 300; - line-height: 22.5px; -} - -blockquote small { - display: block; - line-height: 18px; - color: #999999; -} - -blockquote small:before { - content: '\2014 \00A0'; -} - -blockquote.pull-right { - float: right; - padding-right: 15px; - padding-left: 0; - border-right: 5px solid #eeeeee; - border-left: 0; -} - -blockquote.pull-right p, -blockquote.pull-right small { - text-align: right; -} - -q:before, -q:after, -blockquote:before, -blockquote:after { - content: ""; -} - -address { - display: block; - margin-bottom: 18px; - font-style: normal; - line-height: 18px; -} - -small { - font-size: 100%; -} - -cite { - font-style: normal; -} - -code, -pre { - padding: 0 3px 2px; - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - font-size: 12px; - color: #333333; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} - -code { - padding: 2px 4px; - color: #d14; - background-color: #f7f7f9; - border: 1px solid #e1e1e8; -} - -pre { - display: block; - padding: 8.5px; - margin: 0 0 9px; - font-size: 12.025px; - line-height: 18px; - word-break: break-all; - word-wrap: break-word; - white-space: pre; - white-space: pre-wrap; - background-color: #f5f5f5; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.15); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -pre.prettyprint { - margin-bottom: 18px; -} - -pre code { - padding: 0; - color: inherit; - background-color: transparent; - border: 0; -} - -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} - -form { - margin: 0 0 18px; -} - -fieldset { - padding: 0; - margin: 0; - border: 0; -} - -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 27px; - font-size: 19.5px; - line-height: 36px; - color: #333333; - border: 0; - border-bottom: 1px solid #eee; -} - -legend small { - font-size: 13.5px; - color: #999999; -} - -label, -input, -button, -select, -textarea { - font-size: 13px; - font-weight: normal; - line-height: 18px; -} - -input, -button, -select, -textarea { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -} - -label { - display: block; - margin-bottom: 5px; - color: #333333; -} - -input, -textarea, -select, -.uneditable-input { - display: inline-block; - width: 210px; - height: 18px; - padding: 4px; - margin-bottom: 9px; - font-size: 13px; - line-height: 18px; - color: #555555; - background-color: #ffffff; - border: 1px solid #cccccc; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} - -.uneditable-textarea { - width: auto; - height: auto; -} - -label input, -label textarea, -label select { - display: block; -} - -input[type="image"], -input[type="checkbox"], -input[type="radio"] { - width: auto; - height: auto; - padding: 0; - margin: 3px 0; - *margin-top: 0; - /* IE7 */ - - line-height: normal; - cursor: pointer; - background-color: transparent; - border: 0 \9; - /* IE9 and down */ - - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} - -input[type="image"] { - border: 0; -} - -input[type="file"] { - width: auto; - padding: initial; - line-height: initial; - background-color: #ffffff; - background-color: initial; - border: initial; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} - -input[type="button"], -input[type="reset"], -input[type="submit"] { - width: auto; - height: auto; -} - -select, -input[type="file"] { - height: 28px; - /* In IE7, the height of the select element cannot be changed by height, only font-size */ - - *margin-top: 4px; - /* For IE7, add top margin to align select with labels */ - - line-height: 28px; -} - -input[type="file"] { - line-height: 18px \9; -} - -select { - width: 220px; - background-color: #ffffff; -} - -select[multiple], -select[size] { - height: auto; -} - -input[type="image"] { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} - -textarea { - height: auto; -} - -input[type="hidden"] { - display: none; -} - -.radio, -.checkbox { - min-height: 18px; - padding-left: 18px; -} - -.radio input[type="radio"], -.checkbox input[type="checkbox"] { - float: left; - margin-left: -18px; -} - -.controls > .radio:first-child, -.controls > .checkbox:first-child { - padding-top: 5px; -} - -.radio.inline, -.checkbox.inline { - display: inline-block; - padding-top: 5px; - margin-bottom: 0; - vertical-align: middle; -} - -.radio.inline + .radio.inline, -.checkbox.inline + .checkbox.inline { - margin-left: 10px; -} - -input, -textarea { - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; - -moz-transition: border linear 0.2s, box-shadow linear 0.2s; - -ms-transition: border linear 0.2s, box-shadow linear 0.2s; - -o-transition: border linear 0.2s, box-shadow linear 0.2s; - transition: border linear 0.2s, box-shadow linear 0.2s; -} - -input:focus, -textarea:focus { - border-color: rgba(82, 168, 236, 0.8); - outline: 0; - outline: thin dotted \9; - /* IE6-9 */ - - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); -} - -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus, -select:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} - -.input-mini { - width: 60px; -} - -.input-small { - width: 90px; -} - -.input-medium { - width: 150px; -} - -.input-large { - width: 210px; -} - -.input-xlarge { - width: 270px; -} - -.input-xxlarge { - width: 530px; -} - -input[class*="span"], -select[class*="span"], -textarea[class*="span"], -.uneditable-input[class*="span"], -.row-fluid input[class*="span"], -.row-fluid select[class*="span"], -.row-fluid textarea[class*="span"], -.row-fluid .uneditable-input[class*="span"] { - float: none; - margin-left: 0; -} - -input, -textarea, -.uneditable-input { - margin-left: 0; -} - -input.span12, -textarea.span12, -.uneditable-input.span12 { - width: 930px; -} - -input.span11, -textarea.span11, -.uneditable-input.span11 { - width: 850px; -} - -input.span10, -textarea.span10, -.uneditable-input.span10 { - width: 770px; -} - -input.span9, -textarea.span9, -.uneditable-input.span9 { - width: 690px; -} - -input.span8, -textarea.span8, -.uneditable-input.span8 { - width: 610px; -} - -input.span7, -textarea.span7, -.uneditable-input.span7 { - width: 530px; -} - -input.span6, -textarea.span6, -.uneditable-input.span6 { - width: 450px; -} - -input.span5, -textarea.span5, -.uneditable-input.span5 { - width: 370px; -} - -input.span4, -textarea.span4, -.uneditable-input.span4 { - width: 290px; -} - -input.span3, -textarea.span3, -.uneditable-input.span3 { - width: 210px; -} - -input.span2, -textarea.span2, -.uneditable-input.span2 { - width: 130px; -} - -input.span1, -textarea.span1, -.uneditable-input.span1 { - width: 50px; -} - -input[disabled], -select[disabled], -textarea[disabled], -input[readonly], -select[readonly], -textarea[readonly] { - cursor: not-allowed; - background-color: #eeeeee; - border-color: #ddd; -} - -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"][readonly], -input[type="checkbox"][readonly] { - background-color: transparent; -} - -.control-group.warning > label, -.control-group.warning .help-block, -.control-group.warning .help-inline { - color: #c09853; -} - -.control-group.warning input, -.control-group.warning select, -.control-group.warning textarea { - color: #c09853; - border-color: #c09853; -} - -.control-group.warning input:focus, -.control-group.warning select:focus, -.control-group.warning textarea:focus { - border-color: #a47e3c; - -webkit-box-shadow: 0 0 6px #dbc59e; - -moz-box-shadow: 0 0 6px #dbc59e; - box-shadow: 0 0 6px #dbc59e; -} - -.control-group.warning .input-prepend .add-on, -.control-group.warning .input-append .add-on { - color: #c09853; - background-color: #fcf8e3; - border-color: #c09853; -} - -.control-group.error > label, -.control-group.error .help-block, -.control-group.error .help-inline { - color: #b94a48; -} - -.control-group.error input, -.control-group.error select, -.control-group.error textarea { - color: #b94a48; - border-color: #b94a48; -} - -.control-group.error input:focus, -.control-group.error select:focus, -.control-group.error textarea:focus { - border-color: #953b39; - -webkit-box-shadow: 0 0 6px #d59392; - -moz-box-shadow: 0 0 6px #d59392; - box-shadow: 0 0 6px #d59392; -} - -.control-group.error .input-prepend .add-on, -.control-group.error .input-append .add-on { - color: #b94a48; - background-color: #f2dede; - border-color: #b94a48; -} - -.control-group.success > label, -.control-group.success .help-block, -.control-group.success .help-inline { - color: #468847; -} - -.control-group.success input, -.control-group.success select, -.control-group.success textarea { - color: #468847; - border-color: #468847; -} - -.control-group.success input:focus, -.control-group.success select:focus, -.control-group.success textarea:focus { - border-color: #356635; - -webkit-box-shadow: 0 0 6px #7aba7b; - -moz-box-shadow: 0 0 6px #7aba7b; - box-shadow: 0 0 6px #7aba7b; -} - -.control-group.success .input-prepend .add-on, -.control-group.success .input-append .add-on { - color: #468847; - background-color: #dff0d8; - border-color: #468847; -} - -input:focus:required:invalid, -textarea:focus:required:invalid, -select:focus:required:invalid { - color: #b94a48; - border-color: #ee5f5b; -} - -input:focus:required:invalid:focus, -textarea:focus:required:invalid:focus, -select:focus:required:invalid:focus { - border-color: #e9322d; - -webkit-box-shadow: 0 0 6px #f8b9b7; - -moz-box-shadow: 0 0 6px #f8b9b7; - box-shadow: 0 0 6px #f8b9b7; -} - -.form-actions { - padding: 17px 20px 18px; - margin-top: 18px; - margin-bottom: 18px; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - *zoom: 1; -} - -.form-actions:before, -.form-actions:after { - display: table; - content: ""; -} - -.form-actions:after { - clear: both; -} - -.uneditable-input { - overflow: hidden; - white-space: nowrap; - cursor: not-allowed; - background-color: #ffffff; - border-color: #eee; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); -} - -:-moz-placeholder { - color: #999999; -} - -::-webkit-input-placeholder { - color: #999999; -} - -.help-block, -.help-inline { - color: #555555; -} - -.help-block { - display: block; - margin-bottom: 9px; -} - -.help-inline { - display: inline-block; - *display: inline; - padding-left: 5px; - vertical-align: middle; - *zoom: 1; -} - -.input-prepend, -.input-append { - margin-bottom: 5px; -} - -.input-prepend input, -.input-append input, -.input-prepend select, -.input-append select, -.input-prepend .uneditable-input, -.input-append .uneditable-input { - position: relative; - margin-bottom: 0; - *margin-left: 0; - vertical-align: middle; - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} - -.input-prepend input:focus, -.input-append input:focus, -.input-prepend select:focus, -.input-append select:focus, -.input-prepend .uneditable-input:focus, -.input-append .uneditable-input:focus { - z-index: 2; -} - -.input-prepend .uneditable-input, -.input-append .uneditable-input { - border-left-color: #ccc; -} - -.input-prepend .add-on, -.input-append .add-on { - display: inline-block; - width: auto; - height: 18px; - min-width: 16px; - padding: 4px 5px; - font-weight: normal; - line-height: 18px; - text-align: center; - text-shadow: 0 1px 0 #ffffff; - vertical-align: middle; - background-color: #eeeeee; - border: 1px solid #ccc; -} - -.input-prepend .add-on, -.input-append .add-on, -.input-prepend .btn, -.input-append .btn { - margin-left: -1px; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} - -.input-prepend .active, -.input-append .active { - background-color: #a9dba9; - border-color: #46a546; -} - -.input-prepend .add-on, -.input-prepend .btn { - margin-right: -1px; -} - -.input-prepend .add-on:first-child, -.input-prepend .btn:first-child { - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} - -.input-append input, -.input-append select, -.input-append .uneditable-input { - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} - -.input-append .uneditable-input { - border-right-color: #ccc; - border-left-color: #eee; -} - -.input-append .add-on:last-child, -.input-append .btn:last-child { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} - -.input-prepend.input-append input, -.input-prepend.input-append select, -.input-prepend.input-append .uneditable-input { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} - -.input-prepend.input-append .add-on:first-child, -.input-prepend.input-append .btn:first-child { - margin-right: -1px; - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} - -.input-prepend.input-append .add-on:last-child, -.input-prepend.input-append .btn:last-child { - margin-left: -1px; - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} - -.search-query { - padding-right: 14px; - padding-right: 4px \9; - padding-left: 14px; - padding-left: 4px \9; - /* IE7-8 doesn't have border-radius, so don't indent the padding */ - - margin-bottom: 0; - -webkit-border-radius: 14px; - -moz-border-radius: 14px; - border-radius: 14px; -} - -.form-search input, -.form-inline input, -.form-horizontal input, -.form-search textarea, -.form-inline textarea, -.form-horizontal textarea, -.form-search select, -.form-inline select, -.form-horizontal select, -.form-search .help-inline, -.form-inline .help-inline, -.form-horizontal .help-inline, -.form-search .uneditable-input, -.form-inline .uneditable-input, -.form-horizontal .uneditable-input, -.form-search .input-prepend, -.form-inline .input-prepend, -.form-horizontal .input-prepend, -.form-search .input-append, -.form-inline .input-append, -.form-horizontal .input-append { - display: inline-block; - *display: inline; - margin-bottom: 0; - *zoom: 1; -} - -.form-search .hide, -.form-inline .hide, -.form-horizontal .hide { - display: none; -} - -.form-search label, -.form-inline label { - display: inline-block; -} - -.form-search .input-append, -.form-inline .input-append, -.form-search .input-prepend, -.form-inline .input-prepend { - margin-bottom: 0; -} - -.form-search .radio, -.form-search .checkbox, -.form-inline .radio, -.form-inline .checkbox { - padding-left: 0; - margin-bottom: 0; - vertical-align: middle; -} - -.form-search .radio input[type="radio"], -.form-search .checkbox input[type="checkbox"], -.form-inline .radio input[type="radio"], -.form-inline .checkbox input[type="checkbox"] { - float: left; - margin-right: 3px; - margin-left: 0; -} - -.control-group { - margin-bottom: 9px; -} - -legend + .control-group { - margin-top: 18px; - -webkit-margin-top-collapse: separate; -} - -.form-horizontal .control-group { - margin-bottom: 18px; - *zoom: 1; -} - -.form-horizontal .control-group:before, -.form-horizontal .control-group:after { - display: table; - content: ""; -} - -.form-horizontal .control-group:after { - clear: both; -} - -.form-horizontal .control-label { - float: left; - width: 140px; - padding-top: 5px; - text-align: right; -} - -.form-horizontal .controls { - *display: inline-block; - *padding-left: 20px; - margin-left: 160px; - *margin-left: 0; -} - -.form-horizontal .controls:first-child { - *padding-left: 160px; -} - -.form-horizontal .help-block { - margin-top: 9px; - margin-bottom: 0; -} - -.form-horizontal .form-actions { - padding-left: 160px; -} - -table { - max-width: 100%; - background-color: transparent; - border-collapse: collapse; - border-spacing: 0; -} - -.table { - width: 100%; - margin-bottom: 18px; -} - -.table th, -.table td { - padding: 8px; - line-height: 18px; - text-align: left; - vertical-align: top; - border-top: 1px solid #dddddd; -} - -.table th { - font-weight: bold; -} - -.table thead th { - vertical-align: bottom; -} - -.table caption + thead tr:first-child th, -.table caption + thead tr:first-child td, -.table colgroup + thead tr:first-child th, -.table colgroup + thead tr:first-child td, -.table thead:first-child tr:first-child th, -.table thead:first-child tr:first-child td { - border-top: 0; -} - -.table tbody + tbody { - border-top: 2px solid #dddddd; -} - -.table-condensed th, -.table-condensed td { - padding: 4px 5px; -} - -.table-bordered { - border: 1px solid #dddddd; - border-collapse: separate; - *border-collapse: collapsed; - border-left: 0; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.table-bordered th, -.table-bordered td { - border-left: 1px solid #dddddd; -} - -.table-bordered caption + thead tr:first-child th, -.table-bordered caption + tbody tr:first-child th, -.table-bordered caption + tbody tr:first-child td, -.table-bordered colgroup + thead tr:first-child th, -.table-bordered colgroup + tbody tr:first-child th, -.table-bordered colgroup + tbody tr:first-child td, -.table-bordered thead:first-child tr:first-child th, -.table-bordered tbody:first-child tr:first-child th, -.table-bordered tbody:first-child tr:first-child td { - border-top: 0; -} - -.table-bordered thead:first-child tr:first-child th:first-child, -.table-bordered tbody:first-child tr:first-child td:first-child { - -webkit-border-top-left-radius: 4px; - border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; -} - -.table-bordered thead:first-child tr:first-child th:last-child, -.table-bordered tbody:first-child tr:first-child td:last-child { - -webkit-border-top-right-radius: 4px; - border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; -} - -.table-bordered thead:last-child tr:last-child th:first-child, -.table-bordered tbody:last-child tr:last-child td:first-child { - -webkit-border-radius: 0 0 0 4px; - -moz-border-radius: 0 0 0 4px; - border-radius: 0 0 0 4px; - -webkit-border-bottom-left-radius: 4px; - border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; -} - -.table-bordered thead:last-child tr:last-child th:last-child, -.table-bordered tbody:last-child tr:last-child td:last-child { - -webkit-border-bottom-right-radius: 4px; - border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 4px; -} - -.table-striped tbody tr:nth-child(odd) td, -.table-striped tbody tr:nth-child(odd) th { - background-color: #f9f9f9; -} - -.table tbody tr:hover td, -.table tbody tr:hover th { - background-color: #f5f5f5; -} - -table .span1 { - float: none; - width: 44px; - margin-left: 0; -} - -table .span2 { - float: none; - width: 124px; - margin-left: 0; -} - -table .span3 { - float: none; - width: 204px; - margin-left: 0; -} - -table .span4 { - float: none; - width: 284px; - margin-left: 0; -} - -table .span5 { - float: none; - width: 364px; - margin-left: 0; -} - -table .span6 { - float: none; - width: 444px; - margin-left: 0; -} - -table .span7 { - float: none; - width: 524px; - margin-left: 0; -} - -table .span8 { - float: none; - width: 604px; - margin-left: 0; -} - -table .span9 { - float: none; - width: 684px; - margin-left: 0; -} - -table .span10 { - float: none; - width: 764px; - margin-left: 0; -} - -table .span11 { - float: none; - width: 844px; - margin-left: 0; -} - -table .span12 { - float: none; - width: 924px; - margin-left: 0; -} - -table .span13 { - float: none; - width: 1004px; - margin-left: 0; -} - -table .span14 { - float: none; - width: 1084px; - margin-left: 0; -} - -table .span15 { - float: none; - width: 1164px; - margin-left: 0; -} - -table .span16 { - float: none; - width: 1244px; - margin-left: 0; -} - -table .span17 { - float: none; - width: 1324px; - margin-left: 0; -} - -table .span18 { - float: none; - width: 1404px; - margin-left: 0; -} - -table .span19 { - float: none; - width: 1484px; - margin-left: 0; -} - -table .span20 { - float: none; - width: 1564px; - margin-left: 0; -} - -table .span21 { - float: none; - width: 1644px; - margin-left: 0; -} - -table .span22 { - float: none; - width: 1724px; - margin-left: 0; -} - -table .span23 { - float: none; - width: 1804px; - margin-left: 0; -} - -table .span24 { - float: none; - width: 1884px; - margin-left: 0; -} - -[class^="icon-"], -[class*=" icon-"] { - display: inline-block; - width: 14px; - height: 14px; - *margin-right: .3em; - line-height: 14px; - vertical-align: text-top; - background-image: url("../img/glyphicons-halflings.png"); - background-position: 14px 14px; - background-repeat: no-repeat; -} - -[class^="icon-"]:last-child, -[class*=" icon-"]:last-child { - *margin-left: 0; -} - -.icon-white { - background-image: url("../img/glyphicons-halflings-white.png"); -} - -.icon-glass { - background-position: 0 0; -} - -.icon-music { - background-position: -24px 0; -} - -.icon-search { - background-position: -48px 0; -} - -.icon-envelope { - background-position: -72px 0; -} - -.icon-heart { - background-position: -96px 0; -} - -.icon-star { - background-position: -120px 0; -} - -.icon-star-empty { - background-position: -144px 0; -} - -.icon-user { - background-position: -168px 0; -} - -.icon-film { - background-position: -192px 0; -} - -.icon-th-large { - background-position: -216px 0; -} - -.icon-th { - background-position: -240px 0; -} - -.icon-th-list { - background-position: -264px 0; -} - -.icon-ok { - background-position: -288px 0; -} - -.icon-remove { - background-position: -312px 0; -} - -.icon-zoom-in { - background-position: -336px 0; -} - -.icon-zoom-out { - background-position: -360px 0; -} - -.icon-off { - background-position: -384px 0; -} - -.icon-signal { - background-position: -408px 0; -} - -.icon-cog { - background-position: -432px 0; -} - -.icon-trash { - background-position: -456px 0; -} - -.icon-home { - background-position: 0 -24px; -} - -.icon-file { - background-position: -24px -24px; -} - -.icon-time { - background-position: -48px -24px; -} - -.icon-road { - background-position: -72px -24px; -} - -.icon-download-alt { - background-position: -96px -24px; -} - -.icon-download { - background-position: -120px -24px; -} - -.icon-upload { - background-position: -144px -24px; -} - -.icon-inbox { - background-position: -168px -24px; -} - -.icon-play-circle { - background-position: -192px -24px; -} - -.icon-repeat { - background-position: -216px -24px; -} - -.icon-refresh { - background-position: -240px -24px; -} - -.icon-list-alt { - background-position: -264px -24px; -} - -.icon-lock { - background-position: -287px -24px; -} - -.icon-flag { - background-position: -312px -24px; -} - -.icon-headphones { - background-position: -336px -24px; -} - -.icon-volume-off { - background-position: -360px -24px; -} - -.icon-volume-down { - background-position: -384px -24px; -} - -.icon-volume-up { - background-position: -408px -24px; -} - -.icon-qrcode { - background-position: -432px -24px; -} - -.icon-barcode { - background-position: -456px -24px; -} - -.icon-tag { - background-position: 0 -48px; -} - -.icon-tags { - background-position: -25px -48px; -} - -.icon-book { - background-position: -48px -48px; -} - -.icon-bookmark { - background-position: -72px -48px; -} - -.icon-print { - background-position: -96px -48px; -} - -.icon-camera { - background-position: -120px -48px; -} - -.icon-font { - background-position: -144px -48px; -} - -.icon-bold { - background-position: -167px -48px; -} - -.icon-italic { - background-position: -192px -48px; -} - -.icon-text-height { - background-position: -216px -48px; -} - -.icon-text-width { - background-position: -240px -48px; -} - -.icon-align-left { - background-position: -264px -48px; -} - -.icon-align-center { - background-position: -288px -48px; -} - -.icon-align-right { - background-position: -312px -48px; -} - -.icon-align-justify { - background-position: -336px -48px; -} - -.icon-list { - background-position: -360px -48px; -} - -.icon-indent-left { - background-position: -384px -48px; -} - -.icon-indent-right { - background-position: -408px -48px; -} - -.icon-facetime-video { - background-position: -432px -48px; -} - -.icon-picture { - background-position: -456px -48px; -} - -.icon-pencil { - background-position: 0 -72px; -} - -.icon-map-marker { - background-position: -24px -72px; -} - -.icon-adjust { - background-position: -48px -72px; -} - -.icon-tint { - background-position: -72px -72px; -} - -.icon-edit { - background-position: -96px -72px; -} - -.icon-share { - background-position: -120px -72px; -} - -.icon-check { - background-position: -144px -72px; -} - -.icon-move { - background-position: -168px -72px; -} - -.icon-step-backward { - background-position: -192px -72px; -} - -.icon-fast-backward { - background-position: -216px -72px; -} - -.icon-backward { - background-position: -240px -72px; -} - -.icon-play { - background-position: -264px -72px; -} - -.icon-pause { - background-position: -288px -72px; -} - -.icon-stop { - background-position: -312px -72px; -} - -.icon-forward { - background-position: -336px -72px; -} - -.icon-fast-forward { - background-position: -360px -72px; -} - -.icon-step-forward { - background-position: -384px -72px; -} - -.icon-eject { - background-position: -408px -72px; -} - -.icon-chevron-left { - background-position: -432px -72px; -} - -.icon-chevron-right { - background-position: -456px -72px; -} - -.icon-plus-sign { - background-position: 0 -96px; -} - -.icon-minus-sign { - background-position: -24px -96px; -} - -.icon-remove-sign { - background-position: -48px -96px; -} - -.icon-ok-sign { - background-position: -72px -96px; -} - -.icon-question-sign { - background-position: -96px -96px; -} - -.icon-info-sign { - background-position: -120px -96px; -} - -.icon-screenshot { - background-position: -144px -96px; -} - -.icon-remove-circle { - background-position: -168px -96px; -} - -.icon-ok-circle { - background-position: -192px -96px; -} - -.icon-ban-circle { - background-position: -216px -96px; -} - -.icon-arrow-left { - background-position: -240px -96px; -} - -.icon-arrow-right { - background-position: -264px -96px; -} - -.icon-arrow-up { - background-position: -289px -96px; -} - -.icon-arrow-down { - background-position: -312px -96px; -} - -.icon-share-alt { - background-position: -336px -96px; -} - -.icon-resize-full { - background-position: -360px -96px; -} - -.icon-resize-small { - background-position: -384px -96px; -} - -.icon-plus { - background-position: -408px -96px; -} - -.icon-minus { - background-position: -433px -96px; -} - -.icon-asterisk { - background-position: -456px -96px; -} - -.icon-exclamation-sign { - background-position: 0 -120px; -} - -.icon-gift { - background-position: -24px -120px; -} - -.icon-leaf { - background-position: -48px -120px; -} - -.icon-fire { - background-position: -72px -120px; -} - -.icon-eye-open { - background-position: -96px -120px; -} - -.icon-eye-close { - background-position: -120px -120px; -} - -.icon-warning-sign { - background-position: -144px -120px; -} - -.icon-plane { - background-position: -168px -120px; -} - -.icon-calendar { - background-position: -192px -120px; -} - -.icon-random { - background-position: -216px -120px; -} - -.icon-comment { - background-position: -240px -120px; -} - -.icon-magnet { - background-position: -264px -120px; -} - -.icon-chevron-up { - background-position: -288px -120px; -} - -.icon-chevron-down { - background-position: -313px -119px; -} - -.icon-retweet { - background-position: -336px -120px; -} - -.icon-shopping-cart { - background-position: -360px -120px; -} - -.icon-folder-close { - background-position: -384px -120px; -} - -.icon-folder-open { - background-position: -408px -120px; -} - -.icon-resize-vertical { - background-position: -432px -119px; -} - -.icon-resize-horizontal { - background-position: -456px -118px; -} - -.icon-hdd { - background-position: 0 -144px; -} - -.icon-bullhorn { - background-position: -24px -144px; -} - -.icon-bell { - background-position: -48px -144px; -} - -.icon-certificate { - background-position: -72px -144px; -} - -.icon-thumbs-up { - background-position: -96px -144px; -} - -.icon-thumbs-down { - background-position: -120px -144px; -} - -.icon-hand-right { - background-position: -144px -144px; -} - -.icon-hand-left { - background-position: -168px -144px; -} - -.icon-hand-up { - background-position: -192px -144px; -} - -.icon-hand-down { - background-position: -216px -144px; -} - -.icon-circle-arrow-right { - background-position: -240px -144px; -} - -.icon-circle-arrow-left { - background-position: -264px -144px; -} - -.icon-circle-arrow-up { - background-position: -288px -144px; -} - -.icon-circle-arrow-down { - background-position: -312px -144px; -} - -.icon-globe { - background-position: -336px -144px; -} - -.icon-wrench { - background-position: -360px -144px; -} - -.icon-tasks { - background-position: -384px -144px; -} - -.icon-filter { - background-position: -408px -144px; -} - -.icon-briefcase { - background-position: -432px -144px; -} - -.icon-fullscreen { - background-position: -456px -144px; -} - -.dropup, -.dropdown { - position: relative; -} - -.dropdown-toggle { - *margin-bottom: -3px; -} - -.dropdown-toggle:active, -.open .dropdown-toggle { - outline: 0; -} - -.caret { - display: inline-block; - width: 0; - height: 0; - vertical-align: top; - border-top: 4px solid #000000; - border-right: 4px solid transparent; - border-left: 4px solid transparent; - content: ""; - opacity: 0.3; - filter: alpha(opacity=30); -} - -.dropdown .caret { - margin-top: 8px; - margin-left: 2px; -} - -.dropdown:hover .caret, -.open .caret { - opacity: 1; - filter: alpha(opacity=100); -} - -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 4px 0; - margin: 1px 0 0; - list-style: none; - background-color: #ffffff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - *border-right-width: 2px; - *border-bottom-width: 2px; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; -} - -.dropdown-menu.pull-right { - right: 0; - left: auto; -} - -.dropdown-menu .divider { - *width: 100%; - height: 1px; - margin: 8px 1px; - *margin: -5px 0 5px; - overflow: hidden; - background-color: #e5e5e5; - border-bottom: 1px solid #ffffff; -} - -.dropdown-menu a { - display: block; - padding: 3px 15px; - clear: both; - font-weight: normal; - line-height: 18px; - color: #333333; - white-space: nowrap; -} - -.dropdown-menu li > a:hover, -.dropdown-menu .active > a, -.dropdown-menu .active > a:hover { - color: #ffffff; - text-decoration: none; - background-color: #0088cc; -} - -.open { - *z-index: 1000; -} - -.open .dropdown-menu { - display: block; -} - -.pull-right .dropdown-menu { - right: 0; - left: auto; -} - -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - border-top: 0; - border-bottom: 4px solid #000000; - content: "\2191"; -} - -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 1px; -} - -.typeahead { - margin-top: 2px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #eee; - border: 1px solid rgba(0, 0, 0, 0.05); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} - -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); -} - -.well-large { - padding: 24px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} - -.well-small { - padding: 9px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} - -.fade { - opacity: 0; - filter: alpha(opacity=0); - -webkit-transition: opacity 0.15s linear; - -moz-transition: opacity 0.15s linear; - -ms-transition: opacity 0.15s linear; - -o-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} - -.fade.in { - opacity: 1; - filter: alpha(opacity=100); -} - -.collapse { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition: height 0.35s ease; - -moz-transition: height 0.35s ease; - -ms-transition: height 0.35s ease; - -o-transition: height 0.35s ease; - transition: height 0.35s ease; -} - -.collapse.in { - height: auto; -} - -.close { - float: right; - font-size: 20px; - font-weight: bold; - line-height: 18px; - color: #000000; - text-shadow: 0 1px 0 #ffffff; - opacity: 0.2; - filter: alpha(opacity=20); -} - -.close:hover { - color: #000000; - text-decoration: none; - cursor: pointer; - opacity: 0.4; - filter: alpha(opacity=40); -} - -button.close { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} - -.btn { - display: inline-block; - *display: inline; - padding: 4px 10px 4px; - margin-bottom: 0; - *margin-left: .3em; - font-size: 13px; - line-height: 18px; - *line-height: 20px; - color: #333333; - text-align: center; - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); - vertical-align: middle; - cursor: pointer; - background-color: #f5f5f5; - *background-color: #e6e6e6; - background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); - background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); - background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); - background-image: linear-gradient(top, #ffffff, #e6e6e6); - background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); - background-repeat: repeat-x; - border: 1px solid #cccccc; - *border: 0; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - border-color: #e6e6e6 #e6e6e6 #bfbfbf; - border-bottom-color: #b3b3b3; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); - *zoom: 1; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.btn:hover, -.btn:active, -.btn.active, -.btn.disabled, -.btn[disabled] { - background-color: #e6e6e6; - *background-color: #d9d9d9; -} - -.btn:active, -.btn.active { - background-color: #cccccc \9; -} - -.btn:first-child { - *margin-left: 0; -} - -.btn:hover { - color: #333333; - text-decoration: none; - background-color: #e6e6e6; - *background-color: #d9d9d9; - /* Buttons in IE7 don't get borders, so darken on hover */ - - background-position: 0 -15px; - -webkit-transition: background-position 0.1s linear; - -moz-transition: background-position 0.1s linear; - -ms-transition: background-position 0.1s linear; - -o-transition: background-position 0.1s linear; - transition: background-position 0.1s linear; -} - -.btn:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} - -.btn.active, -.btn:active { - background-color: #e6e6e6; - background-color: #d9d9d9 \9; - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.btn.disabled, -.btn[disabled] { - cursor: default; - background-color: #e6e6e6; - background-image: none; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} - -.btn-large { - padding: 9px 14px; - font-size: 15px; - line-height: normal; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} - -.btn-large [class^="icon-"] { - margin-top: 1px; -} - -.btn-small { - padding: 5px 9px; - font-size: 11px; - line-height: 16px; -} - -.btn-small [class^="icon-"] { - margin-top: -1px; -} - -.btn-mini { - padding: 2px 6px; - font-size: 11px; - line-height: 14px; -} - -.btn-primary, -.btn-primary:hover, -.btn-warning, -.btn-warning:hover, -.btn-danger, -.btn-danger:hover, -.btn-success, -.btn-success:hover, -.btn-info, -.btn-info:hover, -.btn-inverse, -.btn-inverse:hover { - color: #ffffff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} - -.btn-primary.active, -.btn-warning.active, -.btn-danger.active, -.btn-success.active, -.btn-info.active, -.btn-inverse.active { - color: rgba(255, 255, 255, 0.75); -} - -.btn { - border-color: #ccc; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); -} - -.btn-primary { - background-color: #0074cc; - *background-color: #0055cc; - background-image: -ms-linear-gradient(top, #0088cc, #0055cc); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0055cc)); - background-image: -webkit-linear-gradient(top, #0088cc, #0055cc); - background-image: -o-linear-gradient(top, #0088cc, #0055cc); - background-image: -moz-linear-gradient(top, #0088cc, #0055cc); - background-image: linear-gradient(top, #0088cc, #0055cc); - background-repeat: repeat-x; - border-color: #0055cc #0055cc #003580; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#0088cc', endColorstr='#0055cc', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); -} - -.btn-primary:hover, -.btn-primary:active, -.btn-primary.active, -.btn-primary.disabled, -.btn-primary[disabled] { - background-color: #0055cc; - *background-color: #004ab3; -} - -.btn-primary:active, -.btn-primary.active { - background-color: #004099 \9; -} - -.btn-warning { - background-color: #faa732; - *background-color: #f89406; - background-image: -ms-linear-gradient(top, #fbb450, #f89406); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); - background-image: -webkit-linear-gradient(top, #fbb450, #f89406); - background-image: -o-linear-gradient(top, #fbb450, #f89406); - background-image: -moz-linear-gradient(top, #fbb450, #f89406); - background-image: linear-gradient(top, #fbb450, #f89406); - background-repeat: repeat-x; - border-color: #f89406 #f89406 #ad6704; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); -} - -.btn-warning:hover, -.btn-warning:active, -.btn-warning.active, -.btn-warning.disabled, -.btn-warning[disabled] { - background-color: #f89406; - *background-color: #df8505; -} - -.btn-warning:active, -.btn-warning.active { - background-color: #c67605 \9; -} - -.btn-danger { - background-color: #da4f49; - *background-color: #bd362f; - background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); - background-image: linear-gradient(top, #ee5f5b, #bd362f); - background-repeat: repeat-x; - border-color: #bd362f #bd362f #802420; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); -} - -.btn-danger:hover, -.btn-danger:active, -.btn-danger.active, -.btn-danger.disabled, -.btn-danger[disabled] { - background-color: #bd362f; - *background-color: #a9302a; -} - -.btn-danger:active, -.btn-danger.active { - background-color: #942a25 \9; -} - -.btn-success { - background-color: #5bb75b; - *background-color: #51a351; - background-image: -ms-linear-gradient(top, #62c462, #51a351); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); - background-image: -webkit-linear-gradient(top, #62c462, #51a351); - background-image: -o-linear-gradient(top, #62c462, #51a351); - background-image: -moz-linear-gradient(top, #62c462, #51a351); - background-image: linear-gradient(top, #62c462, #51a351); - background-repeat: repeat-x; - border-color: #51a351 #51a351 #387038; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); -} - -.btn-success:hover, -.btn-success:active, -.btn-success.active, -.btn-success.disabled, -.btn-success[disabled] { - background-color: #51a351; - *background-color: #499249; -} - -.btn-success:active, -.btn-success.active { - background-color: #408140 \9; -} - -.btn-info { - background-color: #49afcd; - *background-color: #2f96b4; - background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); - background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); - background-image: linear-gradient(top, #5bc0de, #2f96b4); - background-repeat: repeat-x; - border-color: #2f96b4 #2f96b4 #1f6377; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); -} - -.btn-info:hover, -.btn-info:active, -.btn-info.active, -.btn-info.disabled, -.btn-info[disabled] { - background-color: #2f96b4; - *background-color: #2a85a0; -} - -.btn-info:active, -.btn-info.active { - background-color: #24748c \9; -} - -.btn-inverse { - background-color: #414141; - *background-color: #222222; - background-image: -ms-linear-gradient(top, #555555, #222222); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222)); - background-image: -webkit-linear-gradient(top, #555555, #222222); - background-image: -o-linear-gradient(top, #555555, #222222); - background-image: -moz-linear-gradient(top, #555555, #222222); - background-image: linear-gradient(top, #555555, #222222); - background-repeat: repeat-x; - border-color: #222222 #222222 #000000; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#555555', endColorstr='#222222', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); -} - -.btn-inverse:hover, -.btn-inverse:active, -.btn-inverse.active, -.btn-inverse.disabled, -.btn-inverse[disabled] { - background-color: #222222; - *background-color: #151515; -} - -.btn-inverse:active, -.btn-inverse.active { - background-color: #080808 \9; -} - -button.btn, -input[type="submit"].btn { - *padding-top: 2px; - *padding-bottom: 2px; -} - -button.btn::-moz-focus-inner, -input[type="submit"].btn::-moz-focus-inner { - padding: 0; - border: 0; -} - -button.btn.btn-large, -input[type="submit"].btn.btn-large { - *padding-top: 7px; - *padding-bottom: 7px; -} - -button.btn.btn-small, -input[type="submit"].btn.btn-small { - *padding-top: 3px; - *padding-bottom: 3px; -} - -button.btn.btn-mini, -input[type="submit"].btn.btn-mini { - *padding-top: 1px; - *padding-bottom: 1px; -} - -.btn-group { - position: relative; - *margin-left: .3em; - *zoom: 1; -} - -.btn-group:before, -.btn-group:after { - display: table; - content: ""; -} - -.btn-group:after { - clear: both; -} - -.btn-group:first-child { - *margin-left: 0; -} - -.btn-group + .btn-group { - margin-left: 5px; -} - -.btn-toolbar { - margin-top: 9px; - margin-bottom: 9px; -} - -.btn-toolbar .btn-group { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - - *zoom: 1; -} - -.btn-group > .btn { - position: relative; - float: left; - margin-left: -1px; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} - -.btn-group > .btn:first-child { - margin-left: 0; - -webkit-border-bottom-left-radius: 4px; - border-bottom-left-radius: 4px; - -webkit-border-top-left-radius: 4px; - border-top-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-topleft: 4px; -} - -.btn-group > .btn:last-child, -.btn-group > .dropdown-toggle { - -webkit-border-top-right-radius: 4px; - border-top-right-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - border-bottom-right-radius: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; -} - -.btn-group > .btn.large:first-child { - margin-left: 0; - -webkit-border-bottom-left-radius: 6px; - border-bottom-left-radius: 6px; - -webkit-border-top-left-radius: 6px; - border-top-left-radius: 6px; - -moz-border-radius-bottomleft: 6px; - -moz-border-radius-topleft: 6px; -} - -.btn-group > .btn.large:last-child, -.btn-group > .large.dropdown-toggle { - -webkit-border-top-right-radius: 6px; - border-top-right-radius: 6px; - -webkit-border-bottom-right-radius: 6px; - border-bottom-right-radius: 6px; - -moz-border-radius-topright: 6px; - -moz-border-radius-bottomright: 6px; -} - -.btn-group > .btn:hover, -.btn-group > .btn:focus, -.btn-group > .btn:active, -.btn-group > .btn.active { - z-index: 2; -} - -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} - -.btn-group > .dropdown-toggle { - *padding-top: 4px; - padding-right: 8px; - *padding-bottom: 4px; - padding-left: 8px; - -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.btn-group > .btn-mini.dropdown-toggle { - padding-right: 5px; - padding-left: 5px; -} - -.btn-group > .btn-small.dropdown-toggle { - *padding-top: 4px; - *padding-bottom: 4px; -} - -.btn-group > .btn-large.dropdown-toggle { - padding-right: 12px; - padding-left: 12px; -} - -.btn-group.open .dropdown-toggle { - background-image: none; - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.btn-group.open .btn.dropdown-toggle { - background-color: #e6e6e6; -} - -.btn-group.open .btn-primary.dropdown-toggle { - background-color: #0055cc; -} - -.btn-group.open .btn-warning.dropdown-toggle { - background-color: #f89406; -} - -.btn-group.open .btn-danger.dropdown-toggle { - background-color: #bd362f; -} - -.btn-group.open .btn-success.dropdown-toggle { - background-color: #51a351; -} - -.btn-group.open .btn-info.dropdown-toggle { - background-color: #2f96b4; -} - -.btn-group.open .btn-inverse.dropdown-toggle { - background-color: #222222; -} - -.btn .caret { - margin-top: 7px; - margin-left: 0; -} - -.btn:hover .caret, -.open.btn-group .caret { - opacity: 1; - filter: alpha(opacity=100); -} - -.btn-mini .caret { - margin-top: 5px; -} - -.btn-small .caret { - margin-top: 6px; -} - -.btn-large .caret { - margin-top: 6px; - border-top-width: 5px; - border-right-width: 5px; - border-left-width: 5px; -} - -.dropup .btn-large .caret { - border-top: 0; - border-bottom: 5px solid #000000; -} - -.btn-primary .caret, -.btn-warning .caret, -.btn-danger .caret, -.btn-info .caret, -.btn-success .caret, -.btn-inverse .caret { - border-top-color: #ffffff; - border-bottom-color: #ffffff; - opacity: 0.75; - filter: alpha(opacity=75); -} - -.alert { - padding: 8px 35px 8px 14px; - margin-bottom: 18px; - color: #c09853; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); - background-color: #fcf8e3; - border: 1px solid #fbeed5; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.alert-heading { - color: inherit; -} - -.alert .close { - position: relative; - top: -2px; - right: -21px; - line-height: 18px; -} - -.alert-success { - color: #468847; - background-color: #dff0d8; - border-color: #d6e9c6; -} - -.alert-danger, -.alert-error { - color: #b94a48; - background-color: #f2dede; - border-color: #eed3d7; -} - -.alert-info { - color: #3a87ad; - background-color: #d9edf7; - border-color: #bce8f1; -} - -.alert-block { - padding-top: 14px; - padding-bottom: 14px; -} - -.alert-block > p, -.alert-block > ul { - margin-bottom: 0; -} - -.alert-block p + p { - margin-top: 5px; -} - -.nav { - margin-bottom: 18px; - margin-left: 0; - list-style: none; -} - -.nav > li > a { - display: block; -} - -.nav > li > a:hover { - text-decoration: none; - background-color: #eeeeee; -} - -.nav > .pull-right { - float: right; -} - -.nav .nav-header { - display: block; - padding: 3px 15px; - font-size: 11px; - font-weight: bold; - line-height: 18px; - color: #999999; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); - text-transform: uppercase; -} - -.nav li + .nav-header { - margin-top: 9px; -} - -.nav-list { - padding-right: 15px; - padding-left: 15px; - margin-bottom: 0; -} - -.nav-list > li > a, -.nav-list .nav-header { - margin-right: -15px; - margin-left: -15px; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); -} - -.nav-list > li > a { - padding: 3px 15px; -} - -.nav-list > .active > a, -.nav-list > .active > a:hover { - color: #ffffff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); - background-color: #0088cc; -} - -.nav-list [class^="icon-"] { - margin-right: 2px; -} - -.nav-list .divider { - *width: 100%; - height: 1px; - margin: 8px 1px; - *margin: -5px 0 5px; - overflow: hidden; - background-color: #e5e5e5; - border-bottom: 1px solid #ffffff; -} - -.nav-tabs, -.nav-pills { - *zoom: 1; -} - -.nav-tabs:before, -.nav-pills:before, -.nav-tabs:after, -.nav-pills:after { - display: table; - content: ""; -} - -.nav-tabs:after, -.nav-pills:after { - clear: both; -} - -.nav-tabs > li, -.nav-pills > li { - float: left; -} - -.nav-tabs > li > a, -.nav-pills > li > a { - padding-right: 12px; - padding-left: 12px; - margin-right: 2px; - line-height: 14px; -} - -.nav-tabs { - border-bottom: 1px solid #ddd; -} - -.nav-tabs > li { - margin-bottom: -1px; -} - -.nav-tabs > li > a { - padding-top: 8px; - padding-bottom: 8px; - line-height: 18px; - border: 1px solid transparent; - -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; -} - -.nav-tabs > li > a:hover { - border-color: #eeeeee #eeeeee #dddddd; -} - -.nav-tabs > .active > a, -.nav-tabs > .active > a:hover { - color: #555555; - cursor: default; - background-color: #ffffff; - border: 1px solid #ddd; - border-bottom-color: transparent; -} - -.nav-pills > li > a { - padding-top: 8px; - padding-bottom: 8px; - margin-top: 2px; - margin-bottom: 2px; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} - -.nav-pills > .active > a, -.nav-pills > .active > a:hover { - color: #ffffff; - background-color: #0088cc; -} - -.nav-stacked > li { - float: none; -} - -.nav-stacked > li > a { - margin-right: 0; -} - -.nav-tabs.nav-stacked { - border-bottom: 0; -} - -.nav-tabs.nav-stacked > li > a { - border: 1px solid #ddd; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} - -.nav-tabs.nav-stacked > li:first-child > a { - -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; -} - -.nav-tabs.nav-stacked > li:last-child > a { - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; -} - -.nav-tabs.nav-stacked > li > a:hover { - z-index: 2; - border-color: #ddd; -} - -.nav-pills.nav-stacked > li > a { - margin-bottom: 3px; -} - -.nav-pills.nav-stacked > li:last-child > a { - margin-bottom: 1px; -} - -.nav-tabs .dropdown-menu { - -webkit-border-radius: 0 0 5px 5px; - -moz-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} - -.nav-pills .dropdown-menu { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.nav-tabs .dropdown-toggle .caret, -.nav-pills .dropdown-toggle .caret { - margin-top: 6px; - border-top-color: #0088cc; - border-bottom-color: #0088cc; -} - -.nav-tabs .dropdown-toggle:hover .caret, -.nav-pills .dropdown-toggle:hover .caret { - border-top-color: #005580; - border-bottom-color: #005580; -} - -.nav-tabs .active .dropdown-toggle .caret, -.nav-pills .active .dropdown-toggle .caret { - border-top-color: #333333; - border-bottom-color: #333333; -} - -.nav > .dropdown.active > a:hover { - color: #000000; - cursor: pointer; -} - -.nav-tabs .open .dropdown-toggle, -.nav-pills .open .dropdown-toggle, -.nav > li.dropdown.open.active > a:hover { - color: #ffffff; - background-color: #999999; - border-color: #999999; -} - -.nav li.dropdown.open .caret, -.nav li.dropdown.open.active .caret, -.nav li.dropdown.open a:hover .caret { - border-top-color: #ffffff; - border-bottom-color: #ffffff; - opacity: 1; - filter: alpha(opacity=100); -} - -.tabs-stacked .open > a:hover { - border-color: #999999; -} - -.tabbable { - *zoom: 1; -} - -.tabbable:before, -.tabbable:after { - display: table; - content: ""; -} - -.tabbable:after { - clear: both; -} - -.tab-content { - overflow: auto; -} - -.tabs-below > .nav-tabs, -.tabs-right > .nav-tabs, -.tabs-left > .nav-tabs { - border-bottom: 0; -} - -.tab-content > .tab-pane, -.pill-content > .pill-pane { - display: none; -} - -.tab-content > .active, -.pill-content > .active { - display: block; -} - -.tabs-below > .nav-tabs { - border-top: 1px solid #ddd; -} - -.tabs-below > .nav-tabs > li { - margin-top: -1px; - margin-bottom: 0; -} - -.tabs-below > .nav-tabs > li > a { - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; -} - -.tabs-below > .nav-tabs > li > a:hover { - border-top-color: #ddd; - border-bottom-color: transparent; -} - -.tabs-below > .nav-tabs > .active > a, -.tabs-below > .nav-tabs > .active > a:hover { - border-color: transparent #ddd #ddd #ddd; -} - -.tabs-left > .nav-tabs > li, -.tabs-right > .nav-tabs > li { - float: none; -} - -.tabs-left > .nav-tabs > li > a, -.tabs-right > .nav-tabs > li > a { - min-width: 74px; - margin-right: 0; - margin-bottom: 3px; -} - -.tabs-left > .nav-tabs { - float: left; - margin-right: 19px; - border-right: 1px solid #ddd; -} - -.tabs-left > .nav-tabs > li > a { - margin-right: -1px; - -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; -} - -.tabs-left > .nav-tabs > li > a:hover { - border-color: #eeeeee #dddddd #eeeeee #eeeeee; -} - -.tabs-left > .nav-tabs .active > a, -.tabs-left > .nav-tabs .active > a:hover { - border-color: #ddd transparent #ddd #ddd; - *border-right-color: #ffffff; -} - -.tabs-right > .nav-tabs { - float: right; - margin-left: 19px; - border-left: 1px solid #ddd; -} - -.tabs-right > .nav-tabs > li > a { - margin-left: -1px; - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; -} - -.tabs-right > .nav-tabs > li > a:hover { - border-color: #eeeeee #eeeeee #eeeeee #dddddd; -} - -.tabs-right > .nav-tabs .active > a, -.tabs-right > .nav-tabs .active > a:hover { - border-color: #ddd #ddd #ddd transparent; - *border-left-color: #ffffff; -} - -.navbar { - *position: relative; - *z-index: 2; - margin-bottom: 18px; - overflow: visible; -} - -.navbar-inner { - min-height: 40px; - padding-right: 20px; - padding-left: 20px; - background-color: #2c2c2c; - background-image: -moz-linear-gradient(top, #333333, #222222); - background-image: -ms-linear-gradient(top, #333333, #222222); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222)); - background-image: -webkit-linear-gradient(top, #333333, #222222); - background-image: -o-linear-gradient(top, #333333, #222222); - background-image: linear-gradient(top, #333333, #222222); - background-repeat: repeat-x; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); -} - -.navbar .container { - width: auto; -} - -.nav-collapse.collapse { - height: auto; -} - -.navbar { - color: #999999; -} - -.navbar .brand:hover { - text-decoration: none; -} - -.navbar .brand { - display: block; - float: left; - padding: 8px 20px 12px; - margin-left: -20px; - font-size: 20px; - font-weight: 200; - line-height: 1; - color: #999999; -} - -.navbar .navbar-text { - margin-bottom: 0; - line-height: 40px; -} - -.navbar .navbar-link { - color: #999999; -} - -.navbar .navbar-link:hover { - color: #ffffff; -} - -.navbar .btn, -.navbar .btn-group { - margin-top: 5px; -} - -.navbar .btn-group .btn { - margin: 0; -} - -.navbar-form { - margin-bottom: 0; - *zoom: 1; -} - -.navbar-form:before, -.navbar-form:after { - display: table; - content: ""; -} - -.navbar-form:after { - clear: both; -} - -.navbar-form input, -.navbar-form select, -.navbar-form .radio, -.navbar-form .checkbox { - margin-top: 5px; -} - -.navbar-form input, -.navbar-form select { - display: inline-block; - margin-bottom: 0; -} - -.navbar-form input[type="image"], -.navbar-form input[type="checkbox"], -.navbar-form input[type="radio"] { - margin-top: 3px; -} - -.navbar-form .input-append, -.navbar-form .input-prepend { - margin-top: 6px; - white-space: nowrap; -} - -.navbar-form .input-append input, -.navbar-form .input-prepend input { - margin-top: 0; -} - -.navbar-search { - position: relative; - float: left; - margin-top: 6px; - margin-bottom: 0; -} - -.navbar-search .search-query { - padding: 4px 9px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; - font-weight: normal; - line-height: 1; - color: #ffffff; - background-color: #626262; - border: 1px solid #151515; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); - -webkit-transition: none; - -moz-transition: none; - -ms-transition: none; - -o-transition: none; - transition: none; -} - -.navbar-search .search-query:-moz-placeholder { - color: #cccccc; -} - -.navbar-search .search-query::-webkit-input-placeholder { - color: #cccccc; -} - -.navbar-search .search-query:focus, -.navbar-search .search-query.focused { - padding: 5px 10px; - color: #333333; - text-shadow: 0 1px 0 #ffffff; - background-color: #ffffff; - border: 0; - outline: 0; - -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); - box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); -} - -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; - margin-bottom: 0; -} - -.navbar-fixed-top .navbar-inner, -.navbar-fixed-bottom .navbar-inner { - padding-right: 0; - padding-left: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} - -.navbar-fixed-top .container, -.navbar-fixed-bottom .container { - width: 940px; -} - -.navbar-fixed-top { - top: 0; -} - -.navbar-fixed-bottom { - bottom: 0; -} - -.navbar .nav { - position: relative; - left: 0; - display: block; - float: left; - margin: 0 10px 0 0; -} - -.navbar .nav.pull-right { - float: right; -} - -.navbar .nav > li { - display: block; - float: left; -} - -.navbar .nav > li > a { - float: none; - padding: 9px 10px 11px; - line-height: 19px; - color: #999999; - text-decoration: none; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} - -.navbar .btn { - display: inline-block; - padding: 4px 10px 4px; - margin: 5px 5px 6px; - line-height: 18px; -} - -.navbar .btn-group { - padding: 5px 5px 6px; - margin: 0; -} - -.navbar .nav > li > a:hover { - color: #ffffff; - text-decoration: none; - background-color: transparent; -} - -.navbar .nav .active > a, -.navbar .nav .active > a:hover { - color: #ffffff; - text-decoration: none; - background-color: #222222; -} - -.navbar .divider-vertical { - width: 1px; - height: 40px; - margin: 0 9px; - overflow: hidden; - background-color: #222222; - border-right: 1px solid #333333; -} - -.navbar .nav.pull-right { - margin-right: 0; - margin-left: 10px; -} - -.navbar .btn-navbar { - display: none; - float: right; - padding: 7px 10px; - margin-right: 5px; - margin-left: 5px; - background-color: #2c2c2c; - *background-color: #222222; - background-image: -ms-linear-gradient(top, #333333, #222222); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222)); - background-image: -webkit-linear-gradient(top, #333333, #222222); - background-image: -o-linear-gradient(top, #333333, #222222); - background-image: linear-gradient(top, #333333, #222222); - background-image: -moz-linear-gradient(top, #333333, #222222); - background-repeat: repeat-x; - border-color: #222222 #222222 #000000; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); -} - -.navbar .btn-navbar:hover, -.navbar .btn-navbar:active, -.navbar .btn-navbar.active, -.navbar .btn-navbar.disabled, -.navbar .btn-navbar[disabled] { - background-color: #222222; - *background-color: #151515; -} - -.navbar .btn-navbar:active, -.navbar .btn-navbar.active { - background-color: #080808 \9; -} - -.navbar .btn-navbar .icon-bar { - display: block; - width: 18px; - height: 2px; - background-color: #f5f5f5; - -webkit-border-radius: 1px; - -moz-border-radius: 1px; - border-radius: 1px; - -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); - -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); -} - -.btn-navbar .icon-bar + .icon-bar { - margin-top: 3px; -} - -.navbar .dropdown-menu:before { - position: absolute; - top: -7px; - left: 9px; - display: inline-block; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-left: 7px solid transparent; - border-bottom-color: rgba(0, 0, 0, 0.2); - content: ''; -} - -.navbar .dropdown-menu:after { - position: absolute; - top: -6px; - left: 10px; - display: inline-block; - border-right: 6px solid transparent; - border-bottom: 6px solid #ffffff; - border-left: 6px solid transparent; - content: ''; -} - -.navbar-fixed-bottom .dropdown-menu:before { - top: auto; - bottom: -7px; - border-top: 7px solid #ccc; - border-bottom: 0; - border-top-color: rgba(0, 0, 0, 0.2); -} - -.navbar-fixed-bottom .dropdown-menu:after { - top: auto; - bottom: -6px; - border-top: 6px solid #ffffff; - border-bottom: 0; -} - -.navbar .nav li.dropdown .dropdown-toggle .caret, -.navbar .nav li.dropdown.open .caret { - border-top-color: #ffffff; - border-bottom-color: #ffffff; -} - -.navbar .nav li.dropdown.active .caret { - opacity: 1; - filter: alpha(opacity=100); -} - -.navbar .nav li.dropdown.open > .dropdown-toggle, -.navbar .nav li.dropdown.active > .dropdown-toggle, -.navbar .nav li.dropdown.open.active > .dropdown-toggle { - background-color: transparent; -} - -.navbar .nav li.dropdown.active > .dropdown-toggle:hover { - color: #ffffff; -} - -.navbar .pull-right .dropdown-menu, -.navbar .dropdown-menu.pull-right { - right: 0; - left: auto; -} - -.navbar .pull-right .dropdown-menu:before, -.navbar .dropdown-menu.pull-right:before { - right: 12px; - left: auto; -} - -.navbar .pull-right .dropdown-menu:after, -.navbar .dropdown-menu.pull-right:after { - right: 13px; - left: auto; -} - -.breadcrumb { - padding: 7px 14px; - margin: 0 0 18px; - list-style: none; - background-color: #fbfbfb; - background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5); - background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5)); - background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5); - background-image: -o-linear-gradient(top, #ffffff, #f5f5f5); - background-image: linear-gradient(top, #ffffff, #f5f5f5); - background-repeat: repeat-x; - border: 1px solid #ddd; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0); - -webkit-box-shadow: inset 0 1px 0 #ffffff; - -moz-box-shadow: inset 0 1px 0 #ffffff; - box-shadow: inset 0 1px 0 #ffffff; -} - -.breadcrumb li { - display: inline-block; - *display: inline; - text-shadow: 0 1px 0 #ffffff; - *zoom: 1; -} - -.breadcrumb .divider { - padding: 0 5px; - color: #999999; -} - -.breadcrumb .active a { - color: #333333; -} - -.pagination { - height: 36px; - margin: 18px 0; -} - -.pagination ul { - display: inline-block; - *display: inline; - margin-bottom: 0; - margin-left: 0; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - *zoom: 1; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.pagination li { - display: inline; -} - -.pagination a { - float: left; - padding: 0 14px; - line-height: 34px; - text-decoration: none; - border: 1px solid #ddd; - border-left-width: 0; -} - -.pagination a:hover, -.pagination .active a { - background-color: #f5f5f5; -} - -.pagination .active a { - color: #999999; - cursor: default; -} - -.pagination .disabled span, -.pagination .disabled a, -.pagination .disabled a:hover { - color: #999999; - cursor: default; - background-color: transparent; -} - -.pagination li:first-child a { - border-left-width: 1px; - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} - -.pagination li:last-child a { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} - -.pagination-centered { - text-align: center; -} - -.pagination-right { - text-align: right; -} - -.pager { - margin-bottom: 18px; - margin-left: 0; - text-align: center; - list-style: none; - *zoom: 1; -} - -.pager:before, -.pager:after { - display: table; - content: ""; -} - -.pager:after { - clear: both; -} - -.pager li { - display: inline; -} - -.pager a { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; -} - -.pager a:hover { - text-decoration: none; - background-color: #f5f5f5; -} - -.pager .next a { - float: right; -} - -.pager .previous a { - float: left; -} - -.pager .disabled a, -.pager .disabled a:hover { - color: #999999; - cursor: default; - background-color: #fff; -} - -.modal-open .dropdown-menu { - z-index: 2050; -} - -.modal-open .dropdown.open { - *z-index: 2050; -} - -.modal-open .popover { - z-index: 2060; -} - -.modal-open .tooltip { - z-index: 2070; -} - -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000000; -} - -.modal-backdrop.fade { - opacity: 0; -} - -.modal-backdrop, -.modal-backdrop.fade.in { - opacity: 0.8; - filter: alpha(opacity=80); -} - -.modal { - position: fixed; - top: 50%; - left: 50%; - z-index: 1050; - width: 560px; - margin: -250px 0 0 -280px; - overflow: auto; - background-color: #ffffff; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, 0.3); - *border: 1px solid #999; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -webkit-background-clip: padding-box; - -moz-background-clip: padding-box; - background-clip: padding-box; -} - -.modal.fade { - top: -25%; - -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; - -moz-transition: opacity 0.3s linear, top 0.3s ease-out; - -ms-transition: opacity 0.3s linear, top 0.3s ease-out; - -o-transition: opacity 0.3s linear, top 0.3s ease-out; - transition: opacity 0.3s linear, top 0.3s ease-out; -} - -.modal.fade.in { - top: 50%; -} - -.modal-header { - padding: 9px 15px; - border-bottom: 1px solid #eee; -} - -.modal-header .close { - margin-top: 2px; -} - -.modal-body { - max-height: 400px; - padding: 15px; - overflow-y: auto; -} - -.modal-form { - margin-bottom: 0; -} - -.modal-footer { - padding: 14px 15px 15px; - margin-bottom: 0; - text-align: right; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; - *zoom: 1; - -webkit-box-shadow: inset 0 1px 0 #ffffff; - -moz-box-shadow: inset 0 1px 0 #ffffff; - box-shadow: inset 0 1px 0 #ffffff; -} - -.modal-footer:before, -.modal-footer:after { - display: table; - content: ""; -} - -.modal-footer:after { - clear: both; -} - -.modal-footer .btn + .btn { - margin-bottom: 0; - margin-left: 5px; -} - -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} - -.tooltip { - position: absolute; - z-index: 1020; - display: block; - padding: 5px; - font-size: 11px; - opacity: 0; - filter: alpha(opacity=0); - visibility: visible; -} - -.tooltip.in { - opacity: 0.8; - filter: alpha(opacity=80); -} - -.tooltip.top { - margin-top: -2px; -} - -.tooltip.right { - margin-left: 2px; -} - -.tooltip.bottom { - margin-top: 2px; -} - -.tooltip.left { - margin-left: -2px; -} - -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-top: 5px solid #000000; - border-right: 5px solid transparent; - border-left: 5px solid transparent; -} - -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-top: 5px solid transparent; - border-bottom: 5px solid transparent; - border-left: 5px solid #000000; -} - -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-right: 5px solid transparent; - border-bottom: 5px solid #000000; - border-left: 5px solid transparent; -} - -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-top: 5px solid transparent; - border-right: 5px solid #000000; - border-bottom: 5px solid transparent; -} - -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #ffffff; - text-align: center; - text-decoration: none; - background-color: #000000; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; -} - -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1010; - display: none; - padding: 5px; -} - -.popover.top { - margin-top: -5px; -} - -.popover.right { - margin-left: 5px; -} - -.popover.bottom { - margin-top: 5px; -} - -.popover.left { - margin-left: -5px; -} - -.popover.top .arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-top: 5px solid #000000; - border-right: 5px solid transparent; - border-left: 5px solid transparent; -} - -.popover.right .arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-top: 5px solid transparent; - border-right: 5px solid #000000; - border-bottom: 5px solid transparent; -} - -.popover.bottom .arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-right: 5px solid transparent; - border-bottom: 5px solid #000000; - border-left: 5px solid transparent; -} - -.popover.left .arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-top: 5px solid transparent; - border-bottom: 5px solid transparent; - border-left: 5px solid #000000; -} - -.popover .arrow { - position: absolute; - width: 0; - height: 0; -} - -.popover-inner { - width: 280px; - padding: 3px; - overflow: hidden; - background: #000000; - background: rgba(0, 0, 0, 0.8); - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); -} - -.popover-title { - padding: 9px 15px; - line-height: 1; - background-color: #f5f5f5; - border-bottom: 1px solid #eee; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} - -.popover-content { - padding: 14px; - background-color: #ffffff; - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; - -webkit-background-clip: padding-box; - -moz-background-clip: padding-box; - background-clip: padding-box; -} - -.popover-content p, -.popover-content ul, -.popover-content ol { - margin-bottom: 0; -} - -.thumbnails { - margin-left: -20px; - list-style: none; - *zoom: 1; -} - -.thumbnails:before, -.thumbnails:after { - display: table; - content: ""; -} - -.thumbnails:after { - clear: both; -} - -.row-fluid .thumbnails { - margin-left: 0; -} - -.thumbnails > li { - float: left; - margin-bottom: 18px; - margin-left: 20px; -} - -.thumbnail { - display: block; - padding: 4px; - line-height: 1; - border: 1px solid #ddd; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); -} - -a.thumbnail:hover { - border-color: #0088cc; - -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); - -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); - box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); -} - -.thumbnail > img { - display: block; - max-width: 100%; - margin-right: auto; - margin-left: auto; -} - -.thumbnail .caption { - padding: 9px; -} - -.label, -.badge { - font-size: 10.998px; - font-weight: bold; - line-height: 14px; - color: #ffffff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - white-space: nowrap; - vertical-align: baseline; - background-color: #999999; -} - -.label { - padding: 1px 4px 2px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} - -.badge { - padding: 1px 9px 2px; - -webkit-border-radius: 9px; - -moz-border-radius: 9px; - border-radius: 9px; -} - -a.label:hover, -a.badge:hover { - color: #ffffff; - text-decoration: none; - cursor: pointer; -} - -.label-important, -.badge-important { - background-color: #b94a48; -} - -.label-important[href], -.badge-important[href] { - background-color: #953b39; -} - -.label-warning, -.badge-warning { - background-color: #f89406; -} - -.label-warning[href], -.badge-warning[href] { - background-color: #c67605; -} - -.label-success, -.badge-success { - background-color: #468847; -} - -.label-success[href], -.badge-success[href] { - background-color: #356635; -} - -.label-info, -.badge-info { - background-color: #3a87ad; -} - -.label-info[href], -.badge-info[href] { - background-color: #2d6987; -} - -.label-inverse, -.badge-inverse { - background-color: #333333; -} - -.label-inverse[href], -.badge-inverse[href] { - background-color: #1a1a1a; -} - -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} - -@-moz-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} - -@-ms-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} - -@-o-keyframes progress-bar-stripes { - from { - background-position: 0 0; - } - to { - background-position: 40px 0; - } -} - -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} - -.progress { - height: 18px; - margin-bottom: 18px; - overflow: hidden; - background-color: #f7f7f7; - background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); - background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); - background-image: linear-gradient(top, #f5f5f5, #f9f9f9); - background-repeat: repeat-x; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0); - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -} - -.progress .bar { - width: 0; - height: 18px; - font-size: 12px; - color: #ffffff; - text-align: center; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #0e90d2; - background-image: -moz-linear-gradient(top, #149bdf, #0480be); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); - background-image: -webkit-linear-gradient(top, #149bdf, #0480be); - background-image: -o-linear-gradient(top, #149bdf, #0480be); - background-image: linear-gradient(top, #149bdf, #0480be); - background-image: -ms-linear-gradient(top, #149bdf, #0480be); - background-repeat: repeat-x; - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0); - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - -webkit-transition: width 0.6s ease; - -moz-transition: width 0.6s ease; - -ms-transition: width 0.6s ease; - -o-transition: width 0.6s ease; - transition: width 0.6s ease; -} - -.progress-striped .bar { - background-color: #149bdf; - background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - -webkit-background-size: 40px 40px; - -moz-background-size: 40px 40px; - -o-background-size: 40px 40px; - background-size: 40px 40px; -} - -.progress.active .bar { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -moz-animation: progress-bar-stripes 2s linear infinite; - -ms-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} - -.progress-danger .bar { - background-color: #dd514c; - background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); - background-image: linear-gradient(top, #ee5f5b, #c43c35); - background-repeat: repeat-x; - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); -} - -.progress-danger.progress-striped .bar { - background-color: #ee5f5b; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} - -.progress-success .bar { - background-color: #5eb95e; - background-image: -moz-linear-gradient(top, #62c462, #57a957); - background-image: -ms-linear-gradient(top, #62c462, #57a957); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); - background-image: -webkit-linear-gradient(top, #62c462, #57a957); - background-image: -o-linear-gradient(top, #62c462, #57a957); - background-image: linear-gradient(top, #62c462, #57a957); - background-repeat: repeat-x; - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); -} - -.progress-success.progress-striped .bar { - background-color: #62c462; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} - -.progress-info .bar { - background-color: #4bb1cf; - background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); - background-image: -ms-linear-gradient(top, #5bc0de, #339bb9); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); - background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); - background-image: -o-linear-gradient(top, #5bc0de, #339bb9); - background-image: linear-gradient(top, #5bc0de, #339bb9); - background-repeat: repeat-x; - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); -} - -.progress-info.progress-striped .bar { - background-color: #5bc0de; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} - -.progress-warning .bar { - background-color: #faa732; - background-image: -moz-linear-gradient(top, #fbb450, #f89406); - background-image: -ms-linear-gradient(top, #fbb450, #f89406); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); - background-image: -webkit-linear-gradient(top, #fbb450, #f89406); - background-image: -o-linear-gradient(top, #fbb450, #f89406); - background-image: linear-gradient(top, #fbb450, #f89406); - background-repeat: repeat-x; - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); -} - -.progress-warning.progress-striped .bar { - background-color: #fbb450; - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} - -.accordion { - margin-bottom: 18px; -} - -.accordion-group { - margin-bottom: 2px; - border: 1px solid #e5e5e5; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.accordion-heading { - border-bottom: 0; -} - -.accordion-heading .accordion-toggle { - display: block; - padding: 8px 15px; -} - -.accordion-toggle { - cursor: pointer; -} - -.accordion-inner { - padding: 9px 15px; - border-top: 1px solid #e5e5e5; -} - -.carousel { - position: relative; - margin-bottom: 18px; - line-height: 1; -} - -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} - -.carousel .item { - position: relative; - display: none; - -webkit-transition: 0.6s ease-in-out left; - -moz-transition: 0.6s ease-in-out left; - -ms-transition: 0.6s ease-in-out left; - -o-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; -} - -.carousel .item > img { - display: block; - line-height: 1; -} - -.carousel .active, -.carousel .next, -.carousel .prev { - display: block; -} - -.carousel .active { - left: 0; -} - -.carousel .next, -.carousel .prev { - position: absolute; - top: 0; - width: 100%; -} - -.carousel .next { - left: 100%; -} - -.carousel .prev { - left: -100%; -} - -.carousel .next.left, -.carousel .prev.right { - left: 0; -} - -.carousel .active.left { - left: -100%; -} - -.carousel .active.right { - left: 100%; -} - -.carousel-control { - position: absolute; - top: 40%; - left: 15px; - width: 40px; - height: 40px; - margin-top: -20px; - font-size: 60px; - font-weight: 100; - line-height: 30px; - color: #ffffff; - text-align: center; - background: #222222; - border: 3px solid #ffffff; - -webkit-border-radius: 23px; - -moz-border-radius: 23px; - border-radius: 23px; - opacity: 0.5; - filter: alpha(opacity=50); -} - -.carousel-control.right { - right: 15px; - left: auto; -} - -.carousel-control:hover { - color: #ffffff; - text-decoration: none; - opacity: 0.9; - filter: alpha(opacity=90); -} - -.carousel-caption { - position: absolute; - right: 0; - bottom: 0; - left: 0; - padding: 10px 15px 5px; - background: #333333; - background: rgba(0, 0, 0, 0.75); -} - -.carousel-caption h4, -.carousel-caption p { - color: #ffffff; -} - -.hero-unit { - padding: 60px; - margin-bottom: 30px; - background-color: #eeeeee; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} - -.hero-unit h1 { - margin-bottom: 0; - font-size: 60px; - line-height: 1; - letter-spacing: -1px; - color: inherit; -} - -.hero-unit p { - font-size: 18px; - font-weight: 200; - line-height: 27px; - color: inherit; -} - -.pull-right { - float: right; -} - -.pull-left { - float: left; -} - -.hide { - display: none; -} - -.show { - display: block; -} - -.invisible { - visibility: hidden; -} diff --git a/roc-iui/src/main/resources/webroot/roc-vim/css/skill.css b/roc-iui/src/main/resources/webroot/roc-vim/css/skill.css deleted file mode 100644 index 092c7be4..00000000 --- a/roc-iui/src/main/resources/webroot/roc-vim/css/skill.css +++ /dev/null @@ -1,89 +0,0 @@ -/** - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -body { - font-family: 'Open Sans', sans-serif; - /*background-color: #f1f3fa;*/ - width: '100%'; - height: '100%'; - margin-top: 10px; -} -div.skills-sunburst{ - font-size: 12px; - font-weight: 400; - text-align:center; -} - -#skillmap .skills-wrapper { - margin-top: 10px; - overflow: auto; -} -#skillmap .skills-sunburst { - float: left; - width: 500px; - margin-left: -80px; -} -#skillmap .skills-sunburst svg { - font: 11px 'Source Sans Pro', sans-serif; - font-weight: 900; - - cursor: pointer; -} -#skillmap .skills-chart { - float: right; - font-family: 'Source Sans Pro', sans-serif; - font-size: 15px; - margin: 80px 20px 0 0; -} -#skillmap .skills-chart .breadcumb-text { - font-size: 13px; - font-weight: 700; -} -#skillmap .skills-chart #skills-chart-line { - fill: none; - stroke-width: 3.5px; -} -#skillmap .skills-chart .axis path, -#skillmap .skills-chart .axis line { - fill: none; -} -#skillmap .skills-chart .x-axis path, -#skillmap .skills-chart .y-axis path { - stroke: #444; - stroke-width: 1px; - shape-rendering: geometricPrecision; -} - -#explanation { - position: absolute; - top: 165px; - left: 170px; - width: 140px; - text-align: center; - color: #666; - margin-top:30px; -} - -#percentage { - font-size: 2em; -} - -#endlabel{ - font-sizte:1.5em; -} - -div.skills-sunburst text{ - text-anchor: middle; -} \ No newline at end of file diff --git a/roc-iui/src/main/resources/webroot/roc-vim/css/vim.css b/roc-iui/src/main/resources/webroot/roc-vim/css/vim.css deleted file mode 100644 index 72de455e..00000000 --- a/roc-iui/src/main/resources/webroot/roc-vim/css/vim.css +++ /dev/null @@ -1,482 +0,0 @@ -/** - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -body { - font-family: microsoft yahei !important; -} - -/* blue pill (inspired by iTunes) -*******************************************************************************/ - -.grey { - background-color: #e5e5e5; - color: #333; -} - -.blue { - - background-color: #5b9bd1; - border-radius: 20px; - color: #fff; - font-weight: bold; - padding: 8px 0; - text-align: center; - width: 100px; -} - -.blue:hover { - background-color: #e8f3fd; - color: #5b9bd1; -} - -.blue.selected { - border: 0; - background-color: #5b9bd1; - color: #fff; -} - -.blue.selected:hover { - border: 0; - background-color: #5b9bd1; - color: #fff; -} - -a { - font-weight: bold; - text-decoration: none; -} - -p { - color: #444; - font-size: 14px; - font-weight: normal; - line-height: 21px; - margin: 0 0 12px 0; -} - -p.credit { - border-top: 1px solid #ccc; - font-size: 14px; - line-height: 140%; - margin: 36px 0 12px 0; - padding: 8px 0 0 0; - text-align: center; -} - -ul.column { - float: left; - list-style: none; - width: 675px; -} - -ul.column li { - background: #eee; - -webkit-border-radius: 5px; - border-radius: 5px; - -webkit-box-shadow: inset 0 1px 1px 0 #c7c7c7; - box-shadow: inset 0 1px 1px 0 #c7c7c7; - float: left; - margin: 10px 0 0 10px; - display: block; - height: 150px; - text-align: center; - width: 215px; -} - -/* Clear Floated Elements -------------------------------------------------------------------------------*/ -.column:after,.button-collection:after,.clearfix:after,div.project-info:after - { - clear: both; - content: ' '; - display: block; - font-size: 0; - line-height: 0; - visibility: hidden; - width: 0; - height: 0; -} - -.container-fluid { - background-color: white !important; - min-height: 500px; -} - -.nav-tabs { - border: 0; -} - -.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus - { - border: 0; - border-top: 3px solid #F3565D; -} - -.nav-tabs>li>a { - border-radius: 0; -} - -.nav-tabs>li>a:hover { - background-color: #f1f3fa; - border: 1Px solid #f1f3fa; -} - -.c3 { - margin-top: 120px; -} - -.skills-chart-breadcrumb { - -} - -.blue:selected { - border: 0; - background-color: #5b9bd1; -} - -.btn { - /* border-width: 0; */ - /* padding: 7px 14px; */ - /* font-size: 14px; */ - /* outline: none !important; */ - /* background-image: none !important; */ - /* filter: none; */ - /* -webkit-box-shadow: none; */ - -moz-box-shadow: none; - /* box-shadow: none; */ - /* text-shadow: none; */ -} - -select { - border-width: 1px; - padding: 4px 1px; - border-radius: 4px; -} - -.input-sm { - padding: 4px 10px; -} - -.btn-block { - display: block; - width: 100%; - padding-left: 0; - padding-right: 0; -} - -/* Bootstrap buttons */ - - -.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active - { - color: #333; - background-color: #ededed; - border-color: #b3b3b3; -} - -.open .btn-default.dropdown-toggle { - color: #333; - background-color: #ededed; - border-color: #b3b3b3; -} - -.btn-default:active,.btn-default.active { - background-image: none; - background-color: #e0e0e0; - font-weight: bold; -} - -.btn-default:active:hover,.btn-default.active:hover { - background-color: #e6e6e6; -} - -.open .btn-default.dropdown-toggle { - background-image: none; -} - -.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active - { - background-color: #fff; - border-color: #ccc; -} - -.btn-default .badge { - color: #fff; - background-color: #333; -} - - -.btn-default>i[class^="icon-"],.btn-default>i[class*="icon-"] { - color: #8c8c8c; -} - -div[data-name="tab_zone"] div { - background-color: #f1f3fa; - padding: 0px; -} - -div[data-name="cond_zone"] div { - background-color: #fff; - margin-top: 15px; - margin-bottom: 15px; -} - - - - -.input{ - width:250px; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; -} - -div.separator { - margin: 20px; -} - -div.separator div { - text-align: center; - line-height: 0; -} - -div.separator-line { - height: 1px !important; - width: 100%; - background: #ddd; - overflow: hidden; -} - -.dropdown-toggle { - color: #5b9bd1; -} - -.calendar-date { - color: #5b9bd1; -} - -.range_inputs { - color: #5b9bd1; -} - -.btn.dropdown-toggle,.btn-group .btn.dropdown-toggle,.btn:hover,.btn:disabled,.btn[disabled],.btn:focus,.btn:active,.btn.active - { - outline: none !important; - background-image: none !important; - filter: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - text-shadow: none; -} - -#skills-chart-breadcrumb { - margin-bottom: 10px -} - -/*增加daterangepicker的css*/ -input[name="daterange"] { - width: 220px; - line-height: 0; - height: 31px; - vertical-align: top; - margin-top: 2px; -} - -.daterangepicker .ranges { - width: 205px; -} - -.daterangepicker .ranges input { - width: 95px !important; -} - -td.details-control { - background: url('../images/details_open.png') no-repeat center center; - cursor: pointer; -} - -tr.shown td.details-control { - background: url('../images/details_close.png') no-repeat center center; -} - -.details table td { - word-wrap: break-word; - word-break: normal; - border-top: 1px solid #dddddd; -} - -.details table tr:first-child td { - border-top: none; -} - -.details table { - table-layout: fixed; - width: 100%; -} - -td.title { - width: 10%; -} - -table.dataTable tbody th,table.dataTable tbody td { - padding: 8px 10px; -} - -div.dataTables_length,div.dataTables_info { - display: inline; -} - -div.dataTables_paginate { - display: inline; - float: right; -} - -div.pagination-panel { - margin-right: 10px; -} - -input.pagination-panel-input { - width: 50px; -} - -#ict_res_table_div { - margin-top: 15px; -} - -#ict_res_table_div label { - font-weight: 100; -} - -.daterangepicker .daterangepicker_start_input label,.daterangepicker .daterangepicker_end_input label - { - color: #5b9bd1; -} - -.daterangepicker .ranges .input-mini { - color: #5b9bd1; -} - -.cancelBtn { - padding: 5px 10px 5px 10px; -} - -.btn:focus,.btn:active:focus,.btn.active:focus { - outline: 0; -} - -#ict_res_table_div table { - width: 100% !important; -} - -.control-label .required { - color: #e02222; - font-size: 12px; - padding-left: 2px; -} - -#ict_vim_table tbody tr{ - cursor:pointer; -} - - -/*卡片面板样式*/ -.animated-panel { - -webkit-animation-duration: .5s; - animation-duration: .5s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} - -.hpanel { - background-color: none; - border: none; - box-shadow: none; - margin-bottom: 25px; - -} - -.hpanel .panel-body { - border: 1px solid #e4e5e7; - border-radius: 2px; - padding: 20px; - position: relative; -} -.h-200 { - min-height: 220px; -} -.m-t-xl { - margin-top: 40px; -} -.text-success { - color: #0d638f; -} -.hpanel > .panel-footer { - color: inherit; - border: 1px solid #e4e5e7; - border-top: none; - font-size: 90%; - background: #f7f9fa; - height:40px; - padding: 5px 15px; -} -.color_cloud{ - color:#ccc; -} -.stats-title{ - -} - -h3{ - margin-top: 10px; - margin-bottom: 40px; - font-weight: 200; -} - -.blue-font{ - color:#428bca; -} - -.hpanel > .panel-footer .pull-right a{ - margin-left: 5px; -} - -.hpanel > .panel-footer .pull-right .btn{ - min-width: 30px !important; -} - -.refresh-status-text{ - float: right; -} - -.font { - margin-bottom: 15px; -} - -.hpanel_show{ - cursor: pointer; - background-color: #f7f9fa; -} - diff --git a/roc-iui/src/main/resources/webroot/roc-vim/css/vimChart.css b/roc-iui/src/main/resources/webroot/roc-vim/css/vimChart.css deleted file mode 100644 index 842ff486..00000000 --- a/roc-iui/src/main/resources/webroot/roc-vim/css/vimChart.css +++ /dev/null @@ -1,54 +0,0 @@ -body { - color: #333; - font-family: "Microsoft yahei", Verdana, Arial, Helvetica, sans-serif !important; - padding: 0px !important; - margin: 0px !important; - direction: ltr; - background-color: #f1f3fa !important; -} - -.row{ - margin-left: 0px; - margin-right: 0px; -} - -select { - border-width: 1px; - padding: 4px 1px; - border-radius: 4px; -} - -.container-fluid { - background-color: #fff; -} - - -.titlefont { - font-size: 16px; - margin-left: 10px; -} - -.separator-line { - height: 1px; - width: 100%; - background: #ddd; - overflow: hidden; - margin-bottom: 15px; - margin-top: 6px; - opacity: 0.6; -} - -.main { - height: 400px; - /* width: 778px !important; */ - overflow: hidden; - padding: 10px; - margin-bottom: 10px; - border: 1px solid #e3e3e3; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} \ No newline at end of file diff --git a/roc-iui/src/main/resources/webroot/roc-vim/i18n/loadi18nApp.js b/roc-iui/src/main/resources/webroot/roc-vim/i18n/loadi18nApp.js deleted file mode 100644 index 8b59025f..00000000 --- a/roc-iui/src/main/resources/webroot/roc-vim/i18n/loadi18nApp.js +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -function loadPropertiesSideMenu(lang, propertiesFileNamePrefix, propertiesFilePath){ - jQuery.i18n.properties({ - language:lang, - name:propertiesFileNamePrefix, - path:propertiesFilePath, // 资源文件路径 - mode:'map', // 用 Map 的方式使用资源文件中的值 - callback: function() {// 加载成功后设置显示内容 - var i18nItems = $('[name_i18n=com_zte_conductor_ui_i18n]'); - for(var i=0;i - see LICENSE file - * - * http://ReactiveRaven.github.com/jqBootstrapValidation/ - */ - -(function( $ ){ - - var createdElements = []; - - var defaults = { - options: { - prependExistingHelpBlock: false, - sniffHtml: true, // sniff for 'required', 'maxlength', etc - preventSubmit: true, // stop the form submit event from firing if validation fails - submitError: false, // function called if there is an error when trying to submit - submitSuccess: false, // function called just before a successful submit event is sent to the server - semanticallyStrict: false, // set to true to tidy up generated HTML output - autoAdd: { - helpBlocks: true - }, - filter: function () { - // return $(this).is(":visible"); // only validate elements you can see - return true; // validate everything - } - }, - methods: { - init : function( options ) { - - var settings = $.extend(true, {}, defaults); - - settings.options = $.extend(true, settings.options, options); - - var $siblingElements = this; - - var uniqueForms = $.unique( - $siblingElements.map( function () { - return $(this).parents("form")[0]; - }).toArray() - ); - - $(uniqueForms).bind("submit", function (e) { - var $form = $(this); - var warningsFound = 0; - var $inputs = $form.find("input,textarea,select").not("[type=submit],[type=image]").filter(settings.options.filter); - $inputs.trigger("submit.validation").trigger("validationLostFocus.validation"); - - $inputs.each(function (i, el) { - var $this = $(el), - $controlGroup = $this.parents(".control-group").first(); - if ( - $controlGroup.hasClass("warning") - ) { - $controlGroup.removeClass("warning").addClass("error"); - warningsFound++; - } - }); - - $inputs.trigger("validationLostFocus.validation"); - - if (warningsFound) { - if (settings.options.preventSubmit) { - e.preventDefault(); - } - $form.addClass("error"); - if ($.isFunction(settings.options.submitError)) { - settings.options.submitError($form, e, $inputs.jqBootstrapValidation("collectErrors", true)); - } - } else { - $form.removeClass("error"); - if ($.isFunction(settings.options.submitSuccess)) { - settings.options.submitSuccess($form, e); - } - } - }); - - return this.each(function(){ - - // Get references to everything we're interested in - var $this = $(this), - $controlGroup = $this.parents(".control-group").first(), - $helpBlock = $controlGroup.find(".help-block").first(), - $form = $this.parents("form").first(), - validatorNames = []; - - // create message container if not exists - if (!$helpBlock.length && settings.options.autoAdd && settings.options.autoAdd.helpBlocks) { - $helpBlock = $('
    '); - $controlGroup.find('.controls').append($helpBlock); - createdElements.push($helpBlock[0]); - } - - // ============================================================= - // SNIFF HTML FOR VALIDATORS - // ============================================================= - - // *snort sniff snuffle* - - if (settings.options.sniffHtml) { - var message = ""; - // --------------------------------------------------------- - // PATTERN - // --------------------------------------------------------- - if ($this.attr("pattern") !== undefined) { - message = "Not in the expected format"; - if ($this.data("validationPatternMessage")) { - message = $this.data("validationPatternMessage"); - } - $this.data("validationPatternMessage", message); - $this.data("validationPatternRegex", $this.attr("pattern")); - } - // --------------------------------------------------------- - // MAX - // --------------------------------------------------------- - if ($this.attr("max") !== undefined || $this.attr("aria-valuemax") !== undefined) { - var max = ($this.attr("max") !== undefined ? $this.attr("max") : $this.attr("aria-valuemax")); - message = "Too high: Maximum of '" + max + "'"; - if ($this.data("validationMaxMessage")) { - message = $this.data("validationMaxMessage"); - } - $this.data("validationMaxMessage", message); - $this.data("validationMaxMax", max); - } - // --------------------------------------------------------- - // MIN - // --------------------------------------------------------- - if ($this.attr("min") !== undefined || $this.attr("aria-valuemin") !== undefined) { - var min = ($this.attr("min") !== undefined ? $this.attr("min") : $this.attr("aria-valuemin")); - message = "Too low: Minimum of '" + min + "'"; - if ($this.data("validationMinMessage")) { - message = $this.data("validationMinMessage"); - } - $this.data("validationMinMessage", message); - $this.data("validationMinMin", min); - } - // --------------------------------------------------------- - // MAXLENGTH - // --------------------------------------------------------- - if ($this.attr("maxlength") !== undefined) { - message = "Too long: Maximum of '" + $this.attr("maxlength") + "' characters"; - if ($this.data("validationMaxlengthMessage")) { - message = $this.data("validationMaxlengthMessage"); - } - $this.data("validationMaxlengthMessage", message); - $this.data("validationMaxlengthMaxlength", $this.attr("maxlength")); - } - // --------------------------------------------------------- - // MINLENGTH - // --------------------------------------------------------- - if ($this.attr("minlength") !== undefined) { - message = "Too short: Minimum of '" + $this.attr("minlength") + "' characters"; - if ($this.data("validationMinlengthMessage")) { - message = $this.data("validationMinlengthMessage"); - } - $this.data("validationMinlengthMessage", message); - $this.data("validationMinlengthMinlength", $this.attr("minlength")); - } - // --------------------------------------------------------- - // REQUIRED - // --------------------------------------------------------- - if ($this.attr("required") !== undefined || $this.attr("aria-required") !== undefined) { - message = settings.builtInValidators.required.message; - if ($this.data("validationRequiredMessage")) { - message = $this.data("validationRequiredMessage"); - } - $this.data("validationRequiredMessage", message); - } - // --------------------------------------------------------- - // NUMBER - // --------------------------------------------------------- - if ($this.attr("type") !== undefined && $this.attr("type").toLowerCase() === "number") { - message = settings.builtInValidators.number.message; - if ($this.data("validationNumberMessage")) { - message = $this.data("validationNumberMessage"); - } - $this.data("validationNumberMessage", message); - } - // --------------------------------------------------------- - // EMAIL - // --------------------------------------------------------- - if ($this.attr("type") !== undefined && $this.attr("type").toLowerCase() === "email") { - message = "Not a valid email address"; - if ($this.data("validationValidemailMessage")) { - message = $this.data("validationValidemailMessage"); - } else if ($this.data("validationEmailMessage")) { - message = $this.data("validationEmailMessage"); - } - $this.data("validationValidemailMessage", message); - } - // --------------------------------------------------------- - // MINCHECKED - // --------------------------------------------------------- - if ($this.attr("minchecked") !== undefined) { - message = "Not enough options checked; Minimum of '" + $this.attr("minchecked") + "' required"; - if ($this.data("validationMincheckedMessage")) { - message = $this.data("validationMincheckedMessage"); - } - $this.data("validationMincheckedMessage", message); - $this.data("validationMincheckedMinchecked", $this.attr("minchecked")); - } - // --------------------------------------------------------- - // MAXCHECKED - // --------------------------------------------------------- - if ($this.attr("maxchecked") !== undefined) { - message = "Too many options checked; Maximum of '" + $this.attr("maxchecked") + "' required"; - if ($this.data("validationMaxcheckedMessage")) { - message = $this.data("validationMaxcheckedMessage"); - } - $this.data("validationMaxcheckedMessage", message); - $this.data("validationMaxcheckedMaxchecked", $this.attr("maxchecked")); - } - } - - // ============================================================= - // COLLECT VALIDATOR NAMES - // ============================================================= - - // Get named validators - if ($this.data("validation") !== undefined) { - validatorNames = $this.data("validation").split(","); - } - - // Get extra ones defined on the element's data attributes - $.each($this.data(), function (i, el) { - var parts = i.replace(/([A-Z])/g, ",$1").split(","); - if (parts[0] === "validation" && parts[1]) { - validatorNames.push(parts[1]); - } - }); - - // ============================================================= - // NORMALISE VALIDATOR NAMES - // ============================================================= - - var validatorNamesToInspect = validatorNames; - var newValidatorNamesToInspect = []; - - do // repeatedly expand 'shortcut' validators into their real validators - { - // Uppercase only the first letter of each name - $.each(validatorNames, function (i, el) { - validatorNames[i] = formatValidatorName(el); - }); - - // Remove duplicate validator names - validatorNames = $.unique(validatorNames); - - // Pull out the new validator names from each shortcut - newValidatorNamesToInspect = []; - $.each(validatorNamesToInspect, function(i, el) { - if ($this.data("validation" + el + "Shortcut") !== undefined) { - // Are these custom validators? - // Pull them out! - $.each($this.data("validation" + el + "Shortcut").split(","), function(i2, el2) { - newValidatorNamesToInspect.push(el2); - }); - } else if (settings.builtInValidators[el.toLowerCase()]) { - // Is this a recognised built-in? - // Pull it out! - var validator = settings.builtInValidators[el.toLowerCase()]; - if (validator.type.toLowerCase() === "shortcut") { - $.each(validator.shortcut.split(","), function (i, el) { - el = formatValidatorName(el); - newValidatorNamesToInspect.push(el); - validatorNames.push(el); - }); - } - } - }); - - validatorNamesToInspect = newValidatorNamesToInspect; - - } while (validatorNamesToInspect.length > 0) - - // ============================================================= - // SET UP VALIDATOR ARRAYS - // ============================================================= - - var validators = {}; - - $.each(validatorNames, function (i, el) { - // Set up the 'override' message - var message = $this.data("validation" + el + "Message"); - var hasOverrideMessage = (message !== undefined); - var foundValidator = false; - message = - ( - message - ? message - : "'" + el + "' validation failed " - ) - ; - - $.each( - settings.validatorTypes, - function (validatorType, validatorTemplate) { - if (validators[validatorType] === undefined) { - validators[validatorType] = []; - } - if (!foundValidator && $this.data("validation" + el + formatValidatorName(validatorTemplate.name)) !== undefined) { - validators[validatorType].push( - $.extend( - true, - { - name: formatValidatorName(validatorTemplate.name), - message: message - }, - validatorTemplate.init($this, el) - ) - ); - foundValidator = true; - } - } - ); - - if (!foundValidator && settings.builtInValidators[el.toLowerCase()]) { - - var validator = $.extend(true, {}, settings.builtInValidators[el.toLowerCase()]); - if (hasOverrideMessage) { - validator.message = message; - } - var validatorType = validator.type.toLowerCase(); - - if (validatorType === "shortcut") { - foundValidator = true; - } else { - $.each( - settings.validatorTypes, - function (validatorTemplateType, validatorTemplate) { - if (validators[validatorTemplateType] === undefined) { - validators[validatorTemplateType] = []; - } - if (!foundValidator && validatorType === validatorTemplateType.toLowerCase()) { - $this.data("validation" + el + formatValidatorName(validatorTemplate.name), validator[validatorTemplate.name.toLowerCase()]); - validators[validatorType].push( - $.extend( - validator, - validatorTemplate.init($this, el) - ) - ); - foundValidator = true; - } - } - ); - } - } - - if (! foundValidator) { - $.error("Cannot find validation info for '" + el + "'"); - } - }); - - // ============================================================= - // STORE FALLBACK VALUES - // ============================================================= - - $helpBlock.data( - "original-contents", - ( - $helpBlock.data("original-contents") - ? $helpBlock.data("original-contents") - : $helpBlock.html() - ) - ); - - $helpBlock.data( - "original-role", - ( - $helpBlock.data("original-role") - ? $helpBlock.data("original-role") - : $helpBlock.attr("role") - ) - ); - - $controlGroup.data( - "original-classes", - ( - $controlGroup.data("original-clases") - ? $controlGroup.data("original-classes") - : $controlGroup.attr("class") - ) - ); - - $this.data( - "original-aria-invalid", - ( - $this.data("original-aria-invalid") - ? $this.data("original-aria-invalid") - : $this.attr("aria-invalid") - ) - ); - - // ============================================================= - // VALIDATION - // ============================================================= - - $this.bind( - "validation.validation", - function (event, params) { - - var value = getValue($this); - - // Get a list of the errors to apply - var errorsFound = []; - - $.each(validators, function (validatorType, validatorTypeArray) { - if (value || value.length || (params && params.includeEmpty) || (!!settings.validatorTypes[validatorType].blockSubmit && params && !!params.submitting)) { - $.each(validatorTypeArray, function (i, validator) { - if (settings.validatorTypes[validatorType].validate($this, value, validator)) { - errorsFound.push(validator.message); - } - }); - } - }); - - return errorsFound; - } - ); - - $this.bind( - "getValidators.validation", - function () { - return validators; - } - ); - - // ============================================================= - // WATCH FOR CHANGES - // ============================================================= - $this.bind( - "submit.validation", - function () { - return $this.triggerHandler("change.validation", {submitting: true}); - } - ); - $this.bind( - [ - "keyup", - "focus", - "blur", - "click", - "keydown", - "keypress", - "change" - ].join(".validation ") + ".validation", - function (e, params) { - - var value = getValue($this); - - var errorsFound = []; - - $controlGroup.find("input,textarea,select").each(function (i, el) { - var oldCount = errorsFound.length; - $.each($(el).triggerHandler("validation.validation", params), function (j, message) { - errorsFound.push(message); - }); - if (errorsFound.length > oldCount) { - $(el).attr("aria-invalid", "true"); - } else { - var original = $this.data("original-aria-invalid"); - $(el).attr("aria-invalid", (original !== undefined ? original : false)); - } - }); - - $form.find("input,select,textarea").not($this).not("[name=\"" + $this.attr("name") + "\"]").trigger("validationLostFocus.validation"); - - errorsFound = $.unique(errorsFound.sort()); - - // Were there any errors? - if (errorsFound.length) { - // Better flag it up as a warning. - $controlGroup.removeClass("success error").addClass("warning"); - - // How many errors did we find? - if (settings.options.semanticallyStrict && errorsFound.length === 1) { - // Only one? Being strict? Just output it. - $helpBlock.html(errorsFound[0] + - ( settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : "" )); - } else { - // Multiple? Being sloppy? Glue them together into an UL. - $helpBlock.html("
    • " + errorsFound.join("
    • ") + "
    " + - ( settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : "" )); - } - } else { - $controlGroup.removeClass("warning error success"); - if (value.length > 0) { - $controlGroup.addClass("success"); - } - $helpBlock.html($helpBlock.data("original-contents")); - } - - if (e.type === "blur") { - $controlGroup.removeClass("success"); - } - } - ); - $this.bind("validationLostFocus.validation", function () { - $controlGroup.removeClass("success"); - }); - }); - }, - destroy : function( ) { - - return this.each( - function() { - - var - $this = $(this), - $controlGroup = $this.parents(".control-group").first(), - $helpBlock = $controlGroup.find(".help-block").first(); - - // remove our events - $this.unbind('.validation'); // events are namespaced. - // reset help text - $helpBlock.html($helpBlock.data("original-contents")); - // reset classes - $controlGroup.attr("class", $controlGroup.data("original-classes")); - // reset aria - $this.attr("aria-invalid", $this.data("original-aria-invalid")); - // reset role - $helpBlock.attr("role", $this.data("original-role")); - // remove all elements we created - if (createdElements.indexOf($helpBlock[0]) > -1) { - $helpBlock.remove(); - } - - } - ); - - }, - collectErrors : function(includeEmpty) { - - var errorMessages = {}; - this.each(function (i, el) { - var $el = $(el); - var name = $el.attr("name"); - var errors = $el.triggerHandler("validation.validation", {includeEmpty: true}); - errorMessages[name] = $.extend(true, errors, errorMessages[name]); - }); - - $.each(errorMessages, function (i, el) { - if (el.length === 0) { - delete errorMessages[i]; - } - }); - - return errorMessages; - - }, - hasErrors: function() { - - var errorMessages = []; - - this.each(function (i, el) { - errorMessages = errorMessages.concat( - $(el).triggerHandler("getValidators.validation") ? $(el).triggerHandler("validation.validation", {submitting: true}) : [] - ); - }); - - return (errorMessages.length > 0); - }, - override : function (newDefaults) { - defaults = $.extend(true, defaults, newDefaults); - } - }, - validatorTypes: { - callback: { - name: "callback", - init: function ($this, name) { - return { - validatorName: name, - callback: $this.data("validation" + name + "Callback"), - lastValue: $this.val(), - lastValid: true, - lastFinished: true - }; - }, - validate: function ($this, value, validator) { - if (validator.lastValue === value && validator.lastFinished) { - return !validator.lastValid; - } - - if (validator.lastFinished === true) - { - validator.lastValue = value; - validator.lastValid = true; - validator.lastFinished = false; - - var rrjqbvValidator = validator; - var rrjqbvThis = $this; - executeFunctionByName( - validator.callback, - window, - $this, - value, - function (data) { - if (rrjqbvValidator.lastValue === data.value) { - rrjqbvValidator.lastValid = data.valid; - if (data.message) { - rrjqbvValidator.message = data.message; - } - rrjqbvValidator.lastFinished = true; - rrjqbvThis.data("validation" + rrjqbvValidator.validatorName + "Message", rrjqbvValidator.message); - // Timeout is set to avoid problems with the events being considered 'already fired' - setTimeout(function () { - rrjqbvThis.trigger("change.validation"); - }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst - } - } - ); - } - - return false; - - } - }, - ajax: { - name: "ajax", - init: function ($this, name) { - return { - validatorName: name, - url: $this.data("validation" + name + "Ajax"), - lastValue: $this.val(), - lastValid: true, - lastFinished: true - }; - }, - validate: function ($this, value, validator) { - if (""+validator.lastValue === ""+value && validator.lastFinished === true) { - return validator.lastValid === false; - } - - if (validator.lastFinished === true) - { - validator.lastValue = value; - validator.lastValid = true; - validator.lastFinished = false; - $.ajax({ - url: validator.url, - data: "value=" + value + "&field=" + $this.attr("name"), - dataType: "json", - success: function (data) { - if (""+validator.lastValue === ""+data.value) { - validator.lastValid = !!(data.valid); - if (data.message) { - validator.message = data.message; - } - validator.lastFinished = true; - $this.data("validation" + validator.validatorName + "Message", validator.message); - // Timeout is set to avoid problems with the events being considered 'already fired' - setTimeout(function () { - $this.trigger("change.validation"); - }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst - } - }, - failure: function () { - validator.lastValid = true; - validator.message = "ajax call failed"; - validator.lastFinished = true; - $this.data("validation" + validator.validatorName + "Message", validator.message); - // Timeout is set to avoid problems with the events being considered 'already fired' - setTimeout(function () { - $this.trigger("change.validation"); - }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst - } - }); - } - - return false; - - } - }, - regex: { - name: "regex", - init: function ($this, name) { - return {regex: regexFromString($this.data("validation" + name + "Regex"))}; - }, - validate: function ($this, value, validator) { - return (!validator.regex.test(value) && ! validator.negative) - || (validator.regex.test(value) && validator.negative); - } - }, - required: { - name: "required", - init: function ($this, name) { - return {}; - }, - validate: function ($this, value, validator) { - return !!(value.length === 0 && ! validator.negative) - || !!(value.length > 0 && validator.negative); - }, - blockSubmit: true - }, - match: { - name: "match", - init: function ($this, name) { - var element = $this.parents("form").first().find("[name=\"" + $this.data("validation" + name + "Match") + "\"]").first(); - element.bind("validation.validation", function () { - $this.trigger("change.validation", {submitting: true}); - }); - return {"element": element}; - }, - validate: function ($this, value, validator) { - return (value !== validator.element.val() && ! validator.negative) - || (value === validator.element.val() && validator.negative); - }, - blockSubmit: true - }, - max: { - name: "max", - init: function ($this, name) { - return {max: $this.data("validation" + name + "Max")}; - }, - validate: function ($this, value, validator) { - return (parseFloat(value, 10) > parseFloat(validator.max, 10) && ! validator.negative) - || (parseFloat(value, 10) <= parseFloat(validator.max, 10) && validator.negative); - } - }, - min: { - name: "min", - init: function ($this, name) { - return {min: $this.data("validation" + name + "Min")}; - }, - validate: function ($this, value, validator) { - return (parseFloat(value) < parseFloat(validator.min) && ! validator.negative) - || (parseFloat(value) >= parseFloat(validator.min) && validator.negative); - } - }, - maxlength: { - name: "maxlength", - init: function ($this, name) { - return {maxlength: $this.data("validation" + name + "Maxlength")}; - }, - validate: function ($this, value, validator) { - return ((value.length > validator.maxlength) && ! validator.negative) - || ((value.length <= validator.maxlength) && validator.negative); - } - }, - minlength: { - name: "minlength", - init: function ($this, name) { - return {minlength: $this.data("validation" + name + "Minlength")}; - }, - validate: function ($this, value, validator) { - return ((value.length < validator.minlength) && ! validator.negative) - || ((value.length >= validator.minlength) && validator.negative); - } - }, - maxchecked: { - name: "maxchecked", - init: function ($this, name) { - var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]"); - elements.bind("click.validation", function () { - $this.trigger("change.validation", {includeEmpty: true}); - }); - return {maxchecked: $this.data("validation" + name + "Maxchecked"), elements: elements}; - }, - validate: function ($this, value, validator) { - return (validator.elements.filter(":checked").length > validator.maxchecked && ! validator.negative) - || (validator.elements.filter(":checked").length <= validator.maxchecked && validator.negative); - }, - blockSubmit: true - }, - minchecked: { - name: "minchecked", - init: function ($this, name) { - var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]"); - elements.bind("click.validation", function () { - $this.trigger("change.validation", {includeEmpty: true}); - }); - return {minchecked: $this.data("validation" + name + "Minchecked"), elements: elements}; - }, - validate: function ($this, value, validator) { - return (validator.elements.filter(":checked").length < validator.minchecked && ! validator.negative) - || (validator.elements.filter(":checked").length >= validator.minchecked && validator.negative); - }, - blockSubmit: true - } - }, - builtInValidators: { - email: { - name: "Email", - type: "shortcut", - shortcut: "validemail" - }, - validemail: { - name: "Validemail", - type: "regex", - regex: "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\.[A-Za-z]{2,4}", - message: "Not a valid email address" - }, - passwordagain: { - name: "Passwordagain", - type: "match", - match: "password", - message: "Does not match the given password" - }, - positive: { - name: "Positive", - type: "shortcut", - shortcut: "number,positivenumber" - }, - negative: { - name: "Negative", - type: "shortcut", - shortcut: "number,negativenumber" - }, - number: { - name: "Number", - type: "regex", - regex: "([+-]?\\\d+(\\\.\\\d*)?([eE][+-]?[0-9]+)?)?", - message: "Must be a number" - }, - integer: { - name: "Integer", - type: "regex", - regex: "[+-]?\\\d+", - message: "No decimal places allowed" - }, - positivenumber: { - name: "Positivenumber", - type: "min", - min: 0, - message: "Must be a positive number" - }, - negativenumber: { - name: "Negativenumber", - type: "max", - max: 0, - message: "Must be a negative number" - }, - required: { - name: "Required", - type: "required", - message: "This is required" - }, - checkone: { - name: "Checkone", - type: "minchecked", - minchecked: 1, - message: "Check at least one option" - } - } - }; - - var formatValidatorName = function (name) { - return name - .toLowerCase() - .replace( - /(^|\s)([a-z])/g , - function(m,p1,p2) { - return p1+p2.toUpperCase(); - } - ) - ; - }; - - var getValue = function ($this) { - // Extract the value we're talking about - var value = $this.val(); - var type = $this.attr("type"); - if (type === "checkbox") { - value = ($this.is(":checked") ? value : ""); - } - if (type === "radio") { - value = ($('input[name="' + $this.attr("name") + '"]:checked').length > 0 ? value : ""); - } - return value; - }; - - function regexFromString(inputstring) { - return new RegExp("^" + inputstring + "$"); - } - - /** - * Thanks to Jason Bunting via StackOverflow.com - * - * http://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string#answer-359910 - * Short link: http://tinyurl.com/executeFunctionByName - **/ - function executeFunctionByName(functionName, context /*, args*/) { - var args = Array.prototype.slice.call(arguments).splice(2); - var namespaces = functionName.split("."); - var func = namespaces.pop(); - for(var i = 0; i < namespaces.length; i++) { - context = context[namespaces[i]]; - } - return context[func].apply(this, args); - } - - $.fn.jqBootstrapValidation = function( method ) { - - if ( defaults.methods[method] ) { - return defaults.methods[method].apply( this, Array.prototype.slice.call( arguments, 1 )); - } else if ( typeof method === 'object' || ! method ) { - return defaults.methods.init.apply( this, arguments ); - } else { - $.error( 'Method ' + method + ' does not exist on jQuery.jqBootstrapValidation' ); - return null; - } - - }; - - $.jqBootstrapValidation = function (options) { - $(":input").not("[type=image],[type=submit]").jqBootstrapValidation.apply(this,arguments); - }; - -})( jQuery ); diff --git a/roc-iui/src/main/resources/webroot/roc-vim/js/vim-validate.js b/roc-iui/src/main/resources/webroot/roc-vim/js/vim-validate.js deleted file mode 100644 index 1f797f0c..00000000 --- a/roc-iui/src/main/resources/webroot/roc-vim/js/vim-validate.js +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * Created by 10184303 on 15-11-17. - */ -var form = $('#vim_form'); -var error = $('.alert-danger', form); -var success = $('.alert-success', form); -form.validate({ - doNotHideMessage: true, //this option enables to show the error/success messages on tab switch. - errorElement: 'span', //default input error message container - errorClass: 'help-block', // default input error message class - focusInvalid: false, // do not focus the last invalid input - rules: { - url: { - required: true, - url:true, - maxlength:50 - //,repeatedName: true - }, - vimName:{ - required: true - }, - userName:{ - required: true, - maxlength:20 - }, - password:{ - required: true, - maxlength:20 - }, - tenant:{ - required: true, - maxlength:20 - } - }, - messages: { - url: { - //required: $.i18n.prop('com_zte_ums_zenic_topology_connectmanager_enter_name') - required: $.i18n.prop('com_zte_ums_eco_roc_vim_auth_url_require_message'), - url: $.i18n.prop('com_zte_ums_eco_roc_vim_auth_url_alarm_message') - }, - vimName:{ - required: $.i18n.prop('com_zte_ums_eco_roc_vim_name_alarm_message') - }, - userName:{ - required: $.i18n.prop('com_zte_ums_eco_roc_vim_username_alarm_message') - }, - password:{ - required: $.i18n.prop('com_zte_ums_eco_roc_vim_password_alarm_message') - }, - tenant:{ - required: $.i18n.prop('com_zte_ums_eco_roc_vim_tenant_alarm_message') - } - }, - errorPlacement: function (error, element) { // render error placement for each input type - error.insertAfter(element); // for other inputs, just perform default behavior - }, - - invalidHandler: function (event, validator) { //display error alert on form submit - success.hide(); - error.show(); - //ZteFrameWork.scrollTo(error, -200); - }, - - highlight: function (element) { // hightlight error inputs - $(element) - .closest('.form-group').removeClass('has-success').addClass('has-error'); // set error class to the control group - }, - - unhighlight: function (element) { // revert the change done by hightlight - $(element) - .closest('.form-group').removeClass('has-error'); // set error class to the control group - }, - - success: function (label) { - label - .addClass('valid') // mark the current input as valid and display OK icon - .closest('.form-group').removeClass('has-error'); // set success class to the control group - }, - - submitHandler: function (form) { - success.show(); - error.hide(); - //add here some ajax code to submit your form or just call form.submit() if you want to submit the form without ajax - } - -}); diff --git a/roc-iui/src/main/resources/webroot/roc-vim/js/vimChart.js b/roc-iui/src/main/resources/webroot/roc-vim/js/vimChart.js deleted file mode 100644 index 259f83df..00000000 --- a/roc-iui/src/main/resources/webroot/roc-vim/js/vimChart.js +++ /dev/null @@ -1,383 +0,0 @@ -/* - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -var vimChart = {}; - - - - var labelTop = { - normal : { - label : { - show : true, - position : 'outer', - formatter :function (params){ - var total=params.series.data[1].value+params.series.data[0].value; - var util=params.series.data[0].util; - // return total+util+"中的"+"\n"+params.value+util+"已使用" ; - return $.i18n.prop('com_zte_ums_eco_roc_vim_resource_chart_used')+params.value+util+"\n"+ - $.i18n.prop('com_zte_ums_eco_roc_vim_resource_chart_total')+ total+util; - }, - textStyle: { - baseline : 'bottom', - fontWeight:'normal' - - } - }, - labelLine : { - show : true - } - } -}; - - -var labelFromatter = { - normal : { - label : { - formatter :function (params){ - return params.series.data[0].name+"\n"+(100-params.percent).toFixed(0) + '%' - }, - textStyle: { - baseline : 'center', - color:"#000", - fontWeight:'bold' - - - } - } - } -} -var labelBottom = { - normal : { - color: '#ccc', - label : { - show : true, - position : 'center' - }, - labelLine : { - show : false - } - }, - emphasis: { - color: 'rgba(0,0,0,0)' - } -}; - -var radius = [40, 55]; - - var vimPieChart; - -vimChart.vimPieChartInit = function(){ - vimPieChart = echarts.init(document.getElementById('vimPieChartDiv')); - vimPieChart.showLoading({ - text : "Loading", - effect :"whirling", - textStyle : { - fontSize : 20 - } -}); - -} - -vimChart.vimPieChart = function(data){ - -var option = { - animation:true, - legend: { - x : 'left', - y:"top", - data:[ - $.i18n.prop('com_zte_ums_eco_roc_vim_resource_vim_cpu'), - $.i18n.prop('com_zte_ums_eco_roc_vim_resource_vim_memory'), - $.i18n.prop('com_zte_ums_eco_roc_vim_resource_vim_disk') - ], - orient: 'vertical' - }, - color:["#578ebe","#44b6ae","#DABA36"], - title : { - text: '', - subtext: '', - x: 'center' - }, - toolbox: { - show : true, - - feature : { - saveAsImage : { - show : true, - title : $.i18n.prop('com_zte_ums_eco_roc_vim_resource_chart_save_picture'), - type : 'png', - lang : [$.i18n.prop('com_zte_ums_eco_roc_vim_resource_chart_click_save')] - } - } - }, - series : [ - { - type : 'pie', - center : ['15%', '55%'], - radius : radius, - itemStyle : labelFromatter, - data : [ - {name:$.i18n.prop('com_zte_ums_eco_roc_vim_resource_vim_cpu'), value:data.usage.cpu,itemStyle : labelTop,util:''}, - {name:'other', value:data.resource.cpu -data.usage.cpu, itemStyle : labelBottom} - - ] - }, - { - type : 'pie', - center : ['40%', '55%'], - radius : radius, - itemStyle : labelFromatter, - data : [ - {name:$.i18n.prop('com_zte_ums_eco_roc_vim_resource_vim_memory'), value:data.usage.memoryMb,itemStyle : labelTop,util:'MB' }, - {name:'other', value:data.resource.memoryMb - data.usage.memoryMb,itemStyle : labelBottom} - - ] - }, - { - type : 'pie', - center : ['65%', '55%'], - radius : radius, - itemStyle : labelFromatter, - data : [ - {name:$.i18n.prop('com_zte_ums_eco_roc_vim_resource_vim_disk'), value:data.usage.diskGb,itemStyle : labelTop,util:'GB'}, - {name:'other', value:data.resource.diskGb -data.usage.diskGb, itemStyle : labelBottom} - - ] - } - - ] -}; - - - // 为echarts对象加载数据 - vimPieChart.hideLoading(); - vimPieChart.setOption(option); - window.onresize = vimPieChart.resize; - - -} - -vimChart.getPieCenter=function(n){ - var center; - switch(n) - { - case 1: - center=['15%', '30%']; - break; - case 2: - center=['40%', '30%']; - break; - case 3: - center=['65%', '30%']; - break; - case 4: - center=['15%', '80%']; - break; - case 5: - center=['40%', '80%']; - break; - case 6: - center=['65%', '80%']; - break; - case 7: - center=['90%', '80%']; - break; - - } - return center; -} - - - var tenantPieChart; -vimChart.tenantPieChartInit = function(){ - tenantPieChart= echarts.init(document.getElementById('tenantPieChartDiv')); - - tenantPieChart.showLoading({ - text : "Loading", - effect :"whirling", - textStyle : { - fontSize : 20 - } -}); -} -vimChart.tenantPieChart = function(data){ - -var legend_data=new Array(); -var series=new Array(); -var n=0; - -if(data.quota.instances!=-1){ - n++; - -legend_data.push($.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_instances')); -var instances_series={ - type : 'pie', - center : vimChart.getPieCenter(n), - radius : radius, - itemStyle : labelFromatter, - data : [ - {name:$.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_instances'), value:data.usage.instances,itemStyle : labelTop,util:''}, - {name:'other', value:data.quota.instances -data.usage.instances, itemStyle : labelBottom} - - ] - }; - series.push(instances_series); - -} -if(data.quota.cpu!=-1){ -n++; -legend_data.push($.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_cpu')); -var cpu_series={ - type : 'pie', - center : vimChart.getPieCenter(n), - radius : radius, - itemStyle : labelFromatter, - data : [ - {name:$.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_cpu'), value:data.usage.cpu,itemStyle : labelTop,util:'' }, - {name:'other', value:data.quota.cpu -data.usage.cpu,itemStyle : labelBottom} - - ] - }; - series.push(cpu_series); -} -if(data.quota.memoryMb!=-1){ - n++; -legend_data.push($.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_memoryMb')); -var memoryMb_series={ - type : 'pie', - center : vimChart.getPieCenter(n), - radius : radius, - itemStyle : labelFromatter, - data : [ - {name:$.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_memoryMb'), value:data.usage.memoryMb,itemStyle : labelTop,util:'MB'}, - {name:'other', value:data.quota.memoryMb -data.usage.memoryMb, itemStyle : labelBottom} - - ] - }; - series.push(memoryMb_series); -} -if(data.quota.floatingIps!=-1){ - n++; -legend_data.push($.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_floatingIps')); -var floatingIps_series={ - type : 'pie', - center :vimChart.getPieCenter(n), - radius : radius, - itemStyle : labelFromatter, - data : [ - {name:$.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_floatingIps'), value:data.usage.floatingIps,itemStyle : labelTop,util:''}, - {name:'other', value:data.quota.floatingIps -data.usage.floatingIps, itemStyle : labelBottom} - - ] - }; - series.push(floatingIps_series); -} -if(data.quota.securityGroups!=-1){ - n++; -legend_data.push($.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_securityGroups')); -var securityGroups_series={ - type : 'pie', - center :vimChart.getPieCenter(n), - radius : radius, - itemStyle : labelFromatter, - data : [ - {name:$.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_securityGroups'), value:data.usage.securityGroups,itemStyle : labelTop,util:''}, - {name:'other', value:data.quota.securityGroups -data.usage.securityGroups, itemStyle : labelBottom} - - ] - }; - series.push(securityGroups_series); -} -if(data.quota.volumes!=-1){ - n++; -legend_data.push($.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_volumes')); -var volumes_series={ - type : 'pie', - center :vimChart.getPieCenter(n), - radius : radius, - itemStyle : labelFromatter, - data : [ - {name:$.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_volumes'), value:data.usage.volumes,itemStyle : labelTop,util:''}, - {name:'other', value:data.quota.volumes -data.usage.volumes, itemStyle : labelBottom} - - ] - }; - series.push(volumes_series); -} -if(data.quota.volumeStorage!=-1){ - n++; -legend_data.push($.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_volumeStorage')); -var volumeStorage_series={ - type : 'pie', - center :vimChart.getPieCenter(n), - radius : radius, - itemStyle : labelFromatter, - data : [ - {name:$.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_volumeStorage'), value:data.usage.volumeStorage,itemStyle : labelTop,util:'GB'}, - {name:'other', value:data.quota.volumeStorage -data.usage.volumeStorage, itemStyle : labelBottom} - - ] - }; - series.push(volumeStorage_series); -} - - -var option = { - animation:true, - legend: { - x : 'left', - y:"top", - data:legend_data, - orient: 'vertical' - }, - color:["#578ebe","#44b6ae","#DABA36","#F79695","#9699e0","#57b5e3","#48c79c"], - title : { - text: '', - subtext: '', - x: 'center' - }, - toolbox: { - show : true, - feature : { - saveAsImage : { - show : true, - title : $.i18n.prop('com_zte_ums_eco_roc_vim_resource_chart_save_picture'), - type : 'png', - lang : [$.i18n.prop('com_zte_ums_eco_roc_vim_resource_chart_click_save')] - } - } - }, - series : series -}; - - - // 为echarts对象加载数据 - tenantPieChart.hideLoading(); - tenantPieChart.setOption(option); - window.onresize = tenantPieChart.resize; - - -} - -vimChart.growl=function(message,type){ - $.growl({ - icon: "fa fa-envelope-o fa-lg", - title: "  " + $.i18n.prop('com_zte_ums_eco_roc_vim_title_notice'), - message: message+"        " - },{ - type: type, - delay:0 - }); -} \ No newline at end of file diff --git a/roc-iui/src/main/resources/webroot/roc-vim/js/vimChartController.js b/roc-iui/src/main/resources/webroot/roc-vim/js/vimChartController.js deleted file mode 100644 index 1e9126b9..00000000 --- a/roc-iui/src/main/resources/webroot/roc-vim/js/vimChartController.js +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -var vm = avalon - .define({ - $id : "vimChartController", - $vimChartUrl : '../../api/vim/v1/{vim_id}/resource', - $tenantChartUrl : '../../api/vim/v1/{vim_id}/resource/{tenant_name}', - $tenantListUrl : '../../api/vim/v1/{vim_id}/tenants', - $tenantRoleUrl : '../../api/vim/v1/{vim_id}/roles', - vimInfo:{ - name:name, - id:id, - tenant:tenant, - isAdmin:true - }, - tenantSelectList: { - condName : $.i18n.prop("com_zte_ums_eco_roc_vim_type"), - component_type : 'select', - selectItems : [] - }, - initChart : function() { - - //判断租户是否有admin权限 - var tenantRoleUrl=vm.$tenantRoleUrl.replace("{vim_id}",vm.vimInfo.id); - $.ajax({ - "type": 'get', - "url": tenantRoleUrl, - "dataType": "json", - success: function (resp) { - vm.vimInfo.isAdmin= (resp==null)?false:resp.isAdminRole; - - }, - error: function(XMLHttpRequest, textStatus, errorThrown) { - vimChart.growl("get [tenant Role] is error :"+textStatus+":"+errorThrown,"danger"); - }, - complete: function() { - if(vm.vimInfo.isAdmin==true){ - - //获取全部资源使用情况 - vm.vimChartLoad(); - - //获取租户列表 - vm.vimListLoad(); - } - - } - }); - //获取租户资源使用情况 - vm.tenantChartLoad(); - }, - gotoVimPage:function(){ - window.parent.ZteFrameWork.goToURLByIDAndNewAction('eco_roc_vimmgr'); - }, - vimListLoad:function(){ - var tenantListUrl=vm.$tenantListUrl.replace("{vim_id}",vm.vimInfo.id); - $.ajax({ - "type": 'get', - "url": tenantListUrl, - "dataType": "json", - success: function (resp) { - vm.tenantSelectList.selectItems= (resp==null)?[]:resp; - }, - error: function(XMLHttpRequest, textStatus, errorThrown) { - vimChart.growl("get [tenant List] is error :"+textStatus+":"+errorThrown,"danger"); - } - }); - }, - vimChartLoad:function(){ - var viminitData={ - "resource": { - "cpu": 0, - "memoryMb": 503, - "diskGb": 9.8 - }, - "usage": { - "cpu": 0, - "memoryMb": 0, - "diskGb": 0 - } - } - - vimChart.vimPieChartInit(); - - var vimChartUrl=vm.$vimChartUrl.replace("{vim_id}",vm.vimInfo.id); - - - - $.ajax({ - "type": 'get', - "url": vimChartUrl, - "dataType": "json", - success: function (resp) { - var vimData= (resp==null)?viminitData:resp; - vimChart.vimPieChart(vimData); - }, - error: function(XMLHttpRequest, textStatus, errorThrown) { - vimChart.growl("get [virtual machine manager resource using status] is error :"+textStatus+":"+errorThrown,"danger"); - } - }); - - }, - tenantChartLoad:function(){ - var tenantChartUrl=vm.$tenantChartUrl.replace("{vim_id}",vm.vimInfo.id).replace("{tenant_name}",vm.vimInfo.tenant); - - var tenantinitData={ - "tenant_name": "", - "errormsg":"", - "quota": { - "cpu": 0, - "memoryMb": 0, - "instances": 0, - "floatingIps": 0, - "securityGroups": 0, - "volumeStorage": 0, - "volumes": 0 - }, - "usage": { - "cpu": 0, - "memoryMb": 0, - "instances": 0, - "floatingIps": 0, - "securityGroups": 0, - "volumeStorage": 0, - "volumes": 0 - } - }; - vimChart.tenantPieChartInit(); - $.ajax({ - "type": 'get', - "url": tenantChartUrl, - "dataType": "json", - success: function (resp) { - var tenantData= (resp==null)?tenantinitData:resp; - if(tenantData.errormsg!=null) - { - vimChart.growl(tenantData.errormsg,"danger"); - } - vimChart.tenantPieChart(tenantData); - }, - error: function(XMLHttpRequest, textStatus, errorThrown) { - vimChart.growl("get [tenant quota using status] occur error :"+textStatus+":"+errorThrown,"danger"); - } - }); - - } - -}); -avalon.scan(); -vm.initChart(); \ No newline at end of file diff --git a/roc-iui/src/main/resources/webroot/roc-vim/js/vimController.js b/roc-iui/src/main/resources/webroot/roc-vim/js/vimController.js deleted file mode 100644 index 6b2f0fb8..00000000 --- a/roc-iui/src/main/resources/webroot/roc-vim/js/vimController.js +++ /dev/null @@ -1,315 +0,0 @@ -/* - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -var vm = avalon - .define({ - $id : "vimController", - vimInfo : [], - vimStatusTime:$.i18n.prop('com_zte_ums_eco_roc_vim_getting_info'), - ifSearch : 0, - server_rtn:{ - info_block:false, - warning_block:false, - rtn_info:"", - $RTN_SUCCESS:"RTN_SUCCESS", - $RTN_FAILED:"RTN_FAILED", - wait : $.i18n.prop('com_zte_ums_eco_roc_vim_checking_status') - }, - executeWait : {clazz : 'alert-info', visible : true, text : $.i18n.prop('com_zte_ums_eco_roc_vim_checking_status')}, - executeError : {clazz : 'alert-danger', visible : true, text : 'error'}, - $Status :{ - success:"active", - failed:"inactive", - displayActive: $.i18n.prop('com_zte_ums_eco_roc_vim_normal'), - displayInactive: $.i18n.prop('com_zte_ums_eco_roc_vim_abnormal') - }, - isSave : true, - action : {ADD : 'add', UPDATE : 'update'}, - $queryVimInfoUrl : '../../api/roc/v1/resource/vims', - $addVimInfoUrl : '../../api/vim/v1/', - $updateVimInfoUrl : '../../api/roc/v1/resource/vims/', - $delVimInfoUrl : '../../api/vim/v1/{vim_id}', - $initTable : function() { - $.ajax({ - "type": 'get', - "url": vm.$queryVimInfoUrl, - "dataType": "json", - "success": function (resp) { - if(resp.operationResult=="SUCCESS") - { - vm.vimInfo = (resp==null)?[]:resp.data; - for(var i = 0; i < vm.vimInfo.length; i ++){ - var vimInstance = vm.vimInfo[i]; - var checkTime = vimInstance.checkTime; - if("" != checkTime){ - vm.vimStatusTime = checkTime; - break; - } - } - } - else{ - vm.vimInfo=[]; - bootbox.alert($.i18n.prop("com_zte_ums_eco_roc_vim_growl_msg_query_failed")); - return; - } - }, - error: function(XMLHttpRequest, textStatus, errorThrown) { - bootbox.alert($.i18n.prop("com_zte_ums_eco_roc_vim_growl_msg_query_failed") + textStatus+":"+errorThrown); - return; - }, - complete: function() { - resUtil.tooltipVimStatus(); - } - }); - - }, - $vimType: { - condName : $.i18n.prop("com_zte_ums_eco_roc_vim_type"), - component_type : 'select', - selectItems : [ - { - cond_value : 'TECS', - name : "TECS", - value : true - }, - { - cond_value : 'openstack', - name :"openstack", - value : true - } - ] - }, - addVim : { - titleName: $.i18n.prop("com_zte_ums_eco_roc_vim_register_info"), - vimId : "", - vimName : "", - hostName : '', - userName : "", - tenant : "", - password : "", - ipAddress : '', - url : "", - saveType :"add", - status : "", - vimMoc :"nfv.vim.opencos", - vimType :"TECS", - vendor :"" - }, - $showVimTable : function(el, action) { - vm.isSave = false; - if(vm.action.ADD == action){ - vm.addVim.vimId = ""; - vm.addVim.vimName = ""; - vm.addVim.userName = ""; - vm.addVim.password = ""; - vm.addVim.url = ""; - vm.addVim.tenant = ""; - vm.addVim.vendor = ""; - vm.addVim.saveType = "add"; - vm.addVim.vimType = "TECS"; - vm.addVim.titleName = $.i18n.prop("com_zte_ums_eco_roc_vim_register_info"); - - } else { - vm.addVim.vimId = el.oid; - vm.addVim.vimName = el.name; - vm.addVim.url = el.url; - vm.addVim.userName = el.userName; - vm.addVim.password = el.password; - vm.addVim.tenant = el.user; - vm.addVim.saveType = "update"; - vm.addVim.titleName = $.i18n.prop('com_zte_ums_eco_roc_vim_modify_info'); - vm.addVim.vimType = el.type; - vm.addVim.vendor = el.vendor; - } - vm.executeError.visible=false; - vm.executeWait.visible=false; - $(".form-group").each(function () { - $(this).removeClass('has-success'); - $(this).removeClass('has-error'); - $(this).find(".help-block[id]").remove(); - }); - $("#addVimDlg").modal("show"); - }, - - $saveVimTable : function() { - vm.isSave = true; - success.hide(); - error.hide(); - if (form.valid() == false) { - vm.isSave = false; - return false; - } - vm.executeWait.visible = true; - vm.executeError.visible = false; - if(vm.addVim.saveType=="add") { - //不能重复添加 - /* - for( var i = 0; i < vm.vimInfo.length; i ++ ){ - if(vm.addVim.url == vm.vimInfo[i].url){ - resUtil.growl($.i18n.prop("com_zte_ums_eco_roc_vim_growl_msg_title") + 'already exists',"info"); - $('#addVimDlg').modal('hide'); - return; - } - } - */ - if('TECS' == vm.addVim.vimType){ - vm.addVim.vimMoc = 'nfv.vim.opencos'; - var url = vm.addVim.url; - var from = url.indexOf('//') + 2; - var to = url.lastIndexOf(':'); - vm.addVim.ipAddress = url.substring( from, to ); - } else if('openstack' == vm.addVim.vimType){ - vm.addVim.vimMoc = 'nfv.vim.openstack'; - } - vm.persistVim(); - } else if( vm.addVim.saveType == "update" ){ - vm.updateVim(); - } - }, - //新增vim - persistVim : function(){ - $.ajax({ - type : "Post", - url : vm.$addVimInfoUrl, - data : JSON.stringify({ - vimName : vm.addVim.vimName, - tenant :vm.addVim.tenant, - vimType : vm.addVim.vimType, - hostName: "", - ipAddress: vm.addVim.ipAddress, - url : vm.addVim.url, - userName : vm.addVim.userName, - password : vm.addVim.password, - vimMoc:vm.addVim.vimMoc, - vendor: vm.addVim.vendor - }), - async : false, - dataType : "json", - contentType : 'application/json', - success : function(data) { - vm.executeWait.visible=false; - vm.executeError.visible=false; - if ( 0 == data.respCode ) { - vm.addVim.vimId = data.result.vimId; - vm.addVim.status = data.result.status; - vm.addVim.name = data.result.vimName; - vm.addVim.oid = data.result.vimId; - vm.addVim.user = data.result.tenant; - vm.addVim.type = data.result.vimType; - var newVim=jQuery.extend({}, vm.addVim); - vm.vimInfo.push(newVim); - - $('#addVimDlg').modal('hide'); - resUtil.growl($.i18n.prop("com_zte_ums_eco_roc_vim_growl_msg_title") + $.i18n.prop("com_zte_ums_eco_roc_vim_growl_msg_save_success"),"success"); - } else{ - vm.executeError.visible=true; - vm.executeError.text = $.i18n.prop("com_zte_ums_eco_roc_vim_growl_msg_save_failed"); - } - }, - error: function(XMLHttpRequest, textStatus, errorThrown) { - vm.executeError.visible = true; - vm.executeError.text = textStatus+":"+errorThrown; - vm.executeWait.visible = false; - vm.isSave = false; - } - }); - }, - //更新vim - updateVim : function(){ - $.ajax({ - type : "Put", - url : vm.$updateVimInfoUrl+vm.addVim.vimId, - contentType : 'application/json', - data : JSON.stringify({ - name : vm.addVim.vimName, - userName : vm.addVim.userName, - password : vm.addVim.password, - url : vm.addVim.url, - user:vm.addVim.tenant, - type : vm.addVim.vimType, - vendor : vm.addVim.vendor - }), - dataType : "json", - async : false, - success : function(data) { - vm.executeWait.visible=false; - vm.executeError.visible=false; - if (data.operationResult == "SUCCESS") { - for(var i=0;i - - - - - - - - - - - - - - - -
    -
    - -
    -
    - {{vimInfo.name}} -
    -
    - - -
    -
    -
    - -
    - -
    - -
    -
    - -
    -
    - -
    -
    - - - -
    -
    -
    - {{vimInfo.tenant}} -
    - - - -
    -
    - -
    - -
    - -
    - -
    - -
    - - -
    - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/roc-iui/src/main/resources/webroot/roc-vim/vimView.html b/roc-iui/src/main/resources/webroot/roc-vim/vimView.html deleted file mode 100644 index 86dd5814..00000000 --- a/roc-iui/src/main/resources/webroot/roc-vim/vimView.html +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -
    - - - -
    -
    - -
    -
    -
    - -
    -
    -
    - -
    -
    - - -
    -
    - -
    -
    -

    -
    - - -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/uiframe-iui/pom.xml b/uiframe-iui/pom.xml deleted file mode 100644 index 49457abd..00000000 --- a/uiframe-iui/pom.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - 4.0.0 - - org.openo.orchestrator.openoiui - openoiui-parent - 0.0.1-SNAPSHOT - - org.openo.orchestrator.openoiui - uiframe-iui - jar - openo/openoiui/uiframe-iui - Open-O UI framework - diff --git a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/Read Me.txt b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/Read Me.txt deleted file mode 100644 index e39b5440..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/Read Me.txt +++ /dev/null @@ -1,7 +0,0 @@ -Open *demo.html* to see a list of all the glyphs in your font along with their codes/ligatures. - -To use the generated font in desktop programs, you can install the TTF font. In order to copy the character associated with each icon, refer to the text box at the bottom right corner of each glyph in demo.html. The character inside this text box may be invisible; but it can still be copied. See this guide for more info: https://icomoon.io/#docs/local-fonts - -You won't need any of the files located under the *demo-files* directory when including the generated font in your own projects. - -You can import *selection.json* back to the IcoMoon app using the *Import Icons* button (or via Main Menu → Manage Projects) to retrieve your icon selection. diff --git a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo-files/demo.css b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo-files/demo.css deleted file mode 100644 index 98b7a55d..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo-files/demo.css +++ /dev/null @@ -1,152 +0,0 @@ -body { - padding: 0; - margin: 0; - font-family: sans-serif; - font-size: 1em; - line-height: 1.5; - color: #555; - background: #fff; -} -h1 { - font-size: 1.5em; - font-weight: normal; -} -small { - font-size: .66666667em; -} -a { - color: #e74c3c; - text-decoration: none; -} -a:hover, a:focus { - box-shadow: 0 1px #e74c3c; -} -.bshadow0, input { - box-shadow: inset 0 -2px #e7e7e7; -} -input:hover { - box-shadow: inset 0 -2px #ccc; -} -input, fieldset { - font-family: sans-serif; - font-size: 1em; - margin: 0; - padding: 0; - border: 0; -} -input { - color: inherit; - line-height: 1.5; - height: 1.5em; - padding: .25em 0; -} -input:focus { - outline: none; - box-shadow: inset 0 -2px #449fdb; -} -.glyph { - font-size: 16px; - width: 15em; - padding-bottom: 1em; - margin-right: 4em; - margin-bottom: 1em; - float: left; - overflow: hidden; -} -.liga { - width: 80%; - width: calc(100% - 2.5em); -} -.talign-right { - text-align: right; -} -.talign-center { - text-align: center; -} -.bgc1 { - background: #f1f1f1; -} -.fgc1 { - color: #999; -} -.fgc0 { - color: #000; -} -p { - margin-top: 1em; - margin-bottom: 1em; -} -.mvm { - margin-top: .75em; - margin-bottom: .75em; -} -.mtn { - margin-top: 0; -} -.mtl, .mal { - margin-top: 1.5em; -} -.mbl, .mal { - margin-bottom: 1.5em; -} -.mal, .mhl { - margin-left: 1.5em; - margin-right: 1.5em; -} -.mhmm { - margin-left: 1em; - margin-right: 1em; -} -.mls { - margin-left: .25em; -} -.ptl { - padding-top: 1.5em; -} -.pbs, .pvs { - padding-bottom: .25em; -} -.pvs, .pts { - padding-top: .25em; -} -.unit { - float: left; -} -.unitRight { - float: right; -} -.size1of2 { - width: 50%; -} -.size1of1 { - width: 100%; -} -.clearfix:before, .clearfix:after { - content: " "; - display: table; -} -.clearfix:after { - clear: both; -} -.hidden-true { - display: none; -} -.textbox0 { - width: 3em; - background: #f1f1f1; - padding: .25em .5em; - line-height: 1.5; - height: 1.5em; -} -#testDrive { - display: block; - padding-top: 24px; - line-height: 1.5; -} -.fs0 { - font-size: 16px; -} -.fs1 { - font-size: 16px; -} - diff --git a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo-files/demo.js b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo-files/demo.js deleted file mode 100644 index 52f25145..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo-files/demo.js +++ /dev/null @@ -1,30 +0,0 @@ -if (!('boxShadow' in document.body.style)) { - document.body.setAttribute('class', 'noBoxShadow'); -} - -document.body.addEventListener("click", function(e) { - var target = e.target; - if (target.tagName === "INPUT" && - target.getAttribute('class').indexOf('liga') === -1) { - target.select(); - } -}); - -(function() { - var fontSize = document.getElementById('fontSize'), - testDrive = document.getElementById('testDrive'), - testText = document.getElementById('testText'); - function updateTest() { - testDrive.innerHTML = testText.value || String.fromCharCode(160); - if (window.icomoonLiga) { - window.icomoonLiga(testDrive); - } - } - function updateSize() { - testDrive.style.fontSize = fontSize.value + 'px'; - } - fontSize.addEventListener('change', updateSize, false); - testText.addEventListener('input', updateTest, false); - testText.addEventListener('change', updateTest, false); - updateSize(); -}()); diff --git a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo.html b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo.html deleted file mode 100644 index a3cdefc9..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo.html +++ /dev/null @@ -1,5015 +0,0 @@ - - - - - IcoMoon Demo - - - - - -
    -

    Font Name: ZteIctIcons (Glyphs: 311)

    -
    -
    -

    Grid Size: Unknown

    -
    -
    - - - - ict-NFV -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-VNFM -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-VNF -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-VNFC -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-VIM -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-VDU -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-host -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-NS -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-uep-moc-uca-public -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-uep-topo-commongroup20x20 -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-vapel_chgpile -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-car -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-chgpile -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-chgposition -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-chgstation -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-common_dc -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-common_ncd -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-common_ncd_break -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-common_sc -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-networkTree -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-resourceType -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-tree-icon -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-uep-topo-group20x20 -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-uep-topo-root -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-uep-topo-virtual20x20 -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-common_ncd_stop -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-uep-moc-root -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-uep-topo-undefinedgroup20x20 -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-analysis -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-bindingRelationship -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-browsePolicy -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-businessManagment -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-cardData -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-dailyManagment -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-enterpriseCustomer -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-equipmentBlacklist -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-equipmentModel -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-examine -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-failureList -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-familyCustomer -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-fileTool -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-groupManagment -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-notice -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-policy -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-portal -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-recordQuery -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-resourceManagment -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-ruleManagment -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-sucessRate -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-terminalManagment -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-tools -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-track -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-userManagment -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-versionManagment -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-workOrder -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-save -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-Magnifier -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-zoomIn -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-zoomOut -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-delete -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-refresh -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-modify -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-new -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-cpu -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-memory -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-currentAlarm -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-noticeAlarm -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-historyAlarm -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-close -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-table -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-next -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-pre -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-roleset -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-role -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-user -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-empty -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-noticeFilter -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-alarmTurn -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-advice -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-clearAlarm -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-alarmBox -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-afreshDef -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-alarmFilter -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-manAnalysis -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-drill -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-gear -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-process -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-unacknownledge -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-acknownledge -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-Operation -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-cloud -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-computer -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-alarm -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-import -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-export -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-Admin -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-allSelected -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-angleRight -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-arrowLeft -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-arrowLeftAll -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-arrowRight -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-arrowRightAll -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-autoFind -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-back -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-ball -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-bell -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-blackList -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-breakLink -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-cancle -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-circle -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-closeTree -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-configmap -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-department -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-detail -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-displaySwitch -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-file -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-filter -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-find -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-folder -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-forceOut -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-fullScreen -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-Graphical -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-helpTip -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-hide -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-history -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-launchingTower -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-layout -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-legendhide -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-legendshow -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-link -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-lock -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-ltArrow -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-Maintain -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-maximize -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-Monitor -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-move -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-newShortcut -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-openTree -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-poNode -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-print -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-product -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-rbArrow -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-reduction -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-rename -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-select -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-selectAll -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-selectLeft -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-selectRight -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-show -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-shrink -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-start -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-stop -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-stretch -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-strikeOut -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-Synchronous -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-toRight -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-treefile -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-treeFolder -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-unlock -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-userCompare -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-userDispatch -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-xml -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-zoomOverView -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-zoomReset -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-firewall-hillstone -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-server-ubuntu -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-server-tru64 -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-sever-as400 -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-fileserver -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-sapccms -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-activedirectory -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-sliverstream -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-oracleas -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-server-freeBSD -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-exchange2007 -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-exchange2003 -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-dotnet -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-lenovo -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-router-alu7750 -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-nds -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-php -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-glassfish -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-telnet -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-dns -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-url -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-database-mysql -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-ping -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-ftp -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-rest -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-soap -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-server-macos -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-server-openbsd -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-server-debian -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-iis -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-mailserver -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-websphere -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-apache -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-jboss -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-a10bala -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-cluster-vcs -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-diskraid-hpeva -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-diskraid-zte -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-firewall-h3c -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-ibm-blade -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-secfox -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-segw -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-zteatca -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-zteips -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-sdn-controller -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-server-hpux -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-storage-ops -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-storage-sanswitch-brocade -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-bind -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-dns -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-ems -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-mediator -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-ntp -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-ota -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-tomcat -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-trend -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-tsm -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-weblogic -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-cluster -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-cluster-hacmp -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-cluster-nec -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-cluster-ns -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-cluster-sg -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-database -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-database-mssql -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-database-oracle -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-database-sybase -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-database-sybaseiq -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-diskraid-dellmd -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-diskraid-emc -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-diskraid-eternus -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-diskraid-fujitsu -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-diskraid-hds -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-diskraid-hpaio -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-diskraid-hpmsa -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-diskraid-ibm -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-diskraid-ibmsm -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-diskraid-macrosan -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-diskraid-netapp -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-diskraid-sun -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-firewall -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-firewall-checkpoint -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-firewall-cisco -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-firewall-cisco2 -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-firewall-juniper -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-firewall-neteye -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-firewall-zte -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-firewall-ztemf -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-firewall-zteutm -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-gather -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-ibp -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-ibp-ibp2000 -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-net -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-alteon -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-appdirector -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-atca-lb10 -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-cisco-ucs -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-dcs -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-delta -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-dp -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-e9000 -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-f5bigip -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-f5bigip2 -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-gbe2c -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-h3c -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-hpblc -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-imm -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-secsis -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-vc -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-ztepower -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-ztesgs -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-other-zxsdr-nt -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-router -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-router-cisco -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-router-juniper -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-router-zte -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-sdn-host -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-sdn-switch -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-server -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-server-aix -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-server-klinux -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-server-redhat -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-server-solaris -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-server-suse -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-server-windows -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-server-zxve -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-storage -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-storage-cisco-mds -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-storage-md3000 -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-storage-netvault -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-storage-sanswitch-zte -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-switch-at -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-switch-cisco -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-switch-h3c -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-switch-juniper -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-switch-zte -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-tapelib-hpmsl -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-tapelib-ibmts -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-tapelib-sunts -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-Virtualnetwork -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-app-netnumen -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-sdn-vnet -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-storage-sanswitch-hp -
    -
    - - -
    -
    - liga: - -
    -
    -
    -
    - - - - ict-it-switch -
    -
    - - -
    -
    - liga: - -
    -
    -
    - - -
    -

    Font Test Drive

    - - - -
      -
    -
    - -
    -

    Generated by IcoMoon

    -
    - - - - diff --git a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.eot b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.eot deleted file mode 100644 index 7ee2ef906a3a3aea8d36ef707d40b0a5cc60d543..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96492 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�N9y@m6pT4RR{_di4z$gE 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

    vEl?$Q}3({>! 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 diff --git a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.svg b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.svg deleted file mode 100644 index 369a4139..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.svg +++ /dev/null @@ -1,321 +0,0 @@ - - - -Generated by IcoMoon - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.ttf b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.ttf deleted file mode 100644 index 1333d3b26d7a689c08c4951c129ffd7d5bf7f6e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96312 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
    Ca*Nn-H5^2+oFURS(tQ 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%0D~ z(}5IGO1pW3Ww*83dL#9qt=R6gPdXgwsp%EzCo?KDE3+h74Ov&_w9k1z+mQWHPD;+Q zoMX8Kx!3bH4Mw^dn@)=+*o+7a!=LT z>gej-)nC-~*A~_uuIpQLxM6$4*j>vOXDq(BkHQ#L6x?)S~vDO=H z*=@rshgQD7Dr!~#>aFb!?UQRhT6A<}kx?;NeyKdfB z+pXPPx%rEp=AN(r>2mMq_s85{z2(^l><{!j*zlmIucYt2herEb`p<8x-?n4hrH3~R z7zUml`1+B?9p#V826G>4eeA=XB|AHI?%Vm{j}$+myW)1W?E3P@wLjkS8`wdczxvYxp7#ErdKdynnC_GHqN7lsT&qfa@W+WpknQ#bcD@AEue z^7PC5v-a=WKmJVEGoLhF_znT2Adfb>-Bx)0Wefr`t|%KmE?>kH(V5D#v=phQ2-m$0D$VI~BIHJWFf0{)^cs!8iaePrA z9ftJFfwUOuj6hm~bax=Fzzp|l>z4I3>$cRa+uVJ>s1-)p>j8PQ4qLX~j7#rtUf+BF zJ)66YIa%4jnOhH?-~G`2u~SCKptD5T-&?}>UeLIH;{#o5dI3SP9xj&;z=dXwsP}tw zRc`LyV%)gCdwuVkE$cgsYacS=DS*$~oh7Oi?r#h3a3hNB7VdhD@NgYCwpR2I*8T@v Qge%#zKq7~?@|}PG7wu`(IsgCw diff --git a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.woff b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.woff deleted file mode 100644 index c038d133946b70d5ecf31f05cb20118e57307545..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96388 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")[0].src=this}),this.isBody=n===document.body,this.$container=e(n),this.$wrap=e('

    ').css(r.wrap).appendTo(this.$container),this.$root=this.isBody?s?e(t):e(document):this.$container;if(!this.isBody){var u=this.$container.css("position"),a=this.$container.css("zIndex");this.$container.css({position:u==="static"?"relative":u,zIndex:a==="auto"?0:a,background:"none"}),this.$wrap.css({zIndex:-999998})}this.$wrap.css({position:this.isBody&&s?"fixed":"absolute"}),this.index=0,this.show(this.index),e(t).on("resize.backstretch",e.proxy(this.resize,this)).on("orientationchange.backstretch",e.proxy(function(){this.isBody&&t.pageYOffset===0&&(t.scrollTo(0,1),this.resize())},this))};i.prototype={resize:function(){try{var e={left:0,top:0},n=this.isBody?this.$root.width():this.$root.innerWidth(),r=n,i=this.isBody?t.innerHeight?t.innerHeight:this.$root.height():this.$root.innerHeight(),s=r/this.$img.data("ratio"),o;s>=i?(o=(s-i)/2,this.options.centeredY&&(e.top="-"+o+"px")):(s=i,r=s*this.$img.data("ratio"),o=(r-n)/2,this.options.centeredX&&(e.left="-"+o+"px")),this.$wrap.css({width:n,height:i}).find("img:not(.deleteable)").css({width:r,height:s}).css(e)}catch(u){}return this},show:function(t){if(Math.abs(t)>this.images.length-1)return;this.index=t;var n=this,i=n.$wrap.find("img").addClass("deleteable"),s=e.Event("backstretch.show",{relatedTarget:n.$container[0]});return clearInterval(n.interval),n.$img=e("").css(r.img).bind("load",function(t){var r=this.width||e(t.target).width(),o=this.height||e(t.target).height();e(this).data("ratio",r/o),e(this).fadeIn(n.options.speed||n.options.fade,function(){i.remove(),n.paused||n.cycle(),n.$container.trigger(s,n)}),n.resize()}).appendTo(n.$wrap),n.$img.attr("src",n.images[t]),n},next:function(){return this.show(this.index1&&(clearInterval(this.interval),this.interval=setInterval(e.proxy(function(){this.paused||this.next()},this),this.options.duration)),this},destroy:function(n){e(t).off("resize.backstretch orientationchange.backstretch"),clearInterval(this.interval),n||this.$wrap.remove(),this.$container.removeData("backstretch")}};var s=function(){var e=navigator.userAgent,n=navigator.platform,r=e.match(/AppleWebKit\/([0-9]+)/),i=!!r&&r[1],s=e.match(/Fennec\/([0-9]+)/),o=!!s&&s[1],u=e.match(/Opera Mobi\/([0-9]+)/),a=!!u&&u[1],f=e.match(/MSIE ([0-9]+)/),l=!!f&&f[1];return!((n.indexOf("iPhone")>-1||n.indexOf("iPad")>-1||n.indexOf("iPod")>-1)&&i&&i<534||t.operamini&&{}.toString.call(t.operamini)==="[object OperaMini]"||u&&a<7458||e.indexOf("Android")>-1&&i&&i<533||o&&o<6||"palmGetResource"in t&&i&&i<534||e.indexOf("MeeGo")>-1&&e.indexOf("NokiaBrowser/8.5.0")>-1||l&&l<=6)}()})(jQuery,window); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/LICENSE.md b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/LICENSE.md deleted file mode 100644 index 4c723486..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/LICENSE.md +++ /dev/null @@ -1,23 +0,0 @@ -# License - -(The MIT License) - -Copyright (C) 2011-2014 by Nick Payne - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/README.md b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/README.md deleted file mode 100644 index 700fd6f7..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/README.md +++ /dev/null @@ -1,91 +0,0 @@ -# Bootbox - Bootstrap powered alert, confirm and flexible dialog boxes - -Please see http://bootboxjs.com for full usage instructions, or head over to http://paynedigital.com/bootbox for -the original writeup about the project. - -## Contact - -The easiest thing is to [find me on twitter @makeusabrew](http://twitter.com/makeusabrew). - -## Contributing - -Please see the [CONTRIBUTING](https://github.com/makeusabrew/bootbox/blob/master/CONTRIBUTING.md) file for guidelines. - -## Running Tests [![Build Status](https://api.travis-ci.org/makeusabrew/bootbox.svg)](http://travis-ci.org/makeusabrew/bootbox) - -Tests are run using [Karma](http://karma-runner.github.io/0.8/index.html) using the Mocha test adapter. -To run the tests yourself, simply run ```npm install``` within the project followed by ```npm test```. -Please note that this will require [PhantomJS](http://phantomjs.org/) being installed and in your path - if -it is not, you may run the tests and capture browsers manually by running ```karma start``` from the root -of the project. - -The project is also hosted on [Travis CI](https://travis-ci.org/makeusabrew/bootbox) - when submitting -pull requests **please** ensure your tests pass as failing requests will be rejected. See the -[CONTRIBUTING](https://github.com/makeusabrew/bootbox/blob/master/CONTRIBUTING.md) file for more information. - -## Building a minified release - -The repository no longer contains a minified bootbox.min.js file - this is now only generated -[for releases](https://github.com/makeusabrew/bootbox/releases). To build your own minified copy -for use in development simply run ```npm install``` if you haven't already, followed by ```grunt uglify```. -This will generate a bootbox.min.js file in your working directory. - -## A note on Bootstrap dependencies - -Bootbox **4.0.0** is the first release to support Bootstrap 3.0.0. - -Bootbox **3.3.0** is the *last* release to support Bootstrap 2.2.x. - -Much more dependency information can be found [on the Bootbox website](http://bootboxjs.com/#dependencies). - -### Roadmap - -The latest major release of Bootbox - 4.0.0 - involved a total rewrite of the -internal code and introduced an entirely new public API. It has not re-implemented -some functionality from the 3.x series as of yet; this will be addressed in the -coming weeks in the form of new minor releases; -[a task list for 4.3.0 is available](https://github.com/makeusabrew/bootbox/issues/220) - -please feel free to add feedback and requests. - -There is no new major (e.g. 5.x) release on the roadmap at present. - -## Latest Release: 4.2.0 - -* Add Swedish locale -* Add Latvian locale -* Add Turkish locale -* Add Hebrew locale -* Add password input type -* Add textarea input type -* Add date input type -* Add time input type -* Add number input type -* Support DOM selectors for container argument -* UMD support -* Better support on mobile devices - -For a full list of releases and changes please see [the changelog](https://github.com/makeusabrew/bootbox/blob/master/CHANGELOG.md). - -## License - -(The MIT License) - -Copyright (C) 2011-2014 by Nick Payne - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/bootbox.min.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/bootbox.min.js deleted file mode 100644 index a5d01a50..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/bootbox.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * bootbox.js v4.3.0 - * - * http://bootboxjs.com/license.txt - */ -!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["jquery"],b):"object"==typeof exports?module.exports=b(require("jquery")):a.bootbox=b(a.jQuery)}(this,function a(b,c){"use strict";function d(a){var b=q[o.locale];return b?b[a]:q.en[a]}function e(a,c,d){a.stopPropagation(),a.preventDefault();var e=b.isFunction(d)&&d(a)===!1;e||c.modal("hide")}function f(a){var b,c=0;for(b in a)c++;return c}function g(a,c){var d=0;b.each(a,function(a,b){c(a,b,d++)})}function h(a){var c,d;if("object"!=typeof a)throw new Error("Please supply an object of options");if(!a.message)throw new Error("Please specify a message");return a=b.extend({},o,a),a.buttons||(a.buttons={}),a.backdrop=a.backdrop?"static":!1,c=a.buttons,d=f(c),g(c,function(a,e,f){if(b.isFunction(e)&&(e=c[a]={callback:e}),"object"!==b.type(e))throw new Error("button with key "+a+" must be an object");e.label||(e.label=a),e.className||(e.className=2>=d&&f===d-1?"btn-primary":"btn-default")}),a}function i(a,b){var c=a.length,d={};if(1>c||c>2)throw new Error("Invalid argument length");return 2===c||"string"==typeof a[0]?(d[b[0]]=a[0],d[b[1]]=a[1]):d=a[0],d}function j(a,c,d){return b.extend(!0,{},a,i(c,d))}function k(a,b,c,d){var e={className:"bootbox-"+a,buttons:l.apply(null,b)};return m(j(e,d,c),b)}function l(){for(var a={},b=0,c=arguments.length;c>b;b++){var e=arguments[b],f=e.toLowerCase(),g=e.toUpperCase();a[f]={label:d(g)}}return a}function m(a,b){var d={};return g(b,function(a,b){d[b]=!0}),g(a.buttons,function(a){if(d[a]===c)throw new Error("button key "+a+" is not allowed (options are "+b.join("\n")+")")}),a}var n={dialog:"",header:"",footer:"",closeButton:"",form:"
    ",inputs:{text:"",textarea:"",email:"",select:"",checkbox:"
    ",date:"",time:"",number:"",password:""}},o={locale:"en",backdrop:!0,animate:!0,className:null,closeButton:!0,show:!0,container:"body"},p={};p.alert=function(){var a;if(a=k("alert",["ok"],["message","callback"],arguments),a.callback&&!b.isFunction(a.callback))throw new Error("alert requires callback property to be a function when provided");return a.buttons.ok.callback=a.onEscape=function(){return b.isFunction(a.callback)?a.callback():!0},p.dialog(a)},p.confirm=function(){var a;if(a=k("confirm",["cancel","confirm"],["message","callback"],arguments),a.buttons.cancel.callback=a.onEscape=function(){return a.callback(!1)},a.buttons.confirm.callback=function(){return a.callback(!0)},!b.isFunction(a.callback))throw new Error("confirm requires a callback");return p.dialog(a)},p.prompt=function(){var a,d,e,f,h,i,k;if(f=b(n.form),d={className:"bootbox-prompt",buttons:l("cancel","confirm"),value:"",inputType:"text"},a=m(j(d,arguments,["title","callback"]),["cancel","confirm"]),i=a.show===c?!0:a.show,a.message=f,a.buttons.cancel.callback=a.onEscape=function(){return a.callback(null)},a.buttons.confirm.callback=function(){var c;switch(a.inputType){case"text":case"textarea":case"email":case"select":case"date":case"time":case"number":case"password":c=h.val();break;case"checkbox":var d=h.find("input:checked");c=[],g(d,function(a,d){c.push(b(d).val())})}return a.callback(c)},a.show=!1,!a.title)throw new Error("prompt requires a title");if(!b.isFunction(a.callback))throw new Error("prompt requires a callback");if(!n.inputs[a.inputType])throw new Error("invalid prompt type");switch(h=b(n.inputs[a.inputType]),a.inputType){case"text":case"textarea":case"email":case"date":case"time":case"number":case"password":h.val(a.value);break;case"select":var o={};if(k=a.inputOptions||[],!k.length)throw new Error("prompt with select requires options");g(k,function(a,d){var e=h;if(d.value===c||d.text===c)throw new Error("given options in wrong format");d.group&&(o[d.group]||(o[d.group]=b("").attr("label",d.group)),e=o[d.group]),e.append("")}),g(o,function(a,b){h.append(b)}),h.val(a.value);break;case"checkbox":var q=b.isArray(a.value)?a.value:[a.value];if(k=a.inputOptions||[],!k.length)throw new Error("prompt with checkbox requires options");if(!k[0].value||!k[0].text)throw new Error("given options in wrong format");h=b("
    "),g(k,function(c,d){var e=b(n.inputs[a.inputType]);e.find("input").attr("value",d.value),e.find("label").append(d.text),g(q,function(a,b){b===d.value&&e.find("input").prop("checked",!0)}),h.append(e)})}return a.placeholder&&h.attr("placeholder",a.placeholder),a.pattern&&h.attr("pattern",a.pattern),f.append(h),f.on("submit",function(a){a.preventDefault(),a.stopPropagation(),e.find(".btn-primary").click()}),e=p.dialog(a),e.off("shown.bs.modal"),e.on("shown.bs.modal",function(){h.focus()}),i===!0&&e.modal("show"),e},p.dialog=function(a){a=h(a);var c=b(n.dialog),d=c.find(".modal-dialog"),f=c.find(".modal-body"),i=a.buttons,j="",k={onEscape:a.onEscape};if(g(i,function(a,b){j+="",k[a]=b.callback}),f.find(".bootbox-body").html(a.message),a.animate===!0&&c.addClass("fade"),a.className&&c.addClass(a.className),"large"===a.size&&d.addClass("modal-lg"),"small"===a.size&&d.addClass("modal-sm"),a.title&&f.before(n.header),a.closeButton){var l=b(n.closeButton);a.title?c.find(".modal-header").prepend(l):l.css("margin-top","-10px").prependTo(f)}return a.title&&c.find(".modal-title").html(a.title),j.length&&(f.after(n.footer),c.find(".modal-footer").html(j)),c.on("hidden.bs.modal",function(a){a.target===this&&c.remove()}),c.on("shown.bs.modal",function(){c.find(".btn-primary:first").focus()}),c.on("escape.close.bb",function(a){k.onEscape&&e(a,c,k.onEscape)}),c.on("click",".modal-footer button",function(a){var d=b(this).data("bb-handler");e(a,c,k[d])}),c.on("click",".bootbox-close-button",function(a){e(a,c,k.onEscape)}),c.on("keyup",function(a){27===a.which&&c.trigger("escape.close.bb")}),b(a.container).append(c),c.modal({backdrop:a.backdrop,keyboard:!1,show:!1}),a.show&&c.modal("show"),c},p.setDefaults=function(){var a={};2===arguments.length?a[arguments[0]]=arguments[1]:a=arguments[0],b.extend(o,a)},p.hideAll=function(){return b(".bootbox").modal("hide"),p};var q={br:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Sim"},cs:{OK:"OK",CANCEL:"Zrušit",CONFIRM:"Potvrdit"},da:{OK:"OK",CANCEL:"Annuller",CONFIRM:"Accepter"},de:{OK:"OK",CANCEL:"Abbrechen",CONFIRM:"Akzeptieren"},el:{OK:"Εντάξει",CANCEL:"Ακύρωση",CONFIRM:"Επιβεβαίωση"},en:{OK:"OK",CANCEL:"Cancel",CONFIRM:"OK"},es:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Aceptar"},et:{OK:"OK",CANCEL:"Katkesta",CONFIRM:"OK"},fi:{OK:"OK",CANCEL:"Peruuta",CONFIRM:"OK"},fr:{OK:"OK",CANCEL:"Annuler",CONFIRM:"D'accord"},he:{OK:"אישור",CANCEL:"ביטול",CONFIRM:"אישור"},id:{OK:"OK",CANCEL:"Batal",CONFIRM:"OK"},it:{OK:"OK",CANCEL:"Annulla",CONFIRM:"Conferma"},ja:{OK:"OK",CANCEL:"キャンセル",CONFIRM:"確認"},lt:{OK:"Gerai",CANCEL:"Atšaukti",CONFIRM:"Patvirtinti"},lv:{OK:"Labi",CANCEL:"Atcelt",CONFIRM:"Apstiprināt"},nl:{OK:"OK",CANCEL:"Annuleren",CONFIRM:"Accepteren"},no:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},pl:{OK:"OK",CANCEL:"Anuluj",CONFIRM:"Potwierdź"},pt:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Confirmar"},ru:{OK:"OK",CANCEL:"Отмена",CONFIRM:"Применить"},sv:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},tr:{OK:"Tamam",CANCEL:"İptal",CONFIRM:"Onayla"},zh_CN:{OK:"OK",CANCEL:"取消",CONFIRM:"确认"},zh_TW:{OK:"OK",CANCEL:"取消",CONFIRM:"確認"}};return p.init=function(c){return a(c||b)},p}); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/LICENSE b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/LICENSE deleted file mode 100644 index d7aed208..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ - -The MIT License (MIT) - -Copyright (c) 2012-2014 Cameron Spear http://cameronspear.com - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - - \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/README.md b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/README.md deleted file mode 100644 index 842d6f3a..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/README.md +++ /dev/null @@ -1,122 +0,0 @@ -Bootstrap Hover Dropdown Plugin -=============================== - -![Current Version](http://img.shields.io/github/tag/cwspear/bootstrap-hover-dropdown.svg?style=flat) - -#### Name Change - -*Twitter Bootstrap* is now just *Bootstrap*, and I've renamed this repo, **renamed the files** and change all references from *Twitter Bootstrap* to just *Bootstrap* in the docs/example to reflect that. - -No actual code changed, so I am keeping the current version (`2.0.1` at the time of this writing), but be aware of the lack of *twitter-* from the beginning of the JS files and how that might affect you. - -Sorry for any inconvenience! - -#### Updated for Bootstrap 3 - -I updated the demo with Bootstrap 3, as well as removed code associated to submenus ([not supported in Bootstrap 3](https://github.com/twbs/bootstrap/pull/6342#issuecomment-11594010)) and touch devices (just make sure you have `data-toggle="dropdown"` to let Mobile do its thing and my plugin won't interfere). - -## Introduction - -A simple plugin to enable Bootstrap dropdowns to activate on hover and provide a nice user experience. - -The dropdowns are dismissed after a configurable delay. This fixes an issue that can instantly close your nav because of a 1px gap between the button/nav item that activated the dropdown and the actual dropdown. It is also generally a better user experience, as users are not punished by going 1 pixel outside of the dropdown, which would instantly close the nav without a delay. - -**Note:** The HTML markup is the same as with any other Bootstrap dropdown. This will not interfere with Bootstrap's default activate-on-click method (i.e. this plugin combined with Bootstrap's default behavior work well to support both the ideal experience on desktop and mobile). - -## Installation - -You can simply download and extract the package downloaded from GitHub. Alternatively, you can download the files via [Bower](http://bower.io/) (a JavaScript package management system): - -``` -bower install bootstrap-hover-dropdown -``` - -which will also automatically install Bootstrap and jQuery if needed. - -Once you have the files downloaded, link to the files in your code *after* you include the main Bootstrap JS file(s): - -```html - - - - -``` - -## Usage - -Just like in Bootstrap you can activate it without any JavaScript, just by adding a data-attribute, you can make it automatically work. - -Add `data-hover="dropdown"` in addition (or in place of) Bootstrap's `data-toggle="dropdown"`. - -You can set options via data-attributes, too, via `data-delay` and `data-close-others`. Here's an example of markup: - -```html - -``` - -Alternatively, you can initialize via JavaScript: - -```javascript -$('.dropdown-toggle').dropdownHover(options); -``` - -This also works with submenus without any other configuring since Bootstrap already supports this feature. Just use the markup like you were using before. Only the top level anchor tag needs any special markup for my plugin to work (see demo for proper markup). - -## Options - -* **delay**: *(optional)* The delay in miliseconds. This is the time to wait before closing a dropdown when the mouse is no longer over the dropdown or the button/nav item that activated it. Defaults to `500`. -* **instantlyCloseOthers**: *(optional)* A boolean value that when true, will instantly close all other dropdowns matched by the selector used when you activate a new navigation. This is nice for when you have dropdowns close together that may overlap. Default is `true`. - -## Demo - -You can view a demo for this plugin on my site: http://cameronspear.com/demos/bootstrap-hover-dropdown/ - -### A Note on Choosing a Selector - -This plugin purposedly lets you choose a selector (as opposed to apply this to everything with the class of `.dropdown-toggle`). This is so that you can selectively apply it where you want. Maybe you only want to use it for the main nav, and not have it activate for dropdown buttons in the main content. You can add a class to the item that normally gets `.dropdown-toggle` and use that class with this plugin to easily achieve that, or use a selector such as `.main-nav .dropdown-toggle`. - -**Important:** Bootstrap relies on styles associated with the class `.dropdown-toggle` (for stuff like the caret color), and it is recommended you leave that class alone. - -## Changes/Bug Fixes - -I'm a slacker and only started keeping track of changes/bug fixes starting in March of 2013. - -* **2014-01-27** Fixed an issue where chaining could break on mobile and cleaned up the the way the plugin triggered events. Also cleaned up the demo (fixed navbar appearance). -* **2013-12-05** Change all references of *Twitter Bootstrap* to *Bootstrap* to reflect Bootstrap's name change. -* **2013-11-09** Disable this plugin for devices that support touch. The plugin was causing issues with some mobile devices, and it's not necessary for them. -* **2013-08-02** Add support for Bootstrap 3. For Bootstrap 2.x.x, use the `bootstrap-2.x.x` branch. -* **2013-06-10** Always instantly close submenu siblings when opening a new one. Issue #19. -* **2013-06-10** A fix for my last fix that would sometimes cause the correct item to not trigger when it should. Issue #18. -* **2013-05-08** Fix issue where a sibling could open a drop down that wasn't theirs. Issue #18. -* **2013-04-29** Added support for submenus: Submenus should now honor the delay option and way before closing. They do not abide by the `instantlyCloseOthers` option, as it's not really relevant. -* **2013-04-19** Fixed an issue where the conditional rule to disable hover on mobile wasn't working if you included the script in the header. -* **2013-04-03** Made it so if you're using the responsive CSS and in tablet/mobile view, disable the hover. -* **2013-03-16** Fixed an issue where the options you passed in via the method call were completely ignored. - -## Contributions - -[Mattia Larentis](https://github.com/nostalgiaz) helped me with the idea for the data-attributes and doing the options via an object. - -## Roadmap - -As this plugin, in its simplicity, is pretty much exactly what I intend it to be, I don't plan to implement any new features. ~~**One exception:** I would like to tweak it so that when you're in a submenu, it doesn't instantly close when you hover outside of it.~~ **Update:** I added this in late April 2013. - -If you have ideas for a new feature or something along those lines, you're welcome to share them with me, but I am not likely to implement it/merge your pull without a very compelling reason. You are absolutely free to create a fork and implement the feature yourself for your and others' use. - -This, of course, does not speak for bugs. If you have a bug, please bring it to my attention, and I will try and fix it. Note that 93.7% of people's issues are caused by incorrect markup, so please double check that first. - -## Me - -Follow me on Twitter: [@CWSpear](https://twitter.com/CWSpear) or check out my [blog](http://cameronspear.com/blog/). diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/bootstrap-hover-dropdown.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/bootstrap-hover-dropdown.js deleted file mode 100644 index 55c5aa21..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/bootstrap-hover-dropdown.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Project: Bootstrap Hover Dropdown - * Author: Cameron Spear - * Contributors: Mattia Larentis - * - * Dependencies: Bootstrap's Dropdown plugin, jQuery - * - * A simple plugin to enable Bootstrap dropdowns to active on hover and provide a nice user experience. - * - * License: MIT - * - * http://cameronspear.com/blog/bootstrap-dropdown-on-hover-plugin/ - */ -!function(e,n){var o=e();e.fn.dropdownHover=function(t){return"ontouchstart"in document?this:(o=o.add(this.parent()),this.each(function(){var i,r=e(this),s=r.parent(),d={delay:500,instantlyCloseOthers:!0},a={delay:e(this).data("delay"),instantlyCloseOthers:e(this).data("close-others")},h="show.bs.dropdown",u="hide.bs.dropdown",l=e.extend(!0,{},d,t,a);s.hover(function(e){return s.hasClass("open")||r.is(e.target)?(o.find(":focus").blur(),l.instantlyCloseOthers===!0&&o.removeClass("open"),n.clearTimeout(i),s.addClass("open"),void r.trigger(h)):!0},function(){i=n.setTimeout(function(){s.removeClass("open"),r.trigger(u)},l.delay)}),r.hover(function(){o.find(":focus").blur(),l.instantlyCloseOthers===!0&&o.removeClass("open"),n.clearTimeout(i),s.addClass("open"),r.trigger(h)}),s.find(".dropdown-submenu").each(function(){var o,t=e(this);t.hover(function(){n.clearTimeout(o),t.children(".dropdown-menu").show(),t.siblings().children(".dropdown-menu").hide()},function(){var e=t.children(".dropdown-menu");o=n.setTimeout(function(){e.hide()},l.delay)})})}))},e(document).ready(function(){e('[data-hover="dropdown"]').not(".hover-initialized").each(function(){e(this).dropdownHover(),e(this).addClass("hover-initialized")})})}(jQuery,this); diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js deleted file mode 100644 index 25757af5..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Project: Bootstrap Hover Dropdown - * Author: Cameron Spear - * Contributors: Mattia Larentis - * - * Dependencies: Bootstrap's Dropdown plugin, jQuery - * - * A simple plugin to enable Bootstrap dropdowns to active on hover and provide a nice user experience. - * - * License: MIT - * - * http://cameronspear.com/blog/bootstrap-dropdown-on-hover-plugin/ - */(function(b,a,c){var d=b();b.fn.dropdownHover=function(e){if("ontouchstart" in document){return this}d=d.add(this.parent());return this.each(function(){var m=b(this),l=m.parent(),k={delay:500,instantlyCloseOthers:true},i={delay:b(this).data("delay"),instantlyCloseOthers:b(this).data("close-others")},f="show.bs.dropdown",j="hide.bs.dropdown",g=b.extend(true,{},k,e,i),h;l.hover(function(n){if(!l.hasClass("open")&&!m.is(n.target)){return true}d.find(":focus").blur();if(g.instantlyCloseOthers===true){d.removeClass("open")}a.clearTimeout(h);l.addClass("open");m.trigger(f)},function(){h=a.setTimeout(function(){l.removeClass("open");m.trigger(j)},g.delay)});m.hover(function(){d.find(":focus").blur();if(g.instantlyCloseOthers===true){d.removeClass("open")}a.clearTimeout(h);l.addClass("open");m.trigger(f)});l.find(".dropdown-submenu").each(function(){var o=b(this);var n;o.hover(function(){a.clearTimeout(n);o.children(".dropdown-menu").show();o.siblings().children(".dropdown-menu").hide()},function(){var p=o.children(".dropdown-menu");n=a.setTimeout(function(){p.hide()},g.delay)})})})};b(document).ready(function(){b('[data-hover="dropdown"]').dropdownHover()})})(jQuery,this); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/css/bootstrap-dt.css b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/css/bootstrap-dt.css deleted file mode 100644 index 58fa7e8a..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/css/bootstrap-dt.css +++ /dev/null @@ -1,5804 +0,0 @@ -/*! - * Bootstrap v3.1.1 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -/*! normalize.css v3.0.0 | MIT License | git.io/normalize */ -html { - font-family: sans-serif; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -body { - margin: 0; -} -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -nav, -section, -summary { - display: block; -} -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden], -template { - display: none; -} -a { - background: transparent; -} -a:active, -a:hover { - outline: 0; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, -strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -h1 { - margin: .67em 0; - font-size: 2em; -} -mark { - color: #000; - background: #ff0; -} -small { - font-size: 80%; -} -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} -sup { - top: -.5em; -} -sub { - bottom: -.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 1em 40px; -} -hr { - height: 0; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -pre { - overflow: auto; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -button, -input, -optgroup, -select, -textarea { - margin: 0; - font: inherit; - color: inherit; -} -button { - overflow: visible; -} -button, -select { - text-transform: none; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -button[disabled], -html input[disabled] { - cursor: default; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - padding: 0; - border: 0; -} -input { - line-height: normal; -} -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; - padding: 0; -} -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} -input[type="search"] { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; -} -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -fieldset { - padding: .35em .625em .75em; - margin: 0 2px; - border: 1px solid #c0c0c0; -} -legend { - padding: 0; - border: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -table { - border-spacing: 0; - border-collapse: collapse; -} -td, -th { -} -@media print { - * { - color: #000 !important; - text-shadow: none !important; - background: transparent !important; - box-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - a[href^="javascript:"]:after, - a[href^="#"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - select { - background: #fff !important; - } - .navbar { - display: none; - } - .table td, - .table th { - background-color: #fff !important; - } - .btn > .caret, - .dropup > .btn > .caret { - border-top-color: #000 !important; - } - .label { - border: 1px solid #000; - } - .table { - border-collapse: collapse !important; - } - .table-bordered th, - .table-bordered td { - border: 1px solid #ddd !important; - } -} -.dataTableWrapperDiv div { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -html { - font-size: 62.5%; - - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.42857143; - color: #333; - background-color: #fff; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #428bca; - text-decoration: none; -} -a:hover, -a:focus { - color: #2a6496; - text-decoration: underline; -} -a:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} -.img-rounded { - border-radius: 6px; -} -.img-thumbnail { - display: inline-block; - max-width: 100%; - height: auto; - padding: 4px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; -} -.img-circle { - border-radius: 50%; -} -hr { - margin-top: 20px; - margin-bottom: 20px; - border: 0; - border-top: 1px solid #eee; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: inherit; - font-weight: 500; - line-height: 1.1; - color: inherit; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #999; -} -h1, -.h1, -h2, -.h2, -h3, -.h3 { - margin-top: 20px; - margin-bottom: 10px; -} -h1 small, -.h1 small, -h2 small, -.h2 small, -h3 small, -.h3 small, -h1 .small, -.h1 .small, -h2 .small, -.h2 .small, -h3 .small, -.h3 .small { - font-size: 65%; -} -h4, -.h4, -h5, -.h5, -h6, -.h6 { - margin-top: 10px; - margin-bottom: 10px; -} -h4 small, -.h4 small, -h5 small, -.h5 small, -h6 small, -.h6 small, -h4 .small, -.h4 .small, -h5 .small, -.h5 .small, -h6 .small, -.h6 .small { - font-size: 75%; -} -h1, -.h1 { - font-size: 36px; -} -h2, -.h2 { - font-size: 30px; -} -h3, -.h3 { - font-size: 24px; -} -h4, -.h4 { - font-size: 18px; -} -h5, -.h5 { - font-size: 14px; -} -h6, -.h6 { - font-size: 12px; -} -p { - margin: 0 0 10px; -} -.lead { - margin-bottom: 20px; - font-size: 16px; - font-weight: 200; - line-height: 1.4; -} -@media (min-width: 768px) { - .lead { - font-size: 21px; - } -} -small, -.small { - font-size: 85%; -} -cite { - font-style: normal; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -.text-justify { - text-align: justify; -} -.text-muted { - color: #999; -} -.text-primary { - color: #428bca; -} -a.text-primary:hover { - color: #3071a9; -} -.text-success { - color: #3c763d; -} -a.text-success:hover { - color: #2b542c; -} -.text-info { - color: #31708f; -} -a.text-info:hover { - color: #245269; -} -.text-warning { - color: #8a6d3b; -} -a.text-warning:hover { - color: #66512c; -} -.text-danger { - color: #a94442; -} -a.text-danger:hover { - color: #843534; -} -.bg-primary { - color: #fff; - background-color: #428bca; -} -a.bg-primary:hover { - background-color: #3071a9; -} -.bg-success { - background-color: #dff0d8; -} -a.bg-success:hover { - background-color: #c1e2b3; -} -.bg-info { - background-color: #d9edf7; -} -a.bg-info:hover { - background-color: #afd9ee; -} -.bg-warning { - background-color: #fcf8e3; -} -a.bg-warning:hover { - background-color: #f7ecb5; -} -.bg-danger { - background-color: #f2dede; -} -a.bg-danger:hover { - background-color: #e4b9b9; -} -.page-header { - padding-bottom: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #eee; -} -ul, -ol { - margin-top: 0; - margin-bottom: 10px; -} -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} -.list-unstyled { - padding-left: 0; - list-style: none; -} -.list-inline { - padding-left: 0; - margin-left: -5px; - list-style: none; -} -.list-inline > li { - display: inline-block; - padding-right: 5px; - padding-left: 5px; -} -dl { - margin-top: 0; - margin-bottom: 20px; -} -dt, -dd { - line-height: 1.42857143; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - overflow: hidden; - clear: left; - text-align: right; - text-overflow: ellipsis; - white-space: nowrap; - } - .dl-horizontal dd { - margin-left: 180px; - } -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #999; -} -.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 10px 20px; - margin: 0 0 20px; - font-size: 17.5px; - border-left: 5px solid #eee; -} -blockquote p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #999; -} -blockquote footer:before, -blockquote small:before, -blockquote .small:before { - content: '\2014 \00A0'; -} -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - text-align: right; - border-right: 5px solid #eee; - border-left: 0; -} -.blockquote-reverse footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small:after, -blockquote.pull-right .small:after { - content: '\00A0 \2014'; -} -blockquote:before, -blockquote:after { - content: ""; -} -address { - margin-bottom: 20px; - font-style: normal; - line-height: 1.42857143; -} -code, -kbd, -pre, -samp { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; -} -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - white-space: nowrap; - background-color: #f9f2f4; - border-radius: 4px; -} -kbd { - padding: 2px 4px; - font-size: 90%; - color: #fff; - background-color: #333; - border-radius: 3px; - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); -} -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 1.42857143; - color: #333; - word-break: break-all; - word-wrap: break-word; - background-color: #f5f5f5; - border: 1px solid #ccc; - border-radius: 4px; -} -pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -.container { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -@media (min-width: 768px) { - .container { - width: 750px; - } -} -@media (min-width: 992px) { - .container { - width: 970px; - } -} -@media (min-width: 1200px) { - .container { - width: 1170px; - } -} -.container-fluid { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -.row { - margin-right: -15px; - margin-left: -15px; -} -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-right: 15px; - padding-left: 15px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - float: left; -} -.col-xs-12 { - width: 100%; -} -.col-xs-11 { - width: 91.66666667%; -} -.col-xs-10 { - width: 83.33333333%; -} -.col-xs-9 { - width: 75%; -} -.col-xs-8 { - width: 66.66666667%; -} -.col-xs-7 { - width: 58.33333333%; -} -.col-xs-6 { - width: 50%; -} -.col-xs-5 { - width: 41.66666667%; -} -.col-xs-4 { - width: 33.33333333%; -} -.col-xs-3 { - width: 25%; -} -.col-xs-2 { - width: 16.66666667%; -} -.col-xs-1 { - width: 8.33333333%; -} -.col-xs-pull-12 { - right: 100%; -} -.col-xs-pull-11 { - right: 91.66666667%; -} -.col-xs-pull-10 { - right: 83.33333333%; -} -.col-xs-pull-9 { - right: 75%; -} -.col-xs-pull-8 { - right: 66.66666667%; -} -.col-xs-pull-7 { - right: 58.33333333%; -} -.col-xs-pull-6 { - right: 50%; -} -.col-xs-pull-5 { - right: 41.66666667%; -} -.col-xs-pull-4 { - right: 33.33333333%; -} -.col-xs-pull-3 { - right: 25%; -} -.col-xs-pull-2 { - right: 16.66666667%; -} -.col-xs-pull-1 { - right: 8.33333333%; -} -.col-xs-pull-0 { - right: 0; -} -.col-xs-push-12 { - left: 100%; -} -.col-xs-push-11 { - left: 91.66666667%; -} -.col-xs-push-10 { - left: 83.33333333%; -} -.col-xs-push-9 { - left: 75%; -} -.col-xs-push-8 { - left: 66.66666667%; -} -.col-xs-push-7 { - left: 58.33333333%; -} -.col-xs-push-6 { - left: 50%; -} -.col-xs-push-5 { - left: 41.66666667%; -} -.col-xs-push-4 { - left: 33.33333333%; -} -.col-xs-push-3 { - left: 25%; -} -.col-xs-push-2 { - left: 16.66666667%; -} -.col-xs-push-1 { - left: 8.33333333%; -} -.col-xs-push-0 { - left: 0; -} -.col-xs-offset-12 { - margin-left: 100%; -} -.col-xs-offset-11 { - margin-left: 91.66666667%; -} -.col-xs-offset-10 { - margin-left: 83.33333333%; -} -.col-xs-offset-9 { - margin-left: 75%; -} -.col-xs-offset-8 { - margin-left: 66.66666667%; -} -.col-xs-offset-7 { - margin-left: 58.33333333%; -} -.col-xs-offset-6 { - margin-left: 50%; -} -.col-xs-offset-5 { - margin-left: 41.66666667%; -} -.col-xs-offset-4 { - margin-left: 33.33333333%; -} -.col-xs-offset-3 { - margin-left: 25%; -} -.col-xs-offset-2 { - margin-left: 16.66666667%; -} -.col-xs-offset-1 { - margin-left: 8.33333333%; -} -.col-xs-offset-0 { - margin-left: 0; -} -@media (min-width: 768px) { - .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - float: left; - } - .col-sm-12 { - width: 100%; - } - .col-sm-11 { - width: 91.66666667%; - } - .col-sm-10 { - width: 83.33333333%; - } - .col-sm-9 { - width: 75%; - } - .col-sm-8 { - width: 66.66666667%; - } - .col-sm-7 { - width: 58.33333333%; - } - .col-sm-6 { - width: 50%; - } - .col-sm-5 { - width: 41.66666667%; - } - .col-sm-4 { - width: 33.33333333%; - } - .col-sm-3 { - width: 25%; - } - .col-sm-2 { - width: 16.66666667%; - } - .col-sm-1 { - width: 8.33333333%; - } - .col-sm-pull-12 { - right: 100%; - } - .col-sm-pull-11 { - right: 91.66666667%; - } - .col-sm-pull-10 { - right: 83.33333333%; - } - .col-sm-pull-9 { - right: 75%; - } - .col-sm-pull-8 { - right: 66.66666667%; - } - .col-sm-pull-7 { - right: 58.33333333%; - } - .col-sm-pull-6 { - right: 50%; - } - .col-sm-pull-5 { - right: 41.66666667%; - } - .col-sm-pull-4 { - right: 33.33333333%; - } - .col-sm-pull-3 { - right: 25%; - } - .col-sm-pull-2 { - right: 16.66666667%; - } - .col-sm-pull-1 { - right: 8.33333333%; - } - .col-sm-pull-0 { - right: 0; - } - .col-sm-push-12 { - left: 100%; - } - .col-sm-push-11 { - left: 91.66666667%; - } - .col-sm-push-10 { - left: 83.33333333%; - } - .col-sm-push-9 { - left: 75%; - } - .col-sm-push-8 { - left: 66.66666667%; - } - .col-sm-push-7 { - left: 58.33333333%; - } - .col-sm-push-6 { - left: 50%; - } - .col-sm-push-5 { - left: 41.66666667%; - } - .col-sm-push-4 { - left: 33.33333333%; - } - .col-sm-push-3 { - left: 25%; - } - .col-sm-push-2 { - left: 16.66666667%; - } - .col-sm-push-1 { - left: 8.33333333%; - } - .col-sm-push-0 { - left: 0; - } - .col-sm-offset-12 { - margin-left: 100%; - } - .col-sm-offset-11 { - margin-left: 91.66666667%; - } - .col-sm-offset-10 { - margin-left: 83.33333333%; - } - .col-sm-offset-9 { - margin-left: 75%; - } - .col-sm-offset-8 { - margin-left: 66.66666667%; - } - .col-sm-offset-7 { - margin-left: 58.33333333%; - } - .col-sm-offset-6 { - margin-left: 50%; - } - .col-sm-offset-5 { - margin-left: 41.66666667%; - } - .col-sm-offset-4 { - margin-left: 33.33333333%; - } - .col-sm-offset-3 { - margin-left: 25%; - } - .col-sm-offset-2 { - margin-left: 16.66666667%; - } - .col-sm-offset-1 { - margin-left: 8.33333333%; - } - .col-sm-offset-0 { - margin-left: 0; - } -} -@media (min-width: 992px) { - .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { - float: left; - } - .col-md-12 { - width: 100%; - } - .col-md-11 { - width: 91.66666667%; - } - .col-md-10 { - width: 83.33333333%; - } - .col-md-9 { - width: 75%; - } - .col-md-8 { - width: 66.66666667%; - } - .col-md-7 { - width: 58.33333333%; - } - .col-md-6 { - width: 50%; - } - .col-md-5 { - width: 41.66666667%; - } - .col-md-4 { - width: 33.33333333%; - } - .col-md-3 { - width: 25%; - } - .col-md-2 { - width: 16.66666667%; - } - .col-md-1 { - width: 8.33333333%; - } - .col-md-pull-12 { - right: 100%; - } - .col-md-pull-11 { - right: 91.66666667%; - } - .col-md-pull-10 { - right: 83.33333333%; - } - .col-md-pull-9 { - right: 75%; - } - .col-md-pull-8 { - right: 66.66666667%; - } - .col-md-pull-7 { - right: 58.33333333%; - } - .col-md-pull-6 { - right: 50%; - } - .col-md-pull-5 { - right: 41.66666667%; - } - .col-md-pull-4 { - right: 33.33333333%; - } - .col-md-pull-3 { - right: 25%; - } - .col-md-pull-2 { - right: 16.66666667%; - } - .col-md-pull-1 { - right: 8.33333333%; - } - .col-md-pull-0 { - right: 0; - } - .col-md-push-12 { - left: 100%; - } - .col-md-push-11 { - left: 91.66666667%; - } - .col-md-push-10 { - left: 83.33333333%; - } - .col-md-push-9 { - left: 75%; - } - .col-md-push-8 { - left: 66.66666667%; - } - .col-md-push-7 { - left: 58.33333333%; - } - .col-md-push-6 { - left: 50%; - } - .col-md-push-5 { - left: 41.66666667%; - } - .col-md-push-4 { - left: 33.33333333%; - } - .col-md-push-3 { - left: 25%; - } - .col-md-push-2 { - left: 16.66666667%; - } - .col-md-push-1 { - left: 8.33333333%; - } - .col-md-push-0 { - left: 0; - } - .col-md-offset-12 { - margin-left: 100%; - } - .col-md-offset-11 { - margin-left: 91.66666667%; - } - .col-md-offset-10 { - margin-left: 83.33333333%; - } - .col-md-offset-9 { - margin-left: 75%; - } - .col-md-offset-8 { - margin-left: 66.66666667%; - } - .col-md-offset-7 { - margin-left: 58.33333333%; - } - .col-md-offset-6 { - margin-left: 50%; - } - .col-md-offset-5 { - margin-left: 41.66666667%; - } - .col-md-offset-4 { - margin-left: 33.33333333%; - } - .col-md-offset-3 { - margin-left: 25%; - } - .col-md-offset-2 { - margin-left: 16.66666667%; - } - .col-md-offset-1 { - margin-left: 8.33333333%; - } - .col-md-offset-0 { - margin-left: 0; - } -} -@media (min-width: 1200px) { - .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - float: left; - } - .col-lg-12 { - width: 100%; - } - .col-lg-11 { - width: 91.66666667%; - } - .col-lg-10 { - width: 83.33333333%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-8 { - width: 66.66666667%; - } - .col-lg-7 { - width: 58.33333333%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-5 { - width: 41.66666667%; - } - .col-lg-4 { - width: 33.33333333%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-2 { - width: 16.66666667%; - } - .col-lg-1 { - width: 8.33333333%; - } - .col-lg-pull-12 { - right: 100%; - } - .col-lg-pull-11 { - right: 91.66666667%; - } - .col-lg-pull-10 { - right: 83.33333333%; - } - .col-lg-pull-9 { - right: 75%; - } - .col-lg-pull-8 { - right: 66.66666667%; - } - .col-lg-pull-7 { - right: 58.33333333%; - } - .col-lg-pull-6 { - right: 50%; - } - .col-lg-pull-5 { - right: 41.66666667%; - } - .col-lg-pull-4 { - right: 33.33333333%; - } - .col-lg-pull-3 { - right: 25%; - } - .col-lg-pull-2 { - right: 16.66666667%; - } - .col-lg-pull-1 { - right: 8.33333333%; - } - .col-lg-pull-0 { - right: 0; - } - .col-lg-push-12 { - left: 100%; - } - .col-lg-push-11 { - left: 91.66666667%; - } - .col-lg-push-10 { - left: 83.33333333%; - } - .col-lg-push-9 { - left: 75%; - } - .col-lg-push-8 { - left: 66.66666667%; - } - .col-lg-push-7 { - left: 58.33333333%; - } - .col-lg-push-6 { - left: 50%; - } - .col-lg-push-5 { - left: 41.66666667%; - } - .col-lg-push-4 { - left: 33.33333333%; - } - .col-lg-push-3 { - left: 25%; - } - .col-lg-push-2 { - left: 16.66666667%; - } - .col-lg-push-1 { - left: 8.33333333%; - } - .col-lg-push-0 { - left: 0; - } - .col-lg-offset-12 { - margin-left: 100%; - } - .col-lg-offset-11 { - margin-left: 91.66666667%; - } - .col-lg-offset-10 { - margin-left: 83.33333333%; - } - .col-lg-offset-9 { - margin-left: 75%; - } - .col-lg-offset-8 { - margin-left: 66.66666667%; - } - .col-lg-offset-7 { - margin-left: 58.33333333%; - } - .col-lg-offset-6 { - margin-left: 50%; - } - .col-lg-offset-5 { - margin-left: 41.66666667%; - } - .col-lg-offset-4 { - margin-left: 33.33333333%; - } - .col-lg-offset-3 { - margin-left: 25%; - } - .col-lg-offset-2 { - margin-left: 16.66666667%; - } - .col-lg-offset-1 { - margin-left: 8.33333333%; - } - .col-lg-offset-0 { - margin-left: 0; - } -} -table { - max-width: 100%; - background-color: transparent; -} -th { - text-align: left; -} -.table { - width: 100%; - margin-bottom: 20px; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - padding: 8px; - line-height: 1.42857143; - vertical-align: top; - border-top: 1px solid #ddd; -} -.table > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #ddd; -} -.table > caption + thead > tr:first-child > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.table > tbody + tbody { - border-top: 2px solid #ddd; -} -.table .table { - background-color: #fff; -} -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; -} -.table-bordered { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table-striped > tbody > tr:nth-child(odd) > td, -.table-striped > tbody > tr:nth-child(odd) > th { - background-color: #f9f9f9; -} -.table-hover > tbody > tr:hover > td, -.table-hover > tbody > tr:hover > th { - /*background-color: #f5f5f5;*/ - background-color:#dbedff; -} -.dataTableTdSelected{ - background-color:#dbedff !important; -} -table col[class*="col-"] { - position: static; - display: table-column; - float: none; -} -table td[class*="col-"], -table th[class*="col-"] { - position: static; - display: table-cell; - float: none; -} -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #f5f5f5; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr.active:hover > th { - background-color: #e8e8e8; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #dff0d8; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #d9edf7; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; -} -@media (max-width: 767px) { - .table-responsive { - width: 100%; - margin-bottom: 15px; - overflow-x: scroll; - overflow-y: hidden; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid #ddd; - } - .table-responsive > .table { - margin-bottom: 0; - } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: inherit; - color: #333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -label { - display: inline-block; - margin-bottom: 5px; - font-weight: bold; -} -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - /* IE8-9 */ - line-height: normal; -} -input[type="file"] { - display: block; -} -input[type="range"] { - display: block; - width: 100%; -} -select[multiple], -select[size] { - height: auto; -} -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -output { - display: block; - padding-top: 7px; - font-size: 14px; - line-height: 1.42857143; - color: #555; -} -.form-control { - display: block; - width: 100%; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; -} -.form-control:focus { - border-color: #66afe9; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); -} -.form-control::-moz-placeholder { - color: #999; - opacity: 1; -} -.form-control:-ms-input-placeholder { - color: #999; -} -.form-control::-webkit-input-placeholder { - color: #999; -} -.form-control[disabled], -.form-control[readonly], -fieldset[disabled] .form-control { - cursor: not-allowed; - background-color: #eee; - opacity: 1; -} -textarea.form-control { - height: auto; -} -input[type="search"] { - -webkit-appearance: none; -} -input[type="date"] { - line-height: 34px; -} -.form-group { - margin-bottom: 15px; -} -.radio, -.checkbox { - display: block; - min-height: 20px; - padding-left: 20px; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - display: inline; - font-weight: normal; - cursor: pointer; -} -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - float: left; - margin-left: -20px; -} -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; -} -.radio-inline, -.checkbox-inline { - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - vertical-align: middle; - cursor: pointer; -} -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -.radio[disabled], -.radio-inline[disabled], -.checkbox[disabled], -.checkbox-inline[disabled], -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"], -fieldset[disabled] .radio, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.input-sm { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-sm { - height: 30px; - line-height: 30px; -} -textarea.input-sm, -select[multiple].input-sm { - height: auto; -} -.input-lg { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} -select.input-lg { - height: 46px; - line-height: 46px; -} -textarea.input-lg, -select[multiple].input-lg { - height: auto; -} -.has-feedback { - position: relative; -} -.has-feedback .form-control { - padding-right: 42.5px; -} -.has-feedback .form-control-feedback { - position: absolute; - top: 25px; - right: 0; - display: block; - width: 34px; - height: 34px; - line-height: 34px; - text-align: center; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline { - color: #3c763d; -} -.has-success .form-control { - border-color: #3c763d; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-success .form-control:focus { - border-color: #2b542c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; -} -.has-success .input-group-addon { - color: #3c763d; - background-color: #dff0d8; - border-color: #3c763d; -} -.has-success .form-control-feedback { - color: #3c763d; -} -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline { - color: #8a6d3b; -} -.has-warning .form-control { - border-color: #8a6d3b; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-warning .form-control:focus { - border-color: #66512c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; -} -.has-warning .input-group-addon { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #8a6d3b; -} -.has-warning .form-control-feedback { - color: #8a6d3b; -} -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline { - color: #a94442; -} -.has-error .form-control { - border-color: #a94442; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-error .form-control:focus { - border-color: #843534; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; -} -.has-error .input-group-addon { - color: #a94442; - background-color: #f2dede; - border-color: #a94442; -} -.has-error .form-control-feedback { - color: #a94442; -} -.form-control-static { - margin-bottom: 0; -} -.help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #737373; -} -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - padding-left: 0; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - float: none; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.form-horizontal .control-label, -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - padding-top: 7px; - margin-top: 0; - margin-bottom: 0; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 27px; -} -.form-horizontal .form-group { - margin-right: -15px; - margin-left: -15px; -} -.form-horizontal .form-control-static { - padding-top: 7px; -} -@media (min-width: 768px) { - .form-horizontal .control-label { - text-align: right; - } -} -.form-horizontal .has-feedback .form-control-feedback { - top: 0; - right: 15px; -} -.btn { - display: inline-block; - padding: 6px 12px; - margin-bottom: 0; - font-size: 14px; - font-weight: normal; - line-height: 1.42857143; - text-align: center; - white-space: nowrap; - vertical-align: middle; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus { - color: #333; - text-decoration: none; -} -.btn:active, -.btn.active { - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - pointer-events: none; - cursor: not-allowed; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; - opacity: .65; -} -.btn.default { - color: #333333; - text-shadow: none; - background-color: #e5e5e5; - height:12px; -} -.btn.default:hover, -.btn.default:focus, -.btn.default:active, -.btn.default.active, -.btn.default[disabled], -.btn.default.disabled { - color: #333333; - background-color: #d8d8d8 !important; - outline: none !important; -} - -.btn-default:hover, -.btn-default:focus, -.btn-default:active, -.btn-default.active, -.open .dropdown-toggle.btn-default { - color: #333; - background-color: #ebebeb; - border-color: #adadad; -} -.btn-default:active, -.btn-default.active, -.open .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #fff; - border-color: #ccc; -} -.btn-default .badge { - color: #fff; - background-color: #333; -} -.btn-primary { - color: #fff; - background-color: #428bca; - border-color: #357ebd; -} -.btn-primary:hover, -.btn-primary:focus, -.btn-primary:active, -.btn-primary.active, -.open .dropdown-toggle.btn-primary { - color: #fff; - background-color: #3276b1; - border-color: #285e8e; -} -.btn-primary:active, -.btn-primary.active, -.open .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #428bca; - border-color: #357ebd; -} -.btn-primary .badge { - color: #428bca; - background-color: #fff; -} -.btn-success { - color: #fff; - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success:hover, -.btn-success:focus, -.btn-success:active, -.btn-success.active, -.open .dropdown-toggle.btn-success { - color: #fff; - background-color: #47a447; - border-color: #398439; -} -.btn-success:active, -.btn-success.active, -.open .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success .badge { - color: #5cb85c; - background-color: #fff; -} -.btn-info { - color: #fff; - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info:hover, -.btn-info:focus, -.btn-info:active, -.btn-info.active, -.open .dropdown-toggle.btn-info { - color: #fff; - background-color: #39b3d7; - border-color: #269abc; -} -.btn-info:active, -.btn-info.active, -.open .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info .badge { - color: #5bc0de; - background-color: #fff; -} -.btn-warning { - color: #fff; - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning:hover, -.btn-warning:focus, -.btn-warning:active, -.btn-warning.active, -.open .dropdown-toggle.btn-warning { - color: #fff; - background-color: #ed9c28; - border-color: #d58512; -} -.btn-warning:active, -.btn-warning.active, -.open .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning .badge { - color: #f0ad4e; - background-color: #fff; -} -.btn-danger { - color: #fff; - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger:hover, -.btn-danger:focus, -.btn-danger:active, -.btn-danger.active, -.open .dropdown-toggle.btn-danger { - color: #fff; - background-color: #d2322d; - border-color: #ac2925; -} -.btn-danger:active, -.btn-danger.active, -.open .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger .badge { - color: #d9534f; - background-color: #fff; -} -.btn-link { - font-weight: normal; - color: #428bca; - cursor: pointer; - border-radius: 0; -} -.btn-link, -.btn-link:active, -.btn-link[disabled], -fieldset[disabled] .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-link, -.btn-link:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #2a6496; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #999; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-sm { - padding: 2px 10px 8px 10px; -} -.btn-xs, -.btn-group-xs > .btn { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-block { - display: block; - width: 100%; - padding-right: 0; - padding-left: 0; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.fade { - opacity: 0; - -webkit-transition: opacity .15s linear; - transition: opacity .15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - display: none; -} -.collapse.in { - display: block; -} -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition: height .35s ease; - transition: height .35s ease; -} -@font-face { - font-family: 'Glyphicons Halflings'; - - src: url('../fonts/glyphicons-halflings-regular.eot'); - src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); -} -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.glyphicon-asterisk:before { - content: "\2a"; -} -.glyphicon-plus:before { - content: "\2b"; -} -.glyphicon-euro:before { - content: "\20ac"; -} -.glyphicon-minus:before { - content: "\2212"; -} -.glyphicon-cloud:before { - content: "\2601"; -} -.glyphicon-envelope:before { - content: "\2709"; -} -.glyphicon-pencil:before { - content: "\270f"; -} -.glyphicon-glass:before { - content: "\e001"; -} -.glyphicon-music:before { - content: "\e002"; -} -.glyphicon-search:before { - content: "\e003"; -} -.glyphicon-heart:before { - content: "\e005"; -} -.glyphicon-star:before { - content: "\e006"; -} -.glyphicon-star-empty:before { - content: "\e007"; -} -.glyphicon-user:before { - content: "\e008"; -} -.glyphicon-film:before { - content: "\e009"; -} -.glyphicon-th-large:before { - content: "\e010"; -} -.glyphicon-th:before { - content: "\e011"; -} -.glyphicon-th-list:before { - content: "\e012"; -} -.glyphicon-ok:before { - content: "\e013"; -} -.glyphicon-remove:before { - content: "\e014"; -} -.glyphicon-zoom-in:before { - content: "\e015"; -} -.glyphicon-zoom-out:before { - content: "\e016"; -} -.glyphicon-off:before { - content: "\e017"; -} -.glyphicon-signal:before { - content: "\e018"; -} -.glyphicon-cog:before { - content: "\e019"; -} -.glyphicon-trash:before { - content: "\e020"; -} -.glyphicon-home:before { - content: "\e021"; -} -.glyphicon-file:before { - content: "\e022"; -} -.glyphicon-time:before { - content: "\e023"; -} -.glyphicon-road:before { - content: "\e024"; -} -.glyphicon-download-alt:before { - content: "\e025"; -} -.glyphicon-download:before { - content: "\e026"; -} -.glyphicon-upload:before { - content: "\e027"; -} -.glyphicon-inbox:before { - content: "\e028"; -} -.glyphicon-play-circle:before { - content: "\e029"; -} -.glyphicon-repeat:before { - content: "\e030"; -} -.glyphicon-refresh:before { - content: "\e031"; -} -.glyphicon-list-alt:before { - content: "\e032"; -} -.glyphicon-lock:before { - content: "\e033"; -} -.glyphicon-flag:before { - content: "\e034"; -} -.glyphicon-headphones:before { - content: "\e035"; -} -.glyphicon-volume-off:before { - content: "\e036"; -} -.glyphicon-volume-down:before { - content: "\e037"; -} -.glyphicon-volume-up:before { - content: "\e038"; -} -.glyphicon-qrcode:before { - content: "\e039"; -} -.glyphicon-barcode:before { - content: "\e040"; -} -.glyphicon-tag:before { - content: "\e041"; -} -.glyphicon-tags:before { - content: "\e042"; -} -.glyphicon-book:before { - content: "\e043"; -} -.glyphicon-bookmark:before { - content: "\e044"; -} -.glyphicon-print:before { - content: "\e045"; -} -.glyphicon-camera:before { - content: "\e046"; -} -.glyphicon-font:before { - content: "\e047"; -} -.glyphicon-bold:before { - content: "\e048"; -} -.glyphicon-italic:before { - content: "\e049"; -} -.glyphicon-text-height:before { - content: "\e050"; -} -.glyphicon-text-width:before { - content: "\e051"; -} -.glyphicon-align-left:before { - content: "\e052"; -} -.glyphicon-align-center:before { - content: "\e053"; -} -.glyphicon-align-right:before { - content: "\e054"; -} -.glyphicon-align-justify:before { - content: "\e055"; -} -.glyphicon-list:before { - content: "\e056"; -} -.glyphicon-indent-left:before { - content: "\e057"; -} -.glyphicon-indent-right:before { - content: "\e058"; -} -.glyphicon-facetime-video:before { - content: "\e059"; -} -.glyphicon-picture:before { - content: "\e060"; -} -.glyphicon-map-marker:before { - content: "\e062"; -} -.glyphicon-adjust:before { - content: "\e063"; -} -.glyphicon-tint:before { - content: "\e064"; -} -.glyphicon-edit:before { - content: "\e065"; -} -.glyphicon-share:before { - content: "\e066"; -} -.glyphicon-check:before { - content: "\e067"; -} -.glyphicon-move:before { - content: "\e068"; -} -.glyphicon-step-backward:before { - content: "\e069"; -} -.glyphicon-fast-backward:before { - content: "\e070"; -} -.glyphicon-backward:before { - content: "\e071"; -} -.glyphicon-play:before { - content: "\e072"; -} -.glyphicon-pause:before { - content: "\e073"; -} -.glyphicon-stop:before { - content: "\e074"; -} -.glyphicon-forward:before { - content: "\e075"; -} -.glyphicon-fast-forward:before { - content: "\e076"; -} -.glyphicon-step-forward:before { - content: "\e077"; -} -.glyphicon-eject:before { - content: "\e078"; -} -.glyphicon-chevron-left:before { - content: "\e079"; -} -.glyphicon-chevron-right:before { - content: "\e080"; -} -.glyphicon-plus-sign:before { - content: "\e081"; -} -.glyphicon-minus-sign:before { - content: "\e082"; -} -.glyphicon-remove-sign:before { - content: "\e083"; -} -.glyphicon-ok-sign:before { - content: "\e084"; -} -.glyphicon-question-sign:before { - content: "\e085"; -} -.glyphicon-info-sign:before { - content: "\e086"; -} -.glyphicon-screenshot:before { - content: "\e087"; -} -.glyphicon-remove-circle:before { - content: "\e088"; -} -.glyphicon-ok-circle:before { - content: "\e089"; -} -.glyphicon-ban-circle:before { - content: "\e090"; -} -.glyphicon-arrow-left:before { - content: "\e091"; -} -.glyphicon-arrow-right:before { - content: "\e092"; -} -.glyphicon-arrow-up:before { - content: "\e093"; -} -.glyphicon-arrow-down:before { - content: "\e094"; -} -.glyphicon-share-alt:before { - content: "\e095"; -} -.glyphicon-resize-full:before { - content: "\e096"; -} -.glyphicon-resize-small:before { - content: "\e097"; -} -.glyphicon-exclamation-sign:before { - content: "\e101"; -} -.glyphicon-gift:before { - content: "\e102"; -} -.glyphicon-leaf:before { - content: "\e103"; -} -.glyphicon-fire:before { - content: "\e104"; -} -.glyphicon-eye-open:before { - content: "\e105"; -} -.glyphicon-eye-close:before { - content: "\e106"; -} -.glyphicon-warning-sign:before { - content: "\e107"; -} -.glyphicon-plane:before { - content: "\e108"; -} -.glyphicon-calendar:before { - content: "\e109"; -} -.glyphicon-random:before { - content: "\e110"; -} -.glyphicon-comment:before { - content: "\e111"; -} -.glyphicon-magnet:before { - content: "\e112"; -} -.glyphicon-chevron-up:before { - content: "\e113"; -} -.glyphicon-chevron-down:before { - content: "\e114"; -} -.glyphicon-retweet:before { - content: "\e115"; -} -.glyphicon-shopping-cart:before { - content: "\e116"; -} -.glyphicon-folder-close:before { - content: "\e117"; -} -.glyphicon-folder-open:before { - content: "\e118"; -} -.glyphicon-resize-vertical:before { - content: "\e119"; -} -.glyphicon-resize-horizontal:before { - content: "\e120"; -} -.glyphicon-hdd:before { - content: "\e121"; -} -.glyphicon-bullhorn:before { - content: "\e122"; -} -.glyphicon-bell:before { - content: "\e123"; -} -.glyphicon-certificate:before { - content: "\e124"; -} -.glyphicon-thumbs-up:before { - content: "\e125"; -} -.glyphicon-thumbs-down:before { - content: "\e126"; -} -.glyphicon-hand-right:before { - content: "\e127"; -} -.glyphicon-hand-left:before { - content: "\e128"; -} -.glyphicon-hand-up:before { - content: "\e129"; -} -.glyphicon-hand-down:before { - content: "\e130"; -} -.glyphicon-circle-arrow-right:before { - content: "\e131"; -} -.glyphicon-circle-arrow-left:before { - content: "\e132"; -} -.glyphicon-circle-arrow-up:before { - content: "\e133"; -} -.glyphicon-circle-arrow-down:before { - content: "\e134"; -} -.glyphicon-globe:before { - content: "\e135"; -} -.glyphicon-wrench:before { - content: "\e136"; -} -.glyphicon-tasks:before { - content: "\e137"; -} -.glyphicon-filter:before { - content: "\e138"; -} -.glyphicon-briefcase:before { - content: "\e139"; -} -.glyphicon-fullscreen:before { - content: "\e140"; -} -.glyphicon-dashboard:before { - content: "\e141"; -} -.glyphicon-paperclip:before { - content: "\e142"; -} -.glyphicon-heart-empty:before { - content: "\e143"; -} -.glyphicon-link:before { - content: "\e144"; -} -.glyphicon-phone:before { - content: "\e145"; -} -.glyphicon-pushpin:before { - content: "\e146"; -} -.glyphicon-usd:before { - content: "\e148"; -} -.glyphicon-gbp:before { - content: "\e149"; -} -.glyphicon-sort:before { - content: "\e150"; -} -.glyphicon-sort-by-alphabet:before { - content: "\e151"; -} -.glyphicon-sort-by-alphabet-alt:before { - content: "\e152"; -} -.glyphicon-sort-by-order:before { - content: "\e153"; -} -.glyphicon-sort-by-order-alt:before { - content: "\e154"; -} -.glyphicon-sort-by-attributes:before { - content: "\e155"; -} -.glyphicon-sort-by-attributes-alt:before { - content: "\e156"; -} -.glyphicon-unchecked:before { - content: "\e157"; -} -.glyphicon-expand:before { - content: "\e158"; -} -.glyphicon-collapse-down:before { - content: "\e159"; -} -.glyphicon-collapse-up:before { - content: "\e160"; -} -.glyphicon-log-in:before { - content: "\e161"; -} -.glyphicon-flash:before { - content: "\e162"; -} -.glyphicon-log-out:before { - content: "\e163"; -} -.glyphicon-new-window:before { - content: "\e164"; -} -.glyphicon-record:before { - content: "\e165"; -} -.glyphicon-save:before { - content: "\e166"; -} -.glyphicon-open:before { - content: "\e167"; -} -.glyphicon-saved:before { - content: "\e168"; -} -.glyphicon-import:before { - content: "\e169"; -} -.glyphicon-export:before { - content: "\e170"; -} -.glyphicon-send:before { - content: "\e171"; -} -.glyphicon-floppy-disk:before { - content: "\e172"; -} -.glyphicon-floppy-saved:before { - content: "\e173"; -} -.glyphicon-floppy-remove:before { - content: "\e174"; -} -.glyphicon-floppy-save:before { - content: "\e175"; -} -.glyphicon-floppy-open:before { - content: "\e176"; -} -.glyphicon-credit-card:before { - content: "\e177"; -} -.glyphicon-transfer:before { - content: "\e178"; -} -.glyphicon-cutlery:before { - content: "\e179"; -} -.glyphicon-header:before { - content: "\e180"; -} -.glyphicon-compressed:before { - content: "\e181"; -} -.glyphicon-earphone:before { - content: "\e182"; -} -.glyphicon-phone-alt:before { - content: "\e183"; -} -.glyphicon-tower:before { - content: "\e184"; -} -.glyphicon-stats:before { - content: "\e185"; -} -.glyphicon-sd-video:before { - content: "\e186"; -} -.glyphicon-hd-video:before { - content: "\e187"; -} -.glyphicon-subtitles:before { - content: "\e188"; -} -.glyphicon-sound-stereo:before { - content: "\e189"; -} -.glyphicon-sound-dolby:before { - content: "\e190"; -} -.glyphicon-sound-5-1:before { - content: "\e191"; -} -.glyphicon-sound-6-1:before { - content: "\e192"; -} -.glyphicon-sound-7-1:before { - content: "\e193"; -} -.glyphicon-copyright-mark:before { - content: "\e194"; -} -.glyphicon-registration-mark:before { - content: "\e195"; -} -.glyphicon-cloud-download:before { - content: "\e197"; -} -.glyphicon-cloud-upload:before { - content: "\e198"; -} -.glyphicon-tree-conifer:before { - content: "\e199"; -} -.glyphicon-tree-deciduous:before { - content: "\e200"; -} -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px solid; - border-right: 4px solid transparent; - border-left: 4px solid transparent; -} -.dropdown { - position: relative; -} -.dropdown-toggle:focus { - outline: 0; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - font-size: 14px; - list-style: none; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); - box-shadow: 0 6px 12px rgba(0, 0, 0, .175); -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.42857143; - color: #333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - color: #262626; - text-decoration: none; - background-color: #f5f5f5; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - background-color: #428bca; - outline: 0; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #999; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - cursor: not-allowed; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.open > .dropdown-menu { - display: block; -} -.open > a { - outline: 0; -} -.dropdown-menu-right { - right: 0; - left: auto; -} -.dropdown-menu-left { - right: auto; - left: 0; -} -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.42857143; - color: #999; -} -.dropdown-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - content: ""; - border-top: 0; - border-bottom: 4px solid; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 1px; -} -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - right: 0; - left: auto; - } - .navbar-right .dropdown-menu-left { - right: auto; - left: 0; - } -} -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - z-index: 2; -} -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus { - outline: none; -} -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: -1px; -} -.btn-toolbar { - margin-left: -5px; -} -.btn-toolbar .btn-group, -.btn-toolbar .input-group { - float: left; -} -.btn-toolbar > .btn, -.btn-toolbar > .btn-group, -.btn-toolbar > .input-group { - margin-left: 5px; -} -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} -.btn-group > .btn:first-child { - margin-left: 0; -} -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group > .btn-group { - float: left; -} -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group > .btn-group:first-child > .btn:last-child, -.btn-group > .btn-group:first-child > .dropdown-toggle { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn-group:last-child > .btn:first-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-right: 8px; - padding-left: 8px; -} -.btn-group > .btn-lg + .dropdown-toggle { - padding-right: 12px; - padding-left: 12px; -} -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn-group.open .dropdown-toggle.btn-link { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn .caret { - margin-left: 0; -} -.btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; -} -.dropup .btn-lg .caret { - border-width: 0 5px 5px; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group, -.btn-group-vertical > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; -} -.btn-group-vertical > .btn-group > .btn { - float: none; -} -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; -} -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; -} -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-left-radius: 4px; -} -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; -} -.btn-group-justified > .btn, -.btn-group-justified > .btn-group { - display: table-cell; - float: none; - width: 1%; -} -.btn-group-justified > .btn-group .btn { - width: 100%; -} -[data-toggle="buttons"] > .btn > input[type="radio"], -[data-toggle="buttons"] > .btn > input[type="checkbox"] { - display: none; -} -.input-group { - position: relative; - display: table; - border-collapse: separate; -} -.input-group[class*="col-"] { - float: none; - padding-right: 0; - padding-left: 0; -} -.input-group .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - margin-bottom: 0; -} -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} -select.input-group-lg > .form-control, -select.input-group-lg > .input-group-addon, -select.input-group-lg > .input-group-btn > .btn { - height: 46px; - line-height: 46px; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].input-group-lg > .input-group-btn > .btn { - height: auto; -} -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-group-sm > .form-control, -select.input-group-sm > .input-group-addon, -select.input-group-sm > .input-group-btn > .btn { - height: 30px; - line-height: 30px; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; -} -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; -} -.input-group-addon { - padding: 6px 12px; - font-size: 14px; - font-weight: normal; - line-height: 1; - color: #555; - text-align: center; - background-color: #eee; - border: 1px solid #ccc; - border-radius: 4px; -} -.input-group-addon.input-sm { - padding: 5px 10px; - font-size: 12px; - border-radius: 3px; -} -.input-group-addon.input-lg { - padding: 10px 16px; - font-size: 18px; - border-radius: 6px; -} -.input-group-addon input[type="radio"], -.input-group-addon input[type="checkbox"] { - margin-top: 0; -} -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group > .btn, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-group-addon:first-child { - border-right: 0; -} -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.input-group-addon:last-child { - border-left: 0; -} -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; -} -.input-group-btn > .btn { - position: relative; -} -.input-group-btn > .btn + .btn { - margin-left: -1px; -} -.input-group-btn > .btn:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - z-index: 2; -} -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group { - margin-right: -1px; -} -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group { - margin-left: -1px; -} -.nav { - padding-left: 0; - margin-bottom: 0; - list-style: none; -} -.nav > li { - position: relative; - display: block; -} -.nav > li > a { - position: relative; - display: block; - padding: 10px 15px; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; -} -.nav > li.disabled > a { - color: #999; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #999; - text-decoration: none; - cursor: not-allowed; - background-color: transparent; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #eee; - border-color: #428bca; -} -.nav .nav-divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.nav > li > a > img { - max-width: none; -} -.nav-tabs { - border-bottom: 1px solid #ddd; -} -.nav-tabs > li { - float: left; - margin-bottom: -1px; -} -.nav-tabs > li > a { - margin-right: 2px; - line-height: 1.42857143; - border: 1px solid transparent; - border-radius: 4px 4px 0 0; -} -.nav-tabs > li > a:hover { - border-color: #eee #eee #ddd; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - color: #555; - cursor: default; - background-color: #fff; - border: 1px solid #ddd; - border-bottom-color: transparent; -} -.nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; -} -.nav-tabs.nav-justified > li { - float: none; -} -.nav-tabs.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-tabs.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-tabs.nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.nav-pills > li { - float: left; -} -.nav-pills > li > a { - border-radius: 4px; -} -.nav-pills > li + li { - margin-left: 2px; -} -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - color: #fff; - background-color: #428bca; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; -} -.nav-justified { - width: 100%; -} -.nav-justified > li { - float: none; -} -.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs-justified { - border-bottom: 0; -} -.nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs-justified > .active > a, -.nav-tabs-justified > .active > a:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.tab-content > .tab-pane { - display: none; -} -.tab-content > .active { - display: block; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar { - position: relative; - min-height: 50px; - margin-bottom: 20px; - border: 1px solid transparent; -} -@media (min-width: 768px) { - .navbar { - border-radius: 4px; - } -} -@media (min-width: 768px) { - .navbar-header { - float: left; - } -} -.navbar-collapse { - max-height: 340px; - padding-right: 15px; - padding-left: 15px; - overflow-x: visible; - -webkit-overflow-scrolling: touch; - border-top: 1px solid transparent; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); -} -.navbar-collapse.in { - overflow-y: auto; -} -@media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - box-shadow: none; - } - .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - } - .navbar-collapse.in { - overflow-y: visible; - } - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-right: 0; - padding-left: 0; - } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; -} -@media (min-width: 768px) { - .navbar-static-top { - border-radius: 0; - } -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; - } -} -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; - border-width: 1px 0 0; -} -.navbar-brand { - float: left; - height: 50px; - padding: 15px 15px; - font-size: 18px; - line-height: 20px; -} -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none; -} -@media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-left: -15px; - } -} -.navbar-toggle { - position: relative; - float: right; - padding: 9px 10px; - margin-top: 8px; - margin-right: 15px; - margin-bottom: 8px; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.navbar-toggle:focus { - outline: none; -} -.navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; -} -.navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; -} -@media (min-width: 768px) { - .navbar-toggle { - display: none; - } -} -.navbar-nav { - margin: 7.5px -15px; -} -.navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 20px; -} -@media (max-width: 767px) { - .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - box-shadow: none; - } - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} -@media (min-width: 768px) { - .navbar-nav { - float: left; - margin: 0; - } - .navbar-nav > li { - float: left; - } - .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - } - .navbar-nav.navbar-right:last-child { - margin-right: -15px; - } -} -@media (min-width: 768px) { - .navbar-left { - float: left !important; - } - .navbar-right { - float: right !important; - } -} -.navbar-form { - padding: 10px 15px; - margin-top: 8px; - margin-right: -15px; - margin-bottom: 8px; - margin-left: -15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); -} -@media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - padding-left: 0; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - float: none; - margin-left: 0; - } - .navbar-form .has-feedback .form-control-feedback { - top: 0; - } -} -@media (max-width: 767px) { - .navbar-form .form-group { - margin-bottom: 5px; - } -} -@media (min-width: 768px) { - .navbar-form { - width: auto; - padding-top: 0; - padding-bottom: 0; - margin-right: 0; - margin-left: 0; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-form.navbar-right:last-child { - margin-right: -15px; - } -} -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.navbar-btn { - margin-top: 8px; - margin-bottom: 8px; -} -.navbar-btn.btn-sm { - margin-top: 10px; - margin-bottom: 10px; -} -.navbar-btn.btn-xs { - margin-top: 14px; - margin-bottom: 14px; -} -.navbar-text { - margin-top: 15px; - margin-bottom: 15px; -} -@media (min-width: 768px) { - .navbar-text { - float: left; - margin-right: 15px; - margin-left: 15px; - } - .navbar-text.navbar-right:last-child { - margin-right: 0; - } -} -.navbar-default { - background-color: #f8f8f8; - border-color: #e7e7e7; -} -.navbar-default .navbar-brand { - color: #777; -} -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #5e5e5e; - background-color: transparent; -} -.navbar-default .navbar-text { - color: #777; -} -.navbar-default .navbar-nav > li > a { - color: #777; -} -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #333; - background-color: transparent; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #555; - background-color: #e7e7e7; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #ccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: #ddd; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color: #ddd; -} -.navbar-default .navbar-toggle .icon-bar { - background-color: #888; -} -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #e7e7e7; -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - color: #555; - background-color: #e7e7e7; -} -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #777; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #555; - background-color: #e7e7e7; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #ccc; - background-color: transparent; - } -} -.navbar-default .navbar-link { - color: #777; -} -.navbar-default .navbar-link:hover { - color: #333; -} -.navbar-inverse { - background-color: #222; - border-color: #080808; -} -.navbar-inverse .navbar-brand { - color: #999; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-text { - color: #999; -} -.navbar-inverse .navbar-nav > li > a { - color: #999; -} -.navbar-inverse .navbar-nav > li > a:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #fff; - background-color: #080808; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: #333; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: #333; -} -.navbar-inverse .navbar-toggle .icon-bar { - background-color: #fff; -} -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: #101010; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .open > a:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - color: #fff; - background-color: #080808; -} -@media (max-width: 767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #999; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #fff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444; - background-color: transparent; - } -} -.navbar-inverse .navbar-link { - color: #999; -} -.navbar-inverse .navbar-link:hover { - color: #fff; -} -.breadcrumb { - padding: 8px 15px; - margin-bottom: 20px; - list-style: none; - background-color: #f5f5f5; - border-radius: 4px; -} -.breadcrumb > li { - display: inline-block; -} -.breadcrumb > li + li:before { - padding: 0 5px; - color: #ccc; - content: "/\00a0"; -} -.breadcrumb > .active { - color: #999; -} -.pagination { - display: inline-block; - padding-left: 0; - margin: 20px 0; - border-radius: 4px; -} -.pagination > li { - display: inline; -} -.pagination > li > a, -.pagination > li > span { - position: relative; - float: left; - padding: 6px 12px; - margin-left: -1px; - line-height: 1.42857143; - color: #428bca; - text-decoration: none; - background-color: #fff; - border: 1px solid #ddd; -} -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} -.pagination > li:last-child > a, -.pagination > li:last-child > span { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - color: #2a6496; - background-color: #eee; - border-color: #ddd; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 2; - color: #fff; - cursor: default; - background-color: #428bca; - border-color: #428bca; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - color: #999; - cursor: not-allowed; - background-color: #fff; - border-color: #ddd; -} -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 10px 16px; - font-size: 18px; -} -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-top-left-radius: 6px; - border-bottom-left-radius: 6px; -} -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-top-right-radius: 6px; - border-bottom-right-radius: 6px; -} -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 5px 10px; - font-size: 12px; -} -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; -} -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; -} -.pager { - padding-left: 0; - margin: 20px 0; - text-align: center; - list-style: none; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 15px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #eee; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #999; - cursor: not-allowed; - background-color: #fff; -} -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} -.label[href]:hover, -.label[href]:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label:empty { - display: none; -} -.btn .label { - position: relative; - top: -1px; -} -.label-default { - background-color: #999; -} -.label-default[href]:hover, -.label-default[href]:focus { - background-color: #808080; -} -.label-primary { - background-color: #428bca; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #3071a9; -} -.label-success { - background-color: #5cb85c; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #449d44; -} -.label-info { - background-color: #5bc0de; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #31b0d5; -} -.label-warning { - background-color: #f0ad4e; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #ec971f; -} -.label-danger { - background-color: #d9534f; -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #c9302c; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - background-color: #999; - border-radius: 10px; -} -.badge:empty { - display: none; -} -.btn .badge { - position: relative; - top: -1px; -} -.btn-xs .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -a.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #428bca; - background-color: #fff; -} -.nav-pills > li > a > .badge { - margin-left: 3px; -} -.jumbotron { - padding: 30px; - margin-bottom: 30px; - color: inherit; - background-color: #eee; -} -.jumbotron h1, -.jumbotron .h1 { - color: inherit; -} -.jumbotron p { - margin-bottom: 15px; - font-size: 21px; - font-weight: 200; -} -.container .jumbotron { - border-radius: 6px; -} -.jumbotron .container { - max-width: 100%; -} -@media screen and (min-width: 768px) { - .jumbotron { - padding-top: 48px; - padding-bottom: 48px; - } - .container .jumbotron { - padding-right: 60px; - padding-left: 60px; - } - .jumbotron h1, - .jumbotron .h1 { - font-size: 63px; - } -} -.thumbnail { - display: block; - padding: 4px; - margin-bottom: 20px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; -} -.thumbnail > img, -.thumbnail a > img { - margin-right: auto; - margin-left: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #428bca; -} -.thumbnail .caption { - padding: 9px; - color: #333; -} -.alert { - padding: 15px; - margin-bottom: 20px; - border: 1px solid transparent; - border-radius: 4px; -} -.alert h4 { - margin-top: 0; - color: inherit; -} -.alert .alert-link { - font-weight: bold; -} -.alert > p, -.alert > ul { - margin-bottom: 0; -} -.alert > p + p { - margin-top: 5px; -} -.alert-dismissable { - padding-right: 35px; -} -.alert-dismissable .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; -} -.alert-success { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.alert-success hr { - border-top-color: #c9e2b3; -} -.alert-success .alert-link { - color: #2b542c; -} -.alert-info { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.alert-info hr { - border-top-color: #a6e1ec; -} -.alert-info .alert-link { - color: #245269; -} -.alert-warning { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.alert-warning hr { - border-top-color: #f7e1b5; -} -.alert-warning .alert-link { - color: #66512c; -} -.alert-danger { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.alert-danger hr { - border-top-color: #e4b9c0; -} -.alert-danger .alert-link { - color: #843534; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - height: 20px; - margin-bottom: 20px; - overflow: hidden; - background-color: #f5f5f5; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); -} -.progress-bar { - float: left; - width: 0; - height: 100%; - font-size: 12px; - line-height: 20px; - color: #fff; - text-align: center; - background-color: #428bca; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - -webkit-transition: width .6s ease; - transition: width .6s ease; -} -.progress-striped .progress-bar { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-size: 40px 40px; -} -.progress.active .progress-bar { - -webkit-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-bar-success { - background-color: #5cb85c; -} -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-info { - background-color: #5bc0de; -} -.progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-warning { - background-color: #f0ad4e; -} -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-danger { - background-color: #d9534f; -} -.progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.media, -.media-body { - overflow: hidden; - zoom: 1; -} -.media, -.media .media { - margin-top: 15px; -} -.media:first-child { - margin-top: 0; -} -.media-object { - display: block; -} -.media-heading { - margin: 0 0 5px; -} -.media > .pull-left { - margin-right: 10px; -} -.media > .pull-right { - margin-left: 10px; -} -.media-list { - padding-left: 0; - list-style: none; -} -.list-group { - padding-left: 0; - margin-bottom: 20px; -} -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid #ddd; -} -.list-group-item:first-child { - border-top-left-radius: 4px; - border-top-right-radius: 4px; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -.list-group-item > .badge { - float: right; -} -.list-group-item > .badge + .badge { - margin-right: 5px; -} -a.list-group-item { - color: #555; -} -a.list-group-item .list-group-item-heading { - color: #333; -} -a.list-group-item:hover, -a.list-group-item:focus { - text-decoration: none; - background-color: #f5f5f5; -} -a.list-group-item.active, -a.list-group-item.active:hover, -a.list-group-item.active:focus { - z-index: 2; - color: #fff; - background-color: #428bca; - border-color: #428bca; -} -a.list-group-item.active .list-group-item-heading, -a.list-group-item.active:hover .list-group-item-heading, -a.list-group-item.active:focus .list-group-item-heading { - color: inherit; -} -a.list-group-item.active .list-group-item-text, -a.list-group-item.active:hover .list-group-item-text, -a.list-group-item.active:focus .list-group-item-text { - color: #e1edf7; -} -.list-group-item-success { - color: #3c763d; - background-color: #dff0d8; -} -a.list-group-item-success { - color: #3c763d; -} -a.list-group-item-success .list-group-item-heading { - color: inherit; -} -a.list-group-item-success:hover, -a.list-group-item-success:focus { - color: #3c763d; - background-color: #d0e9c6; -} -a.list-group-item-success.active, -a.list-group-item-success.active:hover, -a.list-group-item-success.active:focus { - color: #fff; - background-color: #3c763d; - border-color: #3c763d; -} -.list-group-item-info { - color: #31708f; - background-color: #d9edf7; -} -a.list-group-item-info { - color: #31708f; -} -a.list-group-item-info .list-group-item-heading { - color: inherit; -} -a.list-group-item-info:hover, -a.list-group-item-info:focus { - color: #31708f; - background-color: #c4e3f3; -} -a.list-group-item-info.active, -a.list-group-item-info.active:hover, -a.list-group-item-info.active:focus { - color: #fff; - background-color: #31708f; - border-color: #31708f; -} -.list-group-item-warning { - color: #8a6d3b; - background-color: #fcf8e3; -} -a.list-group-item-warning { - color: #8a6d3b; -} -a.list-group-item-warning .list-group-item-heading { - color: inherit; -} -a.list-group-item-warning:hover, -a.list-group-item-warning:focus { - color: #8a6d3b; - background-color: #faf2cc; -} -a.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus { - color: #fff; - background-color: #8a6d3b; - border-color: #8a6d3b; -} -.list-group-item-danger { - color: #a94442; - background-color: #f2dede; -} -a.list-group-item-danger { - color: #a94442; -} -a.list-group-item-danger .list-group-item-heading { - color: inherit; -} -a.list-group-item-danger:hover, -a.list-group-item-danger:focus { - color: #a94442; - background-color: #ebcccc; -} -a.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus { - color: #fff; - background-color: #a94442; - border-color: #a94442; -} -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} -.panel { - margin-bottom: 20px; - background-color: #fff; - border: 1px solid transparent; - border-radius: 4px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); - box-shadow: 0 1px 1px rgba(0, 0, 0, .05); -} -.panel-body { - padding: 15px; -} -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel-heading > .dropdown .dropdown-toggle { - color: inherit; -} -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 16px; - color: inherit; -} -.panel-title > a { - color: inherit; -} -.panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .list-group { - margin-bottom: 0; -} -.panel > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; -} -.panel > .list-group:first-child .list-group-item:first-child { - border-top: 0; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .list-group:last-child .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} -.panel > .table, -.panel > .table-responsive > .table { - margin-bottom: 0; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 3px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 3px; -} -.panel > .panel-body + .table, -.panel > .panel-body + .table-responsive { - border-top: 1px solid #ddd; -} -.panel > .table > tbody:first-child > tr:first-child th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; -} -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; -} -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 0; -} -.panel > .table-responsive { - margin-bottom: 0; - border: 0; -} -.panel-group { - margin-bottom: 20px; -} -.panel-group .panel { - margin-bottom: 0; - overflow: hidden; - border-radius: 4px; -} -.panel-group .panel + .panel { - margin-top: 5px; -} -.panel-group .panel-heading { - border-bottom: 0; -} -.panel-group .panel-heading + .panel-collapse .panel-body { - border-top: 1px solid #ddd; -} -.panel-group .panel-footer { - border-top: 0; -} -.panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #ddd; -} -.panel-default { - border-color: #ddd; -} -.panel-default > .panel-heading { - color: #333; - background-color: #f5f5f5; - border-color: #ddd; -} -.panel-default > .panel-heading + .panel-collapse .panel-body { - border-top-color: #ddd; -} -.panel-default > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #ddd; -} -.panel-primary { - border-color: #428bca; -} -.panel-primary > .panel-heading { - color: #fff; - background-color: #428bca; - border-color: #428bca; -} -.panel-primary > .panel-heading + .panel-collapse .panel-body { - border-top-color: #428bca; -} -.panel-primary > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #428bca; -} -.panel-success { - border-color: #d6e9c6; -} -.panel-success > .panel-heading { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.panel-success > .panel-heading + .panel-collapse .panel-body { - border-top-color: #d6e9c6; -} -.panel-success > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #d6e9c6; -} -.panel-info { - border-color: #bce8f1; -} -.panel-info > .panel-heading { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.panel-info > .panel-heading + .panel-collapse .panel-body { - border-top-color: #bce8f1; -} -.panel-info > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #bce8f1; -} -.panel-warning { - border-color: #faebcc; -} -.panel-warning > .panel-heading { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.panel-warning > .panel-heading + .panel-collapse .panel-body { - border-top-color: #faebcc; -} -.panel-warning > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #faebcc; -} -.panel-danger { - border-color: #ebccd1; -} -.panel-danger > .panel-heading { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.panel-danger > .panel-heading + .panel-collapse .panel-body { - border-top-color: #ebccd1; -} -.panel-danger > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #ebccd1; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, .15); -} -.well-lg { - padding: 24px; - border-radius: 6px; -} -.well-sm { - padding: 9px; - border-radius: 3px; -} -.close { - float: right; - font-size: 21px; - font-weight: bold; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - filter: alpha(opacity=20); - opacity: .2; -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - filter: alpha(opacity=50); - opacity: .5; -} -button.close { - -webkit-appearance: none; - padding: 0; - cursor: pointer; - background: transparent; - border: 0; -} -.modal-open { - overflow: hidden; -} -.modal { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1050; - display: none; - overflow: auto; - overflow-y: scroll; - -webkit-overflow-scrolling: touch; - outline: 0; -} -.modal.fade .modal-dialog { - -webkit-transition: -webkit-transform .3s ease-out; - -moz-transition: -moz-transform .3s ease-out; - -o-transition: -o-transform .3s ease-out; - transition: transform .3s ease-out; - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - transform: translate(0, -25%); -} -.modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - transform: translate(0, 0); -} -.modal-dialog { - position: relative; - width: auto; - margin: 10px; -} -.modal-content { - position: relative; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - outline: none; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); - box-shadow: 0 3px 9px rgba(0, 0, 0, .5); -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - /*background-color: #000;*/ - background-color: #fff; -} -.modal-backdrop.fade { - filter: alpha(opacity=0); - opacity: 0; -} -.modal-backdrop.in { - filter: alpha(opacity=50); - opacity: .5; -} -.modal-header { - min-height: 16.42857143px; - padding: 15px; - border-bottom: 1px solid #e5e5e5; -} -.modal-header .close { - margin-top: -2px; -} -.modal-title { - margin: 0; - line-height: 1.42857143; -} -.modal-body { - position: relative; - padding: 20px; -} -.modal-footer { - padding: 19px 20px 20px; - margin-top: 15px; - text-align: right; - border-top: 1px solid #e5e5e5; -} -.modal-footer .btn + .btn { - margin-bottom: 0; - margin-left: 5px; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -@media (min-width: 768px) { - .modal-dialog { - width: 600px; - margin: 30px auto; - } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); - box-shadow: 0 5px 15px rgba(0, 0, 0, .5); - } - .modal-sm { - width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg { - width: 900px; - } -} -.tooltip { - position: absolute; - z-index: 1030; - display: block; - font-size: 12px; - line-height: 1.4; - visibility: visible; - filter: alpha(opacity=0); - opacity: 0; -} -.tooltip.in { - filter: alpha(opacity=90); - opacity: .9; -} -.tooltip.top { - padding: 5px 0; - margin-top: -3px; -} -.tooltip.right { - padding: 0 5px; - margin-left: 3px; -} -.tooltip.bottom { - padding: 5px 0; - margin-top: 3px; -} -.tooltip.left { - padding: 0 5px; - margin-left: -3px; -} -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #fff; - text-align: center; - text-decoration: none; - background-color: #000; - border-radius: 4px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-left .tooltip-arrow { - bottom: 0; - left: 5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-right .tooltip-arrow { - right: 5px; - bottom: 0; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - left: 5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - right: 5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1010; - display: none; - max-width: 276px; - padding: 1px; - text-align: left; - white-space: normal; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); - box-shadow: 0 5px 10px rgba(0, 0, 0, .2); -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - padding: 8px 14px; - margin: 0; - font-size: 14px; - font-weight: normal; - line-height: 18px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: 5px 5px 0 0; -} -.popover-content { - padding: 9px 14px; -} -.popover > .arrow, -.popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover > .arrow { - border-width: 11px; -} -.popover > .arrow:after { - content: ""; - border-width: 10px; -} -.popover.top > .arrow { - bottom: -11px; - left: 50%; - margin-left: -11px; - border-top-color: #999; - border-top-color: rgba(0, 0, 0, .25); - border-bottom-width: 0; -} -.popover.top > .arrow:after { - bottom: 1px; - margin-left: -10px; - content: " "; - border-top-color: #fff; - border-bottom-width: 0; -} -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-right-color: #999; - border-right-color: rgba(0, 0, 0, .25); - border-left-width: 0; -} -.popover.right > .arrow:after { - bottom: -10px; - left: 1px; - content: " "; - border-right-color: #fff; - border-left-width: 0; -} -.popover.bottom > .arrow { - top: -11px; - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999; - border-bottom-color: rgba(0, 0, 0, .25); -} -.popover.bottom > .arrow:after { - top: 1px; - margin-left: -10px; - content: " "; - border-top-width: 0; - border-bottom-color: #fff; -} -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999; - border-left-color: rgba(0, 0, 0, .25); -} -.popover.left > .arrow:after { - right: 1px; - bottom: -10px; - content: " "; - border-right-width: 0; - border-left-color: #fff; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} -.carousel-inner > .item { - position: relative; - display: none; - -webkit-transition: .6s ease-in-out left; - transition: .6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - line-height: 1; -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 15%; - font-size: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); - filter: alpha(opacity=50); - opacity: .5; -} -.carousel-control.left { - background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, .5) 0%), color-stop(rgba(0, 0, 0, .0001) 100%)); - background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control.right { - right: 0; - left: auto; - background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, .0001) 0%), color-stop(rgba(0, 0, 0, .5) 100%)); - background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control:hover, -.carousel-control:focus { - color: #fff; - text-decoration: none; - filter: alpha(opacity=90); - outline: none; - opacity: .9; -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - margin-top: -10px; - margin-left: -10px; - font-family: serif; -} -.carousel-control .icon-prev:before { - content: '\2039'; -} -.carousel-control .icon-next:before { - content: '\203a'; -} -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - padding-left: 0; - margin-left: -30%; - text-align: center; - list-style: none; -} -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - cursor: pointer; - background-color: #000 \9; - background-color: rgba(0, 0, 0, 0); - border: 1px solid #fff; - border-radius: 10px; -} -.carousel-indicators .active { - width: 12px; - height: 12px; - margin: 0; - background-color: #fff; -} -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); -} -.carousel-caption .btn { - text-shadow: none; -} -@media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -15px; - margin-left: -15px; - font-size: 30px; - } - .carousel-caption { - right: 20%; - left: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-footer:before, -.modal-footer:after { - display: table; - content: " "; -} -.clearfix:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-footer:after { - clear: both; -} -.center-block { - display: block; - margin-right: auto; - margin-left: auto; -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; - visibility: hidden !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -@media (max-width: 767px) { - .visible-xs { - display: block !important; - } - table.visible-xs { - display: table; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.visible-xs { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; - } - table.visible-sm { - display: table; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md { - display: block !important; - } - table.visible-md { - display: table; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} -@media (min-width: 1200px) { - .visible-lg { - display: block !important; - } - table.visible-lg { - display: table; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.visible-lg { - display: table-cell !important; - } -} -@media (max-width: 767px) { - .hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-md { - display: none !important; - } -} -@media (min-width: 1200px) { - .hidden-lg { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: block !important; - } - table.visible-print { - display: table; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.visible-print { - display: table-cell !important; - } -} -@media print { - .hidden-print { - display: none !important; - } -} -/*# sourceMappingURL=bootstrap.css.map */ diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/css/bootstrap.min.css b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/css/bootstrap.min.css deleted file mode 100644 index 0ed4ee27..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/css/bootstrap.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v3.1.1 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -/*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date]{line-height:34px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:400;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:gray}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.eot b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.eot deleted file mode 100644 index b93a4953fff68df523aa7656497ee339d6026d64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20127 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.ttf b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.ttf deleted file mode 100644 index 1413fc609ab6f21774de0cb7e01360095584f65b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45404 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 G`u_lkUM?>H diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff2 deleted file mode 100644 index 64539b54c3751a6d9adb44c8e3a45ba5a73b77f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18028 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 diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/js/bootstrap.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/js/bootstrap.js deleted file mode 100644 index 721101bc..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/js/bootstrap.js +++ /dev/null @@ -1,1951 +0,0 @@ -/*! - * Bootstrap v3.1.1 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery') } - -/* ======================================================================== - * Bootstrap: transition.js v3.1.1 - * http://getbootstrap.com/javascript/#transitions - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) - // ============================================================ - - function transitionEnd() { - var el = document.createElement('bootstrap') - - var transEndEventNames = { - 'WebkitTransition' : 'webkitTransitionEnd', - 'MozTransition' : 'transitionend', - 'OTransition' : 'oTransitionEnd otransitionend', - 'transition' : 'transitionend' - } - - for (var name in transEndEventNames) { - if (el.style[name] !== undefined) { - return { end: transEndEventNames[name] } - } - } - - return false // explicit for ie8 ( ._.) - } - - // http://blog.alexmaccaw.com/css-transitions - $.fn.emulateTransitionEnd = function (duration) { - var called = false, $el = this - $(this).one($.support.transition.end, function () { called = true }) - var callback = function () { if (!called) $($el).trigger($.support.transition.end) } - setTimeout(callback, duration) - return this - } - - $(function () { - $.support.transition = transitionEnd() - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: alert.js v3.1.1 - * http://getbootstrap.com/javascript/#alerts - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // ALERT CLASS DEFINITION - // ====================== - - var dismiss = '[data-dismiss="alert"]' - var Alert = function (el) { - $(el).on('click', dismiss, this.close) - } - - Alert.prototype.close = function (e) { - var $this = $(this) - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = $(selector) - - if (e) e.preventDefault() - - if (!$parent.length) { - $parent = $this.hasClass('alert') ? $this : $this.parent() - } - - $parent.trigger(e = $.Event('close.bs.alert')) - - if (e.isDefaultPrevented()) return - - $parent.removeClass('in') - - function removeElement() { - $parent.trigger('closed.bs.alert').remove() - } - - $.support.transition && $parent.hasClass('fade') ? - $parent - .one($.support.transition.end, removeElement) - .emulateTransitionEnd(150) : - removeElement() - } - - - // ALERT PLUGIN DEFINITION - // ======================= - - var old = $.fn.alert - - $.fn.alert = function (option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.alert') - - if (!data) $this.data('bs.alert', (data = new Alert(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - $.fn.alert.Constructor = Alert - - - // ALERT NO CONFLICT - // ================= - - $.fn.alert.noConflict = function () { - $.fn.alert = old - return this - } - - - // ALERT DATA-API - // ============== - - $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: button.js v3.1.1 - * http://getbootstrap.com/javascript/#buttons - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // BUTTON PUBLIC CLASS DEFINITION - // ============================== - - var Button = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Button.DEFAULTS, options) - this.isLoading = false - } - - Button.DEFAULTS = { - loadingText: 'loading...' - } - - Button.prototype.setState = function (state) { - var d = 'disabled' - var $el = this.$element - var val = $el.is('input') ? 'val' : 'html' - var data = $el.data() - - state = state + 'Text' - - if (!data.resetText) $el.data('resetText', $el[val]()) - - $el[val](data[state] || this.options[state]) - - // push to event loop to allow forms to submit - setTimeout($.proxy(function () { - if (state == 'loadingText') { - this.isLoading = true - $el.addClass(d).attr(d, d) - } else if (this.isLoading) { - this.isLoading = false - $el.removeClass(d).removeAttr(d) - } - }, this), 0) - } - - Button.prototype.toggle = function () { - var changed = true - var $parent = this.$element.closest('[data-toggle="buttons"]') - - if ($parent.length) { - var $input = this.$element.find('input') - if ($input.prop('type') == 'radio') { - if ($input.prop('checked') && this.$element.hasClass('active')) changed = false - else $parent.find('.active').removeClass('active') - } - if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') - } - - if (changed) this.$element.toggleClass('active') - } - - - // BUTTON PLUGIN DEFINITION - // ======================== - - var old = $.fn.button - - $.fn.button = function (option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.button') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.button', (data = new Button(this, options))) - - if (option == 'toggle') data.toggle() - else if (option) data.setState(option) - }) - } - - $.fn.button.Constructor = Button - - - // BUTTON NO CONFLICT - // ================== - - $.fn.button.noConflict = function () { - $.fn.button = old - return this - } - - - // BUTTON DATA-API - // =============== - - $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) { - var $btn = $(e.target) - if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') - $btn.button('toggle') - e.preventDefault() - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: carousel.js v3.1.1 - * http://getbootstrap.com/javascript/#carousel - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CAROUSEL CLASS DEFINITION - // ========================= - - var Carousel = function (element, options) { - this.$element = $(element) - this.$indicators = this.$element.find('.carousel-indicators') - this.options = options - this.paused = - this.sliding = - this.interval = - this.$active = - this.$items = null - - this.options.pause == 'hover' && this.$element - .on('mouseenter', $.proxy(this.pause, this)) - .on('mouseleave', $.proxy(this.cycle, this)) - } - - Carousel.DEFAULTS = { - interval: 5000, - pause: 'hover', - wrap: true - } - - Carousel.prototype.cycle = function (e) { - e || (this.paused = false) - - this.interval && clearInterval(this.interval) - - this.options.interval - && !this.paused - && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) - - return this - } - - Carousel.prototype.getActiveIndex = function () { - this.$active = this.$element.find('.item.active') - this.$items = this.$active.parent().children() - - return this.$items.index(this.$active) - } - - Carousel.prototype.to = function (pos) { - var that = this - var activeIndex = this.getActiveIndex() - - if (pos > (this.$items.length - 1) || pos < 0) return - - if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) - if (activeIndex == pos) return this.pause().cycle() - - return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) - } - - Carousel.prototype.pause = function (e) { - e || (this.paused = true) - - if (this.$element.find('.next, .prev').length && $.support.transition) { - this.$element.trigger($.support.transition.end) - this.cycle(true) - } - - this.interval = clearInterval(this.interval) - - return this - } - - Carousel.prototype.next = function () { - if (this.sliding) return - return this.slide('next') - } - - Carousel.prototype.prev = function () { - if (this.sliding) return - return this.slide('prev') - } - - Carousel.prototype.slide = function (type, next) { - var $active = this.$element.find('.item.active') - var $next = next || $active[type]() - var isCycling = this.interval - var direction = type == 'next' ? 'left' : 'right' - var fallback = type == 'next' ? 'first' : 'last' - var that = this - - if (!$next.length) { - if (!this.options.wrap) return - $next = this.$element.find('.item')[fallback]() - } - - if ($next.hasClass('active')) return this.sliding = false - - var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction }) - this.$element.trigger(e) - if (e.isDefaultPrevented()) return - - this.sliding = true - - isCycling && this.pause() - - if (this.$indicators.length) { - this.$indicators.find('.active').removeClass('active') - this.$element.one('slid.bs.carousel', function () { - var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) - $nextIndicator && $nextIndicator.addClass('active') - }) - } - - if ($.support.transition && this.$element.hasClass('slide')) { - $next.addClass(type) - $next[0].offsetWidth // force reflow - $active.addClass(direction) - $next.addClass(direction) - $active - .one($.support.transition.end, function () { - $next.removeClass([type, direction].join(' ')).addClass('active') - $active.removeClass(['active', direction].join(' ')) - that.sliding = false - setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0) - }) - .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000) - } else { - $active.removeClass('active') - $next.addClass('active') - this.sliding = false - this.$element.trigger('slid.bs.carousel') - } - - isCycling && this.cycle() - - return this - } - - - // CAROUSEL PLUGIN DEFINITION - // ========================== - - var old = $.fn.carousel - - $.fn.carousel = function (option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.carousel') - var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) - var action = typeof option == 'string' ? option : options.slide - - if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) - if (typeof option == 'number') data.to(option) - else if (action) data[action]() - else if (options.interval) data.pause().cycle() - }) - } - - $.fn.carousel.Constructor = Carousel - - - // CAROUSEL NO CONFLICT - // ==================== - - $.fn.carousel.noConflict = function () { - $.fn.carousel = old - return this - } - - - // CAROUSEL DATA-API - // ================= - - $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { - var $this = $(this), href - var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 - var options = $.extend({}, $target.data(), $this.data()) - var slideIndex = $this.attr('data-slide-to') - if (slideIndex) options.interval = false - - $target.carousel(options) - - if (slideIndex = $this.attr('data-slide-to')) { - $target.data('bs.carousel').to(slideIndex) - } - - e.preventDefault() - }) - - $(window).on('load', function () { - $('[data-ride="carousel"]').each(function () { - var $carousel = $(this) - $carousel.carousel($carousel.data()) - }) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: collapse.js v3.1.1 - * http://getbootstrap.com/javascript/#collapse - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // COLLAPSE PUBLIC CLASS DEFINITION - // ================================ - - var Collapse = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Collapse.DEFAULTS, options) - this.transitioning = null - - if (this.options.parent) this.$parent = $(this.options.parent) - if (this.options.toggle) this.toggle() - } - - Collapse.DEFAULTS = { - toggle: true - } - - Collapse.prototype.dimension = function () { - var hasWidth = this.$element.hasClass('width') - return hasWidth ? 'width' : 'height' - } - - Collapse.prototype.show = function () { - if (this.transitioning || this.$element.hasClass('in')) return - - var startEvent = $.Event('show.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - var actives = this.$parent && this.$parent.find('> .panel > .in') - - if (actives && actives.length) { - var hasData = actives.data('bs.collapse') - if (hasData && hasData.transitioning) return - actives.collapse('hide') - hasData || actives.data('bs.collapse', null) - } - - var dimension = this.dimension() - - this.$element - .removeClass('collapse') - .addClass('collapsing') - [dimension](0) - - this.transitioning = 1 - - var complete = function () { - this.$element - .removeClass('collapsing') - .addClass('collapse in') - [dimension]('auto') - this.transitioning = 0 - this.$element.trigger('shown.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - var scrollSize = $.camelCase(['scroll', dimension].join('-')) - - this.$element - .one($.support.transition.end, $.proxy(complete, this)) - .emulateTransitionEnd(350) - [dimension](this.$element[0][scrollSize]) - } - - Collapse.prototype.hide = function () { - if (this.transitioning || !this.$element.hasClass('in')) return - - var startEvent = $.Event('hide.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - var dimension = this.dimension() - - this.$element - [dimension](this.$element[dimension]()) - [0].offsetHeight - - this.$element - .addClass('collapsing') - .removeClass('collapse') - .removeClass('in') - - this.transitioning = 1 - - var complete = function () { - this.transitioning = 0 - this.$element - .trigger('hidden.bs.collapse') - .removeClass('collapsing') - .addClass('collapse') - } - - if (!$.support.transition) return complete.call(this) - - this.$element - [dimension](0) - .one($.support.transition.end, $.proxy(complete, this)) - .emulateTransitionEnd(350) - } - - Collapse.prototype.toggle = function () { - this[this.$element.hasClass('in') ? 'hide' : 'show']() - } - - - // COLLAPSE PLUGIN DEFINITION - // ========================== - - var old = $.fn.collapse - - $.fn.collapse = function (option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.collapse') - var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data && options.toggle && option == 'show') option = !option - if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - $.fn.collapse.Constructor = Collapse - - - // COLLAPSE NO CONFLICT - // ==================== - - $.fn.collapse.noConflict = function () { - $.fn.collapse = old - return this - } - - - // COLLAPSE DATA-API - // ================= - - $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) { - var $this = $(this), href - var target = $this.attr('data-target') - || e.preventDefault() - || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 - var $target = $(target) - var data = $target.data('bs.collapse') - var option = data ? 'toggle' : $this.data() - var parent = $this.attr('data-parent') - var $parent = parent && $(parent) - - if (!data || !data.transitioning) { - if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') - $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') - } - - $target.collapse(option) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: dropdown.js v3.1.1 - * http://getbootstrap.com/javascript/#dropdowns - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // DROPDOWN CLASS DEFINITION - // ========================= - - var backdrop = '.dropdown-backdrop' - var toggle = '[data-toggle=dropdown]' - var Dropdown = function (element) { - $(element).on('click.bs.dropdown', this.toggle) - } - - Dropdown.prototype.toggle = function (e) { - var $this = $(this) - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - clearMenus() - - if (!isActive) { - if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { - // if mobile we use a backdrop because click events don't delegate - $('')[0]; - - /* Check to see if we should append an id and/or a class name to the container */ - cNext = aDom[i+1]; - if ( cNext == "'" || cNext == '"' ) - { - sAttr = ""; - j = 2; - while ( aDom[i+j] != cNext ) - { - sAttr += aDom[i+j]; - j++; - } - - /* Replace jQuery UI constants */ - if ( sAttr == "H" ) - { - sAttr = oSettings.oClasses.sJUIHeader; - } - else if ( sAttr == "F" ) - { - sAttr = oSettings.oClasses.sJUIFooter; - } - - /* The attribute can be in the format of "#id.class", "#id" or "class" This logic - * breaks the string into parts and applies them as needed - */ - if ( sAttr.indexOf('.') != -1 ) - { - var aSplit = sAttr.split('.'); - nNewNode.id = aSplit[0].substr(1, aSplit[0].length-1); - nNewNode.className = aSplit[1]; - } - else if ( sAttr.charAt(0) == "#" ) - { - nNewNode.id = sAttr.substr(1, sAttr.length-1); - } - else - { - nNewNode.className = sAttr; - } - - i += j; /* Move along the position array */ - } - - nInsertNode.appendChild( nNewNode ); - nInsertNode = nNewNode; - } - else if ( cOption == '>' ) - { - /* End container div */ - nInsertNode = nInsertNode.parentNode; - } - else if ( cOption == 'l' && oSettings.oFeatures.bPaginate && oSettings.oFeatures.bLengthChange ) - { - /* Length */ - nTmp = _fnFeatureHtmlLength( oSettings ); - iPushFeature = 1; - } - else if ( cOption == 'f' && oSettings.oFeatures.bFilter ) - { - /* Filter */ - nTmp = _fnFeatureHtmlFilter( oSettings ); - iPushFeature = 1; - } - else if ( cOption == 'r' && oSettings.oFeatures.bProcessing ) - { - /* pRocessing */ - nTmp = _fnFeatureHtmlProcessing( oSettings ); - iPushFeature = 1; - } - else if ( cOption == 't' ) - { - /* Table */ - nTmp = _fnFeatureHtmlTable( oSettings ); - iPushFeature = 1; - } - else if ( cOption == 'i' && oSettings.oFeatures.bInfo ) - { - /* Info */ - nTmp = _fnFeatureHtmlInfo( oSettings ); - iPushFeature = 1; - } - else if ( cOption == 'p' && oSettings.oFeatures.bPaginate ) - { - /* Pagination */ - nTmp = _fnFeatureHtmlPaginate( oSettings ); - iPushFeature = 1; - } - else if ( DataTable.ext.aoFeatures.length !== 0 ) - { - /* Plug-in features */ - var aoFeatures = DataTable.ext.aoFeatures; - for ( var k=0, kLen=aoFeatures.length ; k') : - sSearchStr==="" ? '' : sSearchStr+' '; - - var nFilter = document.createElement( 'div' ); - nFilter.className = oSettings.oClasses.sFilter; - nFilter.innerHTML = ''; - if ( !oSettings.aanFeatures.f ) - { - nFilter.id = oSettings.sTableId+'_filter'; - } - - var jqFilter = $('input[type="text"]', nFilter); - - // Store a reference to the input element, so other input elements could be - // added to the filter wrapper if needed (submit button for example) - nFilter._DT_Input = jqFilter[0]; - - jqFilter.val( oPreviousSearch.sSearch.replace('"','"') ); - jqFilter.bind( 'keyup.DT', function(e) { - /* Update all other filter input elements for the new display */ - var n = oSettings.aanFeatures.f; - var val = this.value==="" ? "" : this.value; // mental IE8 fix :-( - - for ( var i=0, iLen=n.length ; i=0 ; i-- ) - { - var sData = _fnDataToSearch( _fnGetCellData( oSettings, oSettings.aiDisplay[i], iColumn, 'filter' ), - oSettings.aoColumns[iColumn].sType ); - if ( ! rpSearch.test( sData ) ) - { - oSettings.aiDisplay.splice( i, 1 ); - iIndexCorrector++; - } - } - } - - - /** - * Filter the data table based on user input and draw the table - * @param {object} oSettings dataTables settings object - * @param {string} sInput string to filter on - * @param {int} iForce optional - force a research of the master array (1) or not (undefined or 0) - * @param {bool} bRegex treat as a regular expression or not - * @param {bool} bSmart perform smart filtering or not - * @param {bool} bCaseInsensitive Do case insenstive matching or not - * @memberof DataTable#oApi - */ - function _fnFilter( oSettings, sInput, iForce, bRegex, bSmart, bCaseInsensitive ) - { - var i; - var rpSearch = _fnFilterCreateSearch( sInput, bRegex, bSmart, bCaseInsensitive ); - var oPrevSearch = oSettings.oPreviousSearch; - - /* Check if we are forcing or not - optional parameter */ - if ( !iForce ) - { - iForce = 0; - } - - /* Need to take account of custom filtering functions - always filter */ - if ( DataTable.ext.afnFiltering.length !== 0 ) - { - iForce = 1; - } - - /* - * If the input is blank - we want the full data set - */ - if ( sInput.length <= 0 ) - { - oSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length); - oSettings.aiDisplay = oSettings.aiDisplayMaster.slice(); - } - else - { - /* - * We are starting a new search or the new search string is smaller - * then the old one (i.e. delete). Search from the master array - */ - if ( oSettings.aiDisplay.length == oSettings.aiDisplayMaster.length || - oPrevSearch.sSearch.length > sInput.length || iForce == 1 || - sInput.indexOf(oPrevSearch.sSearch) !== 0 ) - { - /* Nuke the old display array - we are going to rebuild it */ - oSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length); - - /* Force a rebuild of the search array */ - _fnBuildSearchArray( oSettings, 1 ); - - /* Search through all records to populate the search array - * The the oSettings.aiDisplayMaster and asDataSearch arrays have 1 to 1 - * mapping - */ - for ( i=0 ; i').html(sSearch).text(); - } - - // Strip newline characters - return sSearch.replace( /[\n\r]/g, " " ); - } - - /** - * Build a regular expression object suitable for searching a table - * @param {string} sSearch string to search for - * @param {bool} bRegex treat as a regular expression or not - * @param {bool} bSmart perform smart filtering or not - * @param {bool} bCaseInsensitive Do case insensitive matching or not - * @returns {RegExp} constructed object - * @memberof DataTable#oApi - */ - function _fnFilterCreateSearch( sSearch, bRegex, bSmart, bCaseInsensitive ) - { - var asSearch, sRegExpString; - - if ( bSmart ) - { - /* Generate the regular expression to use. Something along the lines of: - * ^(?=.*?\bone\b)(?=.*?\btwo\b)(?=.*?\bthree\b).*$ - */ - asSearch = bRegex ? sSearch.split( ' ' ) : _fnEscapeRegex( sSearch ).split( ' ' ); - sRegExpString = '^(?=.*?'+asSearch.join( ')(?=.*?' )+').*$'; - return new RegExp( sRegExpString, bCaseInsensitive ? "i" : "" ); - } - else - { - sSearch = bRegex ? sSearch : _fnEscapeRegex( sSearch ); - return new RegExp( sSearch, bCaseInsensitive ? "i" : "" ); - } - } - - - /** - * Convert raw data into something that the user can search on - * @param {string} sData data to be modified - * @param {string} sType data type - * @returns {string} search string - * @memberof DataTable#oApi - */ - function _fnDataToSearch ( sData, sType ) - { - if ( typeof DataTable.ext.ofnSearch[sType] === "function" ) - { - return DataTable.ext.ofnSearch[sType]( sData ); - } - else if ( sData === null ) - { - return ''; - } - else if ( sType == "html" ) - { - return sData.replace(/[\r\n]/g," ").replace( /<.*?>/g, "" ); - } - else if ( typeof sData === "string" ) - { - return sData.replace(/[\r\n]/g," "); - } - return sData; - } - - - /** - * scape a string such that it can be used in a regular expression - * @param {string} sVal string to escape - * @returns {string} escaped string - * @memberof DataTable#oApi - */ - function _fnEscapeRegex ( sVal ) - { - var acEscape = [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ]; - var reReplace = new RegExp( '(\\' + acEscape.join('|\\') + ')', 'g' ); - return sVal.replace(reReplace, '\\$1'); - } - - - /** - * Generate the node required for the info display - * @param {object} oSettings dataTables settings object - * @returns {node} Information element - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlInfo ( oSettings ) - { - var nInfo = document.createElement( 'div' ); - nInfo.className = oSettings.oClasses.sInfo; - - /* Actions that are to be taken once only for this feature */ - if ( !oSettings.aanFeatures.i ) - { - /* Add draw callback */ - oSettings.aoDrawCallback.push( { - "fn": _fnUpdateInfo, - "sName": "information" - } ); - - /* Add id */ - nInfo.id = oSettings.sTableId+'_info'; - } - oSettings.nTable.setAttribute( 'aria-describedby', oSettings.sTableId+'_info' ); - - return nInfo; - } - - - /** - * Update the information elements in the display - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnUpdateInfo ( oSettings ) - { - /* Show information about the table */ - if ( !oSettings.oFeatures.bInfo || oSettings.aanFeatures.i.length === 0 ) - { - return; - } - - var - oLang = oSettings.oLanguage, - iStart = oSettings._iDisplayStart+1, - iEnd = oSettings.fnDisplayEnd(), - iMax = oSettings.fnRecordsTotal(), - iTotal = oSettings.fnRecordsDisplay(), - sOut; - - if ( iTotal === 0 ) - { - /* Empty record set */ - sOut = oLang.sInfoEmpty; - } - else { - /* Normal record set */ - sOut = oLang.sInfo; - } - - if ( iTotal != iMax ) - { - /* Record set after filtering */ - sOut += ' ' + oLang.sInfoFiltered; - } - - // Convert the macros - sOut += oLang.sInfoPostFix; - sOut = _fnInfoMacros( oSettings, sOut ); - - if ( oLang.fnInfoCallback !== null ) - { - sOut = oLang.fnInfoCallback.call( oSettings.oInstance, - oSettings, iStart, iEnd, iMax, iTotal, sOut ); - } - - var n = oSettings.aanFeatures.i; - for ( var i=0, iLen=n.length ; i'; - var i, iLen; - var aLengthMenu = oSettings.aLengthMenu; - - if ( aLengthMenu.length == 2 && typeof aLengthMenu[0] === 'object' && - typeof aLengthMenu[1] === 'object' ) - { - for ( i=0, iLen=aLengthMenu[0].length ; i'+aLengthMenu[1][i]+''; - } - } - else - { - for ( i=0, iLen=aLengthMenu.length ; i'+aLengthMenu[i]+''; - } - } - sStdMenu += ''; - - var nLength = document.createElement( 'div' ); - if ( !oSettings.aanFeatures.l ) - { - nLength.id = oSettings.sTableId+'_length'; - } - nLength.className = oSettings.oClasses.sLength; - nLength.innerHTML = ''; - - /* - * Set the length to the current display length - thanks to Andrea Pavlovic for this fix, - * and Stefan Skopnik for fixing the fix! - */ - $('select option[value="'+oSettings._iDisplayLength+'"]', nLength).attr("selected", true); - - $('select', nLength).bind( 'change.DT', function(e) { - var iVal = $(this).val(); - - /* Update all other length options for the new display */ - var n = oSettings.aanFeatures.l; - for ( i=0, iLen=n.length ; i oSettings.aiDisplay.length || - oSettings._iDisplayLength == -1 ) - { - oSettings._iDisplayEnd = oSettings.aiDisplay.length; - } - else - { - oSettings._iDisplayEnd = oSettings._iDisplayStart + oSettings._iDisplayLength; - } - } - } - - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Note that most of the paging logic is done in - * DataTable.ext.oPagination - */ - - /** - * Generate the node required for default pagination - * @param {object} oSettings dataTables settings object - * @returns {node} Pagination feature node - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlPaginate ( oSettings ) - { - if ( oSettings.oScroll.bInfinite ) - { - return null; - } - - var nPaginate = document.createElement( 'div' ); - nPaginate.className = oSettings.oClasses.sPaging+oSettings.sPaginationType; - - DataTable.ext.oPagination[ oSettings.sPaginationType ].fnInit( oSettings, nPaginate, - function( oSettings ) { - _fnCalculateEnd( oSettings ); - _fnDraw( oSettings ); - } - ); - - /* Add a draw callback for the pagination on first instance, to update the paging display */ - if ( !oSettings.aanFeatures.p ) - { - oSettings.aoDrawCallback.push( { - "fn": function( oSettings ) { - DataTable.ext.oPagination[ oSettings.sPaginationType ].fnUpdate( oSettings, function( oSettings ) { - _fnCalculateEnd( oSettings ); - _fnDraw( oSettings ); - } ); - }, - "sName": "pagination" - } ); - } - return nPaginate; - } - - - /** - * Alter the display settings to change the page - * @param {object} oSettings dataTables settings object - * @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last" - * or page number to jump to (integer) - * @returns {bool} true page has changed, false - no change (no effect) eg 'first' on page 1 - * @memberof DataTable#oApi - */ - function _fnPageChange ( oSettings, mAction ) - { - var iOldStart = oSettings._iDisplayStart; - - if ( typeof mAction === "number" ) - { - oSettings._iDisplayStart = mAction * oSettings._iDisplayLength; - if ( oSettings._iDisplayStart > oSettings.fnRecordsDisplay() ) - { - oSettings._iDisplayStart = 0; - } - } - else if ( mAction == "first" ) - { - oSettings._iDisplayStart = 0; - } - else if ( mAction == "previous" ) - { - oSettings._iDisplayStart = oSettings._iDisplayLength>=0 ? - oSettings._iDisplayStart - oSettings._iDisplayLength : - 0; - - /* Correct for under-run */ - if ( oSettings._iDisplayStart < 0 ) - { - oSettings._iDisplayStart = 0; - } - } - else if ( mAction == "next" ) - { - if ( oSettings._iDisplayLength >= 0 ) - { - /* Make sure we are not over running the display array */ - if ( oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay() ) - { - oSettings._iDisplayStart += oSettings._iDisplayLength; - } - } - else - { - oSettings._iDisplayStart = 0; - } - } - else if ( mAction == "last" ) - { - if ( oSettings._iDisplayLength >= 0 ) - { - var iPages = parseInt( (oSettings.fnRecordsDisplay()-1) / oSettings._iDisplayLength, 10 ) + 1; - oSettings._iDisplayStart = (iPages-1) * oSettings._iDisplayLength; - } - else - { - oSettings._iDisplayStart = 0; - } - } - else - { - _fnLog( oSettings, 0, "Unknown paging action: "+mAction ); - } - $(oSettings.oInstance).trigger('page', oSettings); - - return iOldStart != oSettings._iDisplayStart; - } - - - - /** - * Generate the node required for the processing node - * @param {object} oSettings dataTables settings object - * @returns {node} Processing element - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlProcessing ( oSettings ) - { - var nProcessing = document.createElement( 'div' ); - - if ( !oSettings.aanFeatures.r ) - { - nProcessing.id = oSettings.sTableId+'_processing'; - } - nProcessing.innerHTML = oSettings.oLanguage.sProcessing; - nProcessing.className = oSettings.oClasses.sProcessing; - oSettings.nTable.parentNode.insertBefore( nProcessing, oSettings.nTable ); - - return nProcessing; - } - - - /** - * Display or hide the processing indicator - * @param {object} oSettings dataTables settings object - * @param {bool} bShow Show the processing indicator (true) or not (false) - * @memberof DataTable#oApi - */ - function _fnProcessingDisplay ( oSettings, bShow ) - { - if ( oSettings.oFeatures.bProcessing ) - { - var an = oSettings.aanFeatures.r; - for ( var i=0, iLen=an.length ; i 0 ) - { - nCaption = nCaption[0]; - if ( nCaption._captionSide === "top" ) - { - nScrollHeadTable.appendChild( nCaption ); - } - else if ( nCaption._captionSide === "bottom" && nTfoot ) - { - nScrollFootTable.appendChild( nCaption ); - } - } - - /* - * Sizing - */ - /* When x-scrolling add the width and a scroller to move the header with the body */ - if ( oSettings.oScroll.sX !== "" ) - { - nScrollHead.style.width = _fnStringToCss( oSettings.oScroll.sX ); - nScrollBody.style.width = _fnStringToCss( oSettings.oScroll.sX ); - - if ( nTfoot !== null ) - { - nScrollFoot.style.width = _fnStringToCss( oSettings.oScroll.sX ); - } - - /* When the body is scrolled, then we also want to scroll the headers */ - $(nScrollBody).scroll( function (e) { - nScrollHead.scrollLeft = this.scrollLeft; - - if ( nTfoot !== null ) - { - nScrollFoot.scrollLeft = this.scrollLeft; - } - } ); - } - - /* When yscrolling, add the height */ - if ( oSettings.oScroll.sY !== "" ) - { - nScrollBody.style.height = _fnStringToCss( oSettings.oScroll.sY ); - } - - /* Redraw - align columns across the tables */ - oSettings.aoDrawCallback.push( { - "fn": _fnScrollDraw, - "sName": "scrolling" - } ); - - /* Infinite scrolling event handlers */ - if ( oSettings.oScroll.bInfinite ) - { - $(nScrollBody).scroll( function() { - /* Use a blocker to stop scrolling from loading more data while other data is still loading */ - if ( !oSettings.bDrawing && $(this).scrollTop() !== 0 ) - { - /* Check if we should load the next data set */ - if ( $(this).scrollTop() + $(this).height() > - $(oSettings.nTable).height() - oSettings.oScroll.iLoadGap ) - { - /* Only do the redraw if we have to - we might be at the end of the data */ - if ( oSettings.fnDisplayEnd() < oSettings.fnRecordsDisplay() ) - { - _fnPageChange( oSettings, 'next' ); - _fnCalculateEnd( oSettings ); - _fnDraw( oSettings ); - } - } - } - } ); - } - - oSettings.nScrollHead = nScrollHead; - oSettings.nScrollFoot = nScrollFoot; - - return nScroller; - } - - - /** - * Update the various tables for resizing. It's a bit of a pig this function, but - * basically the idea to: - * 1. Re-create the table inside the scrolling div - * 2. Take live measurements from the DOM - * 3. Apply the measurements - * 4. Clean up - * @param {object} o dataTables settings object - * @returns {node} Node to add to the DOM - * @memberof DataTable#oApi - */ - function _fnScrollDraw ( o ) - { - var - nScrollHeadInner = o.nScrollHead.getElementsByTagName('div')[0], - nScrollHeadTable = nScrollHeadInner.getElementsByTagName('table')[0], - nScrollBody = o.nTable.parentNode, - i, iLen, j, jLen, anHeadToSize, anHeadSizers, anFootSizers, anFootToSize, oStyle, iVis, - nTheadSize, nTfootSize, - iWidth, aApplied=[], aAppliedFooter=[], iSanityWidth, - nScrollFootInner = (o.nTFoot !== null) ? o.nScrollFoot.getElementsByTagName('div')[0] : null, - nScrollFootTable = (o.nTFoot !== null) ? nScrollFootInner.getElementsByTagName('table')[0] : null, - ie67 = o.oBrowser.bScrollOversize, - zeroOut = function(nSizer) { - oStyle = nSizer.style; - oStyle.paddingTop = "0"; - oStyle.paddingBottom = "0"; - oStyle.borderTopWidth = "0"; - oStyle.borderBottomWidth = "0"; - oStyle.height = 0; - }; - - /* - * 1. Re-create the table inside the scrolling div - */ - - /* Remove the old minimised thead and tfoot elements in the inner table */ - $(o.nTable).children('thead, tfoot').remove(); - - /* Clone the current header and footer elements and then place it into the inner table */ - nTheadSize = $(o.nTHead).clone()[0]; - o.nTable.insertBefore( nTheadSize, o.nTable.childNodes[0] ); - anHeadToSize = o.nTHead.getElementsByTagName('tr'); - anHeadSizers = nTheadSize.getElementsByTagName('tr'); - - if ( o.nTFoot !== null ) - { - nTfootSize = $(o.nTFoot).clone()[0]; - o.nTable.insertBefore( nTfootSize, o.nTable.childNodes[1] ); - anFootToSize = o.nTFoot.getElementsByTagName('tr'); - anFootSizers = nTfootSize.getElementsByTagName('tr'); - } - - /* - * 2. Take live measurements from the DOM - do not alter the DOM itself! - */ - - /* Remove old sizing and apply the calculated column widths - * Get the unique column headers in the newly created (cloned) header. We want to apply the - * calculated sizes to this header - */ - if ( o.oScroll.sX === "" ) - { - nScrollBody.style.width = '100%'; - nScrollHeadInner.parentNode.style.width = '100%'; - } - - var nThs = _fnGetUniqueThs( o, nTheadSize ); - for ( i=0, iLen=nThs.length ; i nScrollBody.offsetHeight || - $(nScrollBody).css('overflow-y') == "scroll") ) - { - o.nTable.style.width = _fnStringToCss( $(o.nTable).outerWidth() - o.oScroll.iBarWidth); - } - } - else - { - if ( o.oScroll.sXInner !== "" ) - { - /* x scroll inner has been given - use it */ - o.nTable.style.width = _fnStringToCss(o.oScroll.sXInner); - } - else if ( iSanityWidth == $(nScrollBody).width() && - $(nScrollBody).height() < $(o.nTable).height() ) - { - /* There is y-scrolling - try to take account of the y scroll bar */ - o.nTable.style.width = _fnStringToCss( iSanityWidth-o.oScroll.iBarWidth ); - if ( $(o.nTable).outerWidth() > iSanityWidth-o.oScroll.iBarWidth ) - { - /* Not possible to take account of it */ - o.nTable.style.width = _fnStringToCss( iSanityWidth ); - } - } - else - { - /* All else fails */ - o.nTable.style.width = _fnStringToCss( iSanityWidth ); - } - } - - /* Recalculate the sanity width - now that we've applied the required width, before it was - * a temporary variable. This is required because the column width calculation is done - * before this table DOM is created. - */ - iSanityWidth = $(o.nTable).outerWidth(); - - /* We want the hidden header to have zero height, so remove padding and borders. Then - * set the width based on the real headers - */ - - // Apply all styles in one pass. Invalidates layout only once because we don't read any - // DOM properties. - _fnApplyToChildren( zeroOut, anHeadSizers ); - - // Read all widths in next pass. Forces layout only once because we do not change - // any DOM properties. - _fnApplyToChildren( function(nSizer) { - aApplied.push( _fnStringToCss( $(nSizer).width() ) ); - }, anHeadSizers ); - - // Apply all widths in final pass. Invalidates layout only once because we do not - // read any DOM properties. - _fnApplyToChildren( function(nToSize, i) { - nToSize.style.width = aApplied[i]; - }, anHeadToSize ); - - $(anHeadSizers).height(0); - - /* Same again with the footer if we have one */ - if ( o.nTFoot !== null ) - { - _fnApplyToChildren( zeroOut, anFootSizers ); - - _fnApplyToChildren( function(nSizer) { - aAppliedFooter.push( _fnStringToCss( $(nSizer).width() ) ); - }, anFootSizers ); - - _fnApplyToChildren( function(nToSize, i) { - nToSize.style.width = aAppliedFooter[i]; - }, anFootToSize ); - - $(anFootSizers).height(0); - } - - /* - * 3. Apply the measurements - */ - - /* "Hide" the header and footer that we used for the sizing. We want to also fix their width - * to what they currently are - */ - _fnApplyToChildren( function(nSizer, i) { - nSizer.innerHTML = ""; - nSizer.style.width = aApplied[i]; - //fix column align - nSizer.style.minWidth =nSizer.style.width; - }, anHeadSizers ); - - if ( o.nTFoot !== null ) - { - _fnApplyToChildren( function(nSizer, i) { - nSizer.innerHTML = ""; - nSizer.style.width = aAppliedFooter[i]; - }, anFootSizers ); - } - - /* Sanity check that the table is of a sensible width. If not then we are going to get - * misalignment - try to prevent this by not allowing the table to shrink below its min width - */ - if ( $(o.nTable).outerWidth() < iSanityWidth ) - { - /* The min width depends upon if we have a vertical scrollbar visible or not */ - var iCorrection = ((nScrollBody.scrollHeight > nScrollBody.offsetHeight || - $(nScrollBody).css('overflow-y') == "scroll")) ? - iSanityWidth+o.oScroll.iBarWidth : iSanityWidth; - - /* IE6/7 are a law unto themselves... */ - if ( ie67 && (nScrollBody.scrollHeight > - nScrollBody.offsetHeight || $(nScrollBody).css('overflow-y') == "scroll") ) - { - o.nTable.style.width = _fnStringToCss( iCorrection-o.oScroll.iBarWidth ); - } - - /* Apply the calculated minimum width to the table wrappers */ - nScrollBody.style.width = _fnStringToCss( iCorrection ); - o.nScrollHead.style.width = _fnStringToCss( iCorrection ); - - if ( o.nTFoot !== null ) - { - o.nScrollFoot.style.width = _fnStringToCss( iCorrection ); - } - - /* And give the user a warning that we've stopped the table getting too small */ - if ( o.oScroll.sX === "" ) - { - _fnLog( o, 1, "The table cannot fit into the current element which will cause column"+ - " misalignment. The table has been drawn at its minimum possible width." ); - } - else if ( o.oScroll.sXInner !== "" ) - { - _fnLog( o, 1, "The table cannot fit into the current element which will cause column"+ - " misalignment. Increase the sScrollXInner value or remove it to allow automatic"+ - " calculation" ); - } - } - else - { - nScrollBody.style.width = _fnStringToCss( '100%' ); - o.nScrollHead.style.width = _fnStringToCss( '100%' ); - - if ( o.nTFoot !== null ) - { - o.nScrollFoot.style.width = _fnStringToCss( '100%' ); - } - } - - - /* - * 4. Clean up - */ - if ( o.oScroll.sY === "" ) - { - /* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting - * the scrollbar height from the visible display, rather than adding it on. We need to - * set the height in order to sort this. Don't want to do it in any other browsers. - */ - if ( ie67 ) - { - nScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+o.oScroll.iBarWidth ); - } - } - - if ( o.oScroll.sY !== "" && o.oScroll.bCollapse ) - { - nScrollBody.style.height = _fnStringToCss( o.oScroll.sY ); - - var iExtra = (o.oScroll.sX !== "" && o.nTable.offsetWidth > nScrollBody.offsetWidth) ? - o.oScroll.iBarWidth : 0; - if ( o.nTable.offsetHeight < nScrollBody.offsetHeight ) - { - nScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+iExtra ); - } - } - - /* Finally set the width's of the header and footer tables */ - var iOuterWidth = $(o.nTable).outerWidth(); - nScrollHeadTable.style.width = _fnStringToCss( iOuterWidth ); - nScrollHeadInner.style.width = _fnStringToCss( iOuterWidth ); - - // Figure out if there are scrollbar present - if so then we need a the header and footer to - // provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar) - var bScrolling = $(o.nTable).height() > nScrollBody.clientHeight || $(nScrollBody).css('overflow-y') == "scroll"; - nScrollHeadInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+"px" : "0px"; - - if ( o.nTFoot !== null ) - { - nScrollFootTable.style.width = _fnStringToCss( iOuterWidth ); - nScrollFootInner.style.width = _fnStringToCss( iOuterWidth ); - nScrollFootInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+"px" : "0px"; - } - - /* Adjust the position of the header in case we loose the y-scrollbar */ - $(nScrollBody).scroll(); - - /* If sorting or filtering has occurred, jump the scrolling back to the top */ - if ( o.bSorted || o.bFiltered ) - { - nScrollBody.scrollTop = 0; - } - } - - - /** - * Apply a given function to the display child nodes of an element array (typically - * TD children of TR rows - * @param {function} fn Method to apply to the objects - * @param array {nodes} an1 List of elements to look through for display children - * @param array {nodes} an2 Another list (identical structure to the first) - optional - * @memberof DataTable#oApi - */ - function _fnApplyToChildren( fn, an1, an2 ) - { - var index=0, i=0, iLen=an1.length; - var nNode1, nNode2; - - while ( i < iLen ) - { - nNode1 = an1[i].firstChild; - nNode2 = an2 ? an2[i].firstChild : null; - while ( nNode1 ) - { - if ( nNode1.nodeType === 1 ) - { - if ( an2 ) - { - fn( nNode1, nNode2, index ); - } - else - { - fn( nNode1, index ); - } - index++; - } - nNode1 = nNode1.nextSibling; - nNode2 = an2 ? nNode2.nextSibling : null; - } - i++; - } - } - - /** - * Convert a CSS unit width to pixels (e.g. 2em) - * @param {string} sWidth width to be converted - * @param {node} nParent parent to get the with for (required for relative widths) - optional - * @returns {int} iWidth width in pixels - * @memberof DataTable#oApi - */ - function _fnConvertToWidth ( sWidth, nParent ) - { - if ( !sWidth || sWidth === null || sWidth === '' ) - { - return 0; - } - - if ( !nParent ) - { - nParent = document.body; - } - - var iWidth; - var nTmp = document.createElement( "div" ); - nTmp.style.width = _fnStringToCss( sWidth ); - - nParent.appendChild( nTmp ); - iWidth = nTmp.offsetWidth; - nParent.removeChild( nTmp ); - - return ( iWidth ); - } - - - /** - * Calculate the width of columns for the table - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnCalculateColumnWidths ( oSettings ) - { - var iTableWidth = oSettings.nTable.offsetWidth; - var iUserInputs = 0; - var iTmpWidth; - var iVisibleColumns = 0; - var iColums = oSettings.aoColumns.length; - var i, iIndex, iCorrector, iWidth; - var oHeaders = $('th', oSettings.nTHead); - var widthAttr = oSettings.nTable.getAttribute('width'); - var nWrapper = oSettings.nTable.parentNode; - - /* Convert any user input sizes into pixel sizes */ - for ( i=0 ; itd', nCalcTmp); - } - - /* Apply custom sizing to the cloned header */ - var nThs = _fnGetUniqueThs( oSettings, nTheadClone ); - iCorrector = 0; - for ( i=0 ; i 0 ) - { - oSettings.aoColumns[i].sWidth = _fnStringToCss( iWidth ); - } - iCorrector++; - } - } - - var cssWidth = $(nCalcTmp).css('width'); - oSettings.nTable.style.width = (cssWidth.indexOf('%') !== -1) ? - cssWidth : _fnStringToCss( $(nCalcTmp).outerWidth() ); - nCalcTmp.parentNode.removeChild( nCalcTmp ); - } - - if ( widthAttr ) - { - oSettings.nTable.style.width = _fnStringToCss( widthAttr ); - } - } - - - /** - * Adjust a table's width to take account of scrolling - * @param {object} oSettings dataTables settings object - * @param {node} n table node - * @memberof DataTable#oApi - */ - function _fnScrollingWidthAdjust ( oSettings, n ) - { - if ( oSettings.oScroll.sX === "" && oSettings.oScroll.sY !== "" ) - { - /* When y-scrolling only, we want to remove the width of the scroll bar so the table - * + scroll bar will fit into the area avaialble. - */ - var iOrigWidth = $(n).width(); - n.style.width = _fnStringToCss( $(n).outerWidth()-oSettings.oScroll.iBarWidth ); - } - else if ( oSettings.oScroll.sX !== "" ) - { - /* When x-scrolling both ways, fix the table at it's current size, without adjusting */ - n.style.width = _fnStringToCss( $(n).outerWidth() ); - } - } - - - /** - * Get the widest node - * @param {object} oSettings dataTables settings object - * @param {int} iCol column of interest - * @returns {node} widest table node - * @memberof DataTable#oApi - */ - function _fnGetWidestNode( oSettings, iCol ) - { - var iMaxIndex = _fnGetMaxLenString( oSettings, iCol ); - if ( iMaxIndex < 0 ) - { - return null; - } - - if ( oSettings.aoData[iMaxIndex].nTr === null ) - { - var n = document.createElement('td'); - n.innerHTML = _fnGetCellData( oSettings, iMaxIndex, iCol, '' ); - return n; - } - return _fnGetTdNodes(oSettings, iMaxIndex)[iCol]; - } - - - /** - * Get the maximum strlen for each data column - * @param {object} oSettings dataTables settings object - * @param {int} iCol column of interest - * @returns {string} max string length for each column - * @memberof DataTable#oApi - */ - function _fnGetMaxLenString( oSettings, iCol ) - { - var iMax = -1; - var iMaxIndex = -1; - - for ( var i=0 ; i/g, "" ); - if ( s.length > iMax ) - { - iMax = s.length; - iMaxIndex = i; - } - } - - return iMaxIndex; - } - - - /** - * Append a CSS unit (only if required) to a string - * @param {array} aArray1 first array - * @param {array} aArray2 second array - * @returns {int} 0 if match, 1 if length is different, 2 if no match - * @memberof DataTable#oApi - */ - function _fnStringToCss( s ) - { - if ( s === null ) - { - return "0px"; - } - - if ( typeof s == 'number' ) - { - if ( s < 0 ) - { - return "0px"; - } - return s+"px"; - } - - /* Check if the last character is not 0-9 */ - var c = s.charCodeAt( s.length-1 ); - if (c < 0x30 || c > 0x39) - { - return s; - } - return s+"px"; - } - - - /** - * Get the width of a scroll bar in this browser being used - * @returns {int} width in pixels - * @memberof DataTable#oApi - */ - function _fnScrollBarWidth () - { - var inner = document.createElement('p'); - var style = inner.style; - style.width = "100%"; - style.height = "200px"; - style.padding = "0px"; - - var outer = document.createElement('div'); - style = outer.style; - style.position = "absolute"; - style.top = "0px"; - style.left = "0px"; - style.visibility = "hidden"; - style.width = "200px"; - style.height = "150px"; - style.padding = "0px"; - style.overflow = "hidden"; - outer.appendChild(inner); - - document.body.appendChild(outer); - var w1 = inner.offsetWidth; - outer.style.overflow = 'scroll'; - var w2 = inner.offsetWidth; - if ( w1 == w2 ) - { - w2 = outer.clientWidth; - } - - document.body.removeChild(outer); - return (w1 - w2); - } - - /** - * Change the order of the table - * @param {object} oSettings dataTables settings object - * @param {bool} bApplyClasses optional - should we apply classes or not - * @memberof DataTable#oApi - */ - function _fnSort ( oSettings, bApplyClasses ) - { - var - i, iLen, j, jLen, k, kLen, - sDataType, nTh, - aaSort = [], - aiOrig = [], - oSort = DataTable.ext.oSort, - aoData = oSettings.aoData, - aoColumns = oSettings.aoColumns, - oAria = oSettings.oLanguage.oAria; - - /* No sorting required if server-side or no sorting array */ - if ( !oSettings.oFeatures.bServerSide && - (oSettings.aaSorting.length !== 0 || oSettings.aaSortingFixed !== null) ) - { - aaSort = ( oSettings.aaSortingFixed !== null ) ? - oSettings.aaSortingFixed.concat( oSettings.aaSorting ) : - oSettings.aaSorting.slice(); - - /* If there is a sorting data type, and a function belonging to it, then we need to - * get the data from the developer's function and apply it for this column - */ - for ( i=0 ; i/g, "" ); - nTh = aoColumns[i].nTh; - nTh.removeAttribute('aria-sort'); - nTh.removeAttribute('aria-label'); - - /* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */ - if ( aoColumns[i].bSortable ) - { - if ( aaSort.length > 0 && aaSort[0][0] == i ) - { - nTh.setAttribute('aria-sort', aaSort[0][1]=="asc" ? "ascending" : "descending" ); - - var nextSort = (aoColumns[i].asSorting[ aaSort[0][2]+1 ]) ? - aoColumns[i].asSorting[ aaSort[0][2]+1 ] : aoColumns[i].asSorting[0]; - nTh.setAttribute('aria-label', sTitle+ - (nextSort=="asc" ? oAria.sSortAscending : oAria.sSortDescending) ); - } - else - { - nTh.setAttribute('aria-label', sTitle+ - (aoColumns[i].asSorting[0]=="asc" ? oAria.sSortAscending : oAria.sSortDescending) ); - } - } - else - { - nTh.setAttribute('aria-label', sTitle); - } - } - - /* Tell the draw function that we have sorted the data */ - oSettings.bSorted = true; - $(oSettings.oInstance).trigger('sort', oSettings); - - /* Copy the master data into the draw array and re-draw */ - if ( oSettings.oFeatures.bFilter ) - { - /* _fnFilter() will redraw the table for us */ - _fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 ); - } - else - { - oSettings.aiDisplay = oSettings.aiDisplayMaster.slice(); - oSettings._iDisplayStart = 0; /* reset display back to page 0 */ - _fnCalculateEnd( oSettings ); - _fnDraw( oSettings ); - } - } - - - /** - * Attach a sort handler (click) to a node - * @param {object} oSettings dataTables settings object - * @param {node} nNode node to attach the handler to - * @param {int} iDataIndex column sorting index - * @param {function} [fnCallback] callback function - * @memberof DataTable#oApi - */ - function _fnSortAttachListener ( oSettings, nNode, iDataIndex, fnCallback ) - { - _fnBindAction( nNode, {}, function (e) { - /* If the column is not sortable - don't to anything */ - if ( oSettings.aoColumns[iDataIndex].bSortable === false ) - { - return; - } - - /* - * This is a little bit odd I admit... I declare a temporary function inside the scope of - * _fnBuildHead and the click handler in order that the code presented here can be used - * twice - once for when bProcessing is enabled, and another time for when it is - * disabled, as we need to perform slightly different actions. - * Basically the issue here is that the Javascript engine in modern browsers don't - * appear to allow the rendering engine to update the display while it is still executing - * it's thread (well - it does but only after long intervals). This means that the - * 'processing' display doesn't appear for a table sort. To break the js thread up a bit - * I force an execution break by using setTimeout - but this breaks the expected - * thread continuation for the end-developer's point of view (their code would execute - * too early), so we only do it when we absolutely have to. - */ - var fnInnerSorting = function () { - var iColumn, iNextSort; - - /* If the shift key is pressed then we are multiple column sorting */ - if ( e.shiftKey ) - { - /* Are we already doing some kind of sort on this column? */ - var bFound = false; - for ( var i=0 ; i 0 && sCurrentClass.indexOf(sNewClass) == -1 ) - { - /* We need to add a class */ - nTds[i].className = sCurrentClass + " " + sNewClass; - } - } - } - } - - - - /** - * Save the state of a table in a cookie such that the page can be reloaded - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnSaveState ( oSettings ) - { - if ( !oSettings.oFeatures.bStateSave || oSettings.bDestroying ) - { - return; - } - - /* Store the interesting variables */ - var i, iLen, bInfinite=oSettings.oScroll.bInfinite; - var oState = { - "iCreate": new Date().getTime(), - "iStart": (bInfinite ? 0 : oSettings._iDisplayStart), - "iEnd": (bInfinite ? oSettings._iDisplayLength : oSettings._iDisplayEnd), - "iLength": oSettings._iDisplayLength, - "aaSorting": $.extend( true, [], oSettings.aaSorting ), - "oSearch": $.extend( true, {}, oSettings.oPreviousSearch ), - "aoSearchCols": $.extend( true, [], oSettings.aoPreSearchCols ), - "abVisCols": [] - }; - - for ( i=0, iLen=oSettings.aoColumns.length ; i 4096 ) /* Magic 10 for padding */ - { - for ( var i=0, iLen=aCookies.length ; i 4096 ) { - if ( aOldCookies.length === 0 ) { - // Deleted all DT cookies and still not enough space. Can't state save - return; - } - - var old = aOldCookies.pop(); - document.cookie = old.name+"=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path="+ - aParts.join('/') + "/"; - } - } - - document.cookie = sFullCookie; - } - - - /** - * Read an old cookie to get a cookie with an old table state - * @param {string} sName name of the cookie to read - * @returns {string} contents of the cookie - or null if no cookie with that name found - * @memberof DataTable#oApi - */ - function _fnReadCookie ( sName ) - { - var - aParts = window.location.pathname.split('/'), - sNameEQ = sName + '_' + aParts[aParts.length-1].replace(/[\/:]/g,"").toLowerCase() + '=', - sCookieContents = document.cookie.split(';'); - - for( var i=0 ; i=0 ; i-- ) - { - aRet.push( aoStore[i].fn.apply( oSettings.oInstance, aArgs ) ); - } - - if ( sTrigger !== null ) - { - $(oSettings.oInstance).trigger(sTrigger, aArgs); - } - - return aRet; - } - - - /** - * JSON stringify. If JSON.stringify it provided by the browser, json2.js or any other - * library, then we use that as it is fast, safe and accurate. If the function isn't - * available then we need to built it ourselves - the inspiration for this function comes - * from Craig Buckler ( http://www.sitepoint.com/javascript-json-serialization/ ). It is - * not perfect and absolutely should not be used as a replacement to json2.js - but it does - * do what we need, without requiring a dependency for DataTables. - * @param {object} o JSON object to be converted - * @returns {string} JSON string - * @memberof DataTable#oApi - */ - var _fnJsonString = (window.JSON) ? JSON.stringify : function( o ) - { - /* Not an object or array */ - var sType = typeof o; - if (sType !== "object" || o === null) - { - // simple data type - if (sType === "string") - { - o = '"'+o+'"'; - } - return o+""; - } - - /* If object or array, need to recurse over it */ - var - sProp, mValue, - json = [], - bArr = $.isArray(o); - - for (sProp in o) - { - mValue = o[sProp]; - sType = typeof mValue; - - if (sType === "string") - { - mValue = '"'+mValue+'"'; - } - else if (sType === "object" && mValue !== null) - { - mValue = _fnJsonString(mValue); - } - - json.push((bArr ? "" : '"'+sProp+'":') + mValue); - } - - return (bArr ? "[" : "{") + json + (bArr ? "]" : "}"); - }; - - - /** - * From some browsers (specifically IE6/7) we need special handling to work around browser - * bugs - this function is used to detect when these workarounds are needed. - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnBrowserDetect( oSettings ) - { - /* IE6/7 will oversize a width 100% element inside a scrolling element, to include the - * width of the scrollbar, while other browsers ensure the inner element is contained - * without forcing scrolling - */ - var n = $( - '
    '+ - '
    '+ - '
    '+ - '
    '+ - '
    ')[0]; - - document.body.appendChild( n ); - oSettings.oBrowser.bScrollOversize = $('#DT_BrowserTest', n)[0].offsetWidth === 100 ? true : false; - document.body.removeChild( n ); - } - - - /** - * Perform a jQuery selector action on the table's TR elements (from the tbody) and - * return the resulting jQuery object. - * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on - * @param {object} [oOpts] Optional parameters for modifying the rows to be included - * @param {string} [oOpts.filter=none] Select TR elements that meet the current filter - * criterion ("applied") or all TR elements (i.e. no filter). - * @param {string} [oOpts.order=current] Order of the TR elements in the processed array. - * Can be either 'current', whereby the current sorting of the table is used, or - * 'original' whereby the original order the data was read into the table is used. - * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page - * ("current") or not ("all"). If 'current' is given, then order is assumed to be - * 'current' and filter is 'applied', regardless of what they might be given as. - * @returns {object} jQuery object, filtered by the given selector. - * @dtopt API - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Highlight every second row - * oTable.$('tr:odd').css('backgroundColor', 'blue'); - * } ); - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Filter to rows with 'Webkit' in them, add a background colour and then - * // remove the filter, thus highlighting the 'Webkit' rows only. - * oTable.fnFilter('Webkit'); - * oTable.$('tr', {"filter": "applied"}).css('backgroundColor', 'blue'); - * oTable.fnFilter(''); - * } ); - */ - this.$ = function ( sSelector, oOpts ) - { - var i, iLen, a = [], tr; - var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] ); - var aoData = oSettings.aoData; - var aiDisplay = oSettings.aiDisplay; - var aiDisplayMaster = oSettings.aiDisplayMaster; - - if ( !oOpts ) - { - oOpts = {}; - } - - oOpts = $.extend( {}, { - "filter": "none", // applied - "order": "current", // "original" - "page": "all" // current - }, oOpts ); - - // Current page implies that order=current and fitler=applied, since it is fairly - // senseless otherwise - if ( oOpts.page == 'current' ) - { - for ( i=oSettings._iDisplayStart, iLen=oSettings.fnDisplayEnd() ; i - *
  • 1D array of data - add a single row with the data provided
  • - *
  • 2D array of arrays - add multiple rows in a single call
  • - *
  • object - data object when using mData
  • - *
  • array of objects - multiple data objects when using mData
  • - * - * @param {bool} [bRedraw=true] redraw the table or not - * @returns {array} An array of integers, representing the list of indexes in - * aoData ({@link DataTable.models.oSettings}) that have been added to - * the table. - * @dtopt API - * - * @example - * // Global var for counter - * var giCount = 2; - * - * $(document).ready(function() { - * $('#example').dataTable(); - * } ); - * - * function fnClickAddRow() { - * $('#example').dataTable().fnAddData( [ - * giCount+".1", - * giCount+".2", - * giCount+".3", - * giCount+".4" ] - * ); - * - * giCount++; - * } - */ - this.fnAddData = function( mData, bRedraw ) - { - if ( mData.length === 0 ) - { - return []; - } - - var aiReturn = []; - var iTest; - - /* Find settings from table node */ - var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] ); - - /* Check if we want to add multiple rows or not */ - if ( typeof mData[0] === "object" && mData[0] !== null ) - { - for ( var i=0 ; i= oSettings.fnRecordsDisplay() ) - { - oSettings._iDisplayStart -= oSettings._iDisplayLength; - if ( oSettings._iDisplayStart < 0 ) - { - oSettings._iDisplayStart = 0; - } - } - - if ( bRedraw === undefined || bRedraw ) - { - _fnCalculateEnd( oSettings ); - _fnDraw( oSettings ); - } - - return oData; - }; - - - /** - * Restore the table to it's original state in the DOM by removing all of DataTables - * enhancements, alterations to the DOM structure of the table and event listeners. - * @param {boolean} [bRemove=false] Completely remove the table from the DOM - * @dtopt API - * - * @example - * $(document).ready(function() { - * // This example is fairly pointless in reality, but shows how fnDestroy can be used - * var oTable = $('#example').dataTable(); - * oTable.fnDestroy(); - * } ); - */ - this.fnDestroy = function ( bRemove ) - { - var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] ); - var nOrig = oSettings.nTableWrapper.parentNode; - var nBody = oSettings.nTBody; - var i, iLen; - - bRemove = (bRemove===undefined) ? false : bRemove; - - /* Flag to note that the table is currently being destroyed - no action should be taken */ - oSettings.bDestroying = true; - - /* Fire off the destroy callbacks for plug-ins etc */ - _fnCallbackFire( oSettings, "aoDestroyCallback", "destroy", [oSettings] ); - - /* If the table is not being removed, restore the hidden columns */ - if ( !bRemove ) - { - for ( i=0, iLen=oSettings.aoColumns.length ; itr>td.'+oSettings.oClasses.sRowEmpty, oSettings.nTable).parent().remove(); - - /* When scrolling we had to break the table up - restore it */ - if ( oSettings.nTable != oSettings.nTHead.parentNode ) - { - $(oSettings.nTable).children('thead').remove(); - oSettings.nTable.appendChild( oSettings.nTHead ); - } - - if ( oSettings.nTFoot && oSettings.nTable != oSettings.nTFoot.parentNode ) - { - $(oSettings.nTable).children('tfoot').remove(); - oSettings.nTable.appendChild( oSettings.nTFoot ); - } - - /* Remove the DataTables generated nodes, events and classes */ - oSettings.nTable.parentNode.removeChild( oSettings.nTable ); - $(oSettings.nTableWrapper).remove(); - - oSettings.aaSorting = []; - oSettings.aaSortingFixed = []; - _fnSortingClasses( oSettings ); - - $(_fnGetTrNodes( oSettings )).removeClass( oSettings.asStripeClasses.join(' ') ); - - $('th, td', oSettings.nTHead).removeClass( [ - oSettings.oClasses.sSortable, - oSettings.oClasses.sSortableAsc, - oSettings.oClasses.sSortableDesc, - oSettings.oClasses.sSortableNone ].join(' ') - ); - if ( oSettings.bJUI ) - { - $('th span.'+oSettings.oClasses.sSortIcon - + ', td span.'+oSettings.oClasses.sSortIcon, oSettings.nTHead).remove(); - - $('th, td', oSettings.nTHead).each( function () { - var jqWrapper = $('div.'+oSettings.oClasses.sSortJUIWrapper, this); - var kids = jqWrapper.contents(); - $(this).append( kids ); - jqWrapper.remove(); - } ); - } - - /* Add the TR elements back into the table in their original order */ - if ( !bRemove && oSettings.nTableReinsertBefore ) - { - nOrig.insertBefore( oSettings.nTable, oSettings.nTableReinsertBefore ); - } - else if ( !bRemove ) - { - nOrig.appendChild( oSettings.nTable ); - } - - for ( i=0, iLen=oSettings.aoData.length ; i
    for filtering data. - *
      - *
    • - * Function input parameters: - *
        - *
      • {*} Data from the column cell to be prepared for filtering
      • - *
      - *
    • - *
    • - * Function return: - *
        - *
      • {string|null} Formatted string that will be used for the filtering.
      • - *
      - * - *
    - * - * Note that as of v1.9, it is typically preferable to use mData to prepare data for - * the different uses that DataTables can put the data to. Specifically mData when - * used as a function will give you a 'type' (sorting, filtering etc) that you can use to - * prepare the data as required for the different types. As such, this method is deprecated. - * @type object - * @default {} - * @deprecated - * - * @example - * $.fn.dataTableExt.ofnSearch['title-numeric'] = function ( sData ) { - * return sData.replace(/\n/g," ").replace( /<.*?>/g, "" ); - * } - */ - "ofnSearch": {}, - - - /** - * Container for all private functions in DataTables so they can be exposed externally - * @type object - * @default {} - */ - "oApi": {}, - - - /** - * Storage for the various classes that DataTables uses - * @type object - * @default {} - */ - "oStdClasses": {}, - - - /** - * Storage for the various classes that DataTables uses - jQuery UI suitable - * @type object - * @default {} - */ - "oJUIClasses": {}, - - - /** - * Pagination plug-in methods - The style and controls of the pagination can significantly - * impact on how the end user interacts with the data in your table, and DataTables allows - * the addition of pagination controls by extending this object, which can then be enabled - * through the sPaginationType initialisation parameter. Each pagination type that - * is added is an object (the property name of which is what sPaginationType refers - * to) that has two properties, both methods that are used by DataTables to update the - * control's state. - *
      - *
    • - * fnInit - Initialisation of the paging controls. Called only during initialisation - * of the table. It is expected that this function will add the required DOM elements - * to the page for the paging controls to work. The element pointer - * 'oSettings.aanFeatures.p' array is provided by DataTables to contain the paging - * controls (note that this is a 2D array to allow for multiple instances of each - * DataTables DOM element). It is suggested that you add the controls to this element - * as children - *
        - *
      • - * Function input parameters: - *
          - *
        • {object} DataTables settings object: see {@link DataTable.models.oSettings}.
        • - *
        • {node} Container into which the pagination controls must be inserted
        • - *
        • {function} Draw callback function - whenever the controls cause a page - * change, this method must be called to redraw the table.
        • - *
        - *
      • - *
      • - * Function return: - *
          - *
        • No return required
        • - *
        - * - *
      - * - *
    • - * fnInit - This function is called whenever the paging status of the table changes and is - * typically used to update classes and/or text of the paging controls to reflex the new - * status. - *
        - *
      • - * Function input parameters: - *
          - *
        • {object} DataTables settings object: see {@link DataTable.models.oSettings}.
        • - *
        • {function} Draw callback function - in case you need to redraw the table again - * or attach new event listeners
        • - *
        - *
      • - *
      • - * Function return: - *
          - *
        • No return required
        • - *
        - * - *
      - * - *
    - * @type object - * @default {} - * - * @example - * $.fn.dataTableExt.oPagination.four_button = { - * "fnInit": function ( oSettings, nPaging, fnCallbackDraw ) { - * nFirst = document.createElement( 'span' ); - * nPrevious = document.createElement( 'span' ); - * nNext = document.createElement( 'span' ); - * nLast = document.createElement( 'span' ); - * - * nFirst.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sFirst ) ); - * nPrevious.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sPrevious ) ); - * nNext.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sNext ) ); - * nLast.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sLast ) ); - * - * nFirst.className = "paginate_button first"; - * nPrevious.className = "paginate_button previous"; - * nNext.className="paginate_button next"; - * nLast.className = "paginate_button last"; - * - * nPaging.appendChild( nFirst ); - * nPaging.appendChild( nPrevious ); - * nPaging.appendChild( nNext ); - * nPaging.appendChild( nLast ); - * - * $(nFirst).click( function () { - * oSettings.oApi._fnPageChange( oSettings, "first" ); - * fnCallbackDraw( oSettings ); - * } ); - * - * $(nPrevious).click( function() { - * oSettings.oApi._fnPageChange( oSettings, "previous" ); - * fnCallbackDraw( oSettings ); - * } ); - * - * $(nNext).click( function() { - * oSettings.oApi._fnPageChange( oSettings, "next" ); - * fnCallbackDraw( oSettings ); - * } ); - * - * $(nLast).click( function() { - * oSettings.oApi._fnPageChange( oSettings, "last" ); - * fnCallbackDraw( oSettings ); - * } ); - * - * $(nFirst).bind( 'selectstart', function () { return false; } ); - * $(nPrevious).bind( 'selectstart', function () { return false; } ); - * $(nNext).bind( 'selectstart', function () { return false; } ); - * $(nLast).bind( 'selectstart', function () { return false; } ); - * }, - * - * "fnUpdate": function ( oSettings, fnCallbackDraw ) { - * if ( !oSettings.aanFeatures.p ) { - * return; - * } - * - * // Loop over each instance of the pager - * var an = oSettings.aanFeatures.p; - * for ( var i=0, iLen=an.length ; i - *
  • - * Function input parameters: - *
      - *
    • {*} Data to compare to the second parameter
    • - *
    • {*} Data to compare to the first parameter
    • - *
    - *
  • - *
  • - * Function return: - *
      - *
    • {int} Sorting match: <0 if first parameter should be sorted lower than - * the second parameter, ===0 if the two parameters are equal and >0 if - * the first parameter should be sorted height than the second parameter.
    • - *
    - * - * - * @type object - * @default {} - * - * @example - * // Case-sensitive string sorting, with no pre-formatting method - * $.extend( $.fn.dataTableExt.oSort, { - * "string-case-asc": function(x,y) { - * return ((x < y) ? -1 : ((x > y) ? 1 : 0)); - * }, - * "string-case-desc": function(x,y) { - * return ((x < y) ? 1 : ((x > y) ? -1 : 0)); - * } - * } ); - * - * @example - * // Case-insensitive string sorting, with pre-formatting - * $.extend( $.fn.dataTableExt.oSort, { - * "string-pre": function(x) { - * return x.toLowerCase(); - * }, - * "string-asc": function(x,y) { - * return ((x < y) ? -1 : ((x > y) ? 1 : 0)); - * }, - * "string-desc": function(x,y) { - * return ((x < y) ? 1 : ((x > y) ? -1 : 0)); - * } - * } ); - */ - "oSort": {}, - - - /** - * Version string for plug-ins to check compatibility. Allowed format is - * a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and - * e are optional - * @type string - * @default Version number - */ - "sVersion": DataTable.version, - - - /** - * How should DataTables report an error. Can take the value 'alert' or 'throw' - * @type string - * @default alert - */ - "sErrMode": "alert", - - - /** - * Store information for DataTables to access globally about other instances - * @namespace - * @private - */ - "_oExternConfig": { - /* int:iNextUnique - next unique number for an instance */ - "iNextUnique": 0 - } - }; - - - - - /** - * Template object for the way in which DataTables holds information about - * search information for the global filter and individual column filters. - * @namespace - */ - DataTable.models.oSearch = { - /** - * Flag to indicate if the filtering should be case insensitive or not - * @type boolean - * @default true - */ - "bCaseInsensitive": true, - - /** - * Applied search term - * @type string - * @default Empty string - */ - "sSearch": "", - - /** - * Flag to indicate if the search term should be interpreted as a - * regular expression (true) or not (false) and therefore and special - * regex characters escaped. - * @type boolean - * @default false - */ - "bRegex": false, - - /** - * Flag to indicate if DataTables is to use its smart filtering or not. - * @type boolean - * @default true - */ - "bSmart": true - }; - - - - - /** - * Template object for the way in which DataTables holds information about - * each individual row. This is the object format used for the settings - * aoData array. - * @namespace - */ - DataTable.models.oRow = { - /** - * TR element for the row - * @type node - * @default null - */ - "nTr": null, - - /** - * Data object from the original data source for the row. This is either - * an array if using the traditional form of DataTables, or an object if - * using mData options. The exact type will depend on the passed in - * data from the data source, or will be an array if using DOM a data - * source. - * @type array|object - * @default [] - */ - "_aData": [], - - /** - * Sorting data cache - this array is ostensibly the same length as the - * number of columns (although each index is generated only as it is - * needed), and holds the data that is used for sorting each column in the - * row. We do this cache generation at the start of the sort in order that - * the formatting of the sort data need be done only once for each cell - * per sort. This array should not be read from or written to by anything - * other than the master sorting methods. - * @type array - * @default [] - * @private - */ - "_aSortData": [], - - /** - * Array of TD elements that are cached for hidden rows, so they can be - * reinserted into the table if a column is made visible again (or to act - * as a store if a column is made hidden). Only hidden columns have a - * reference in the array. For non-hidden columns the value is either - * undefined or null. - * @type array nodes - * @default [] - * @private - */ - "_anHidden": [], - - /** - * Cache of the class name that DataTables has applied to the row, so we - * can quickly look at this variable rather than needing to do a DOM check - * on className for the nTr property. - * @type string - * @default Empty string - * @private - */ - "_sRowStripe": "" - }; - - - - /** - * Template object for the column information object in DataTables. This object - * is held in the settings aoColumns array and contains all the information that - * DataTables needs about each individual column. - * - * Note that this object is related to {@link DataTable.defaults.columns} - * but this one is the internal data store for DataTables's cache of columns. - * It should NOT be manipulated outside of DataTables. Any configuration should - * be done through the initialisation options. - * @namespace - */ - DataTable.models.oColumn = { - /** - * A list of the columns that sorting should occur on when this column - * is sorted. That this property is an array allows multi-column sorting - * to be defined for a column (for example first name / last name columns - * would benefit from this). The values are integers pointing to the - * columns to be sorted on (typically it will be a single integer pointing - * at itself, but that doesn't need to be the case). - * @type array - */ - "aDataSort": null, - - /** - * Define the sorting directions that are applied to the column, in sequence - * as the column is repeatedly sorted upon - i.e. the first value is used - * as the sorting direction when the column if first sorted (clicked on). - * Sort it again (click again) and it will move on to the next index. - * Repeat until loop. - * @type array - */ - "asSorting": null, - - /** - * Flag to indicate if the column is searchable, and thus should be included - * in the filtering or not. - * @type boolean - */ - "bSearchable": null, - - /** - * Flag to indicate if the column is sortable or not. - * @type boolean - */ - "bSortable": null, - - /** - * Deprecated When using fnRender, you have two options for what - * to do with the data, and this property serves as the switch. Firstly, you - * can have the sorting and filtering use the rendered value (true - default), - * or you can have the sorting and filtering us the original value (false). - * - * Please note that this option has now been deprecated and will be removed - * in the next version of DataTables. Please use mRender / mData rather than - * fnRender. - * @type boolean - * @deprecated - */ - "bUseRendered": null, - - /** - * Flag to indicate if the column is currently visible in the table or not - * @type boolean - */ - "bVisible": null, - - /** - * Flag to indicate to the type detection method if the automatic type - * detection should be used, or if a column type (sType) has been specified - * @type boolean - * @default true - * @private - */ - "_bAutoType": true, - - /** - * Developer definable function that is called whenever a cell is created (Ajax source, - * etc) or processed for input (DOM source). This can be used as a compliment to mRender - * allowing you to modify the DOM element (add background colour for example) when the - * element is available. - * @type function - * @param {element} nTd The TD node that has been created - * @param {*} sData The Data for the cell - * @param {array|object} oData The data for the whole row - * @param {int} iRow The row index for the aoData data store - * @default null - */ - "fnCreatedCell": null, - - /** - * Function to get data from a cell in a column. You should never - * access data directly through _aData internally in DataTables - always use - * the method attached to this property. It allows mData to function as - * required. This function is automatically assigned by the column - * initialisation method - * @type function - * @param {array|object} oData The data array/object for the array - * (i.e. aoData[]._aData) - * @param {string} sSpecific The specific data type you want to get - - * 'display', 'type' 'filter' 'sort' - * @returns {*} The data for the cell from the given row's data - * @default null - */ - "fnGetData": null, - - /** - * Deprecated Custom display function that will be called for the - * display of each cell in this column. - * - * Please note that this option has now been deprecated and will be removed - * in the next version of DataTables. Please use mRender / mData rather than - * fnRender. - * @type function - * @param {object} o Object with the following parameters: - * @param {int} o.iDataRow The row in aoData - * @param {int} o.iDataColumn The column in question - * @param {array} o.aData The data for the row in question - * @param {object} o.oSettings The settings object for this DataTables instance - * @returns {string} The string you which to use in the display - * @default null - * @deprecated - */ - "fnRender": null, - - /** - * Function to set data for a cell in the column. You should never - * set the data directly to _aData internally in DataTables - always use - * this method. It allows mData to function as required. This function - * is automatically assigned by the column initialisation method - * @type function - * @param {array|object} oData The data array/object for the array - * (i.e. aoData[]._aData) - * @param {*} sValue Value to set - * @default null - */ - "fnSetData": null, - - /** - * Property to read the value for the cells in the column from the data - * source array / object. If null, then the default content is used, if a - * function is given then the return from the function is used. - * @type function|int|string|null - * @default null - */ - "mData": null, - - /** - * Partner property to mData which is used (only when defined) to get - * the data - i.e. it is basically the same as mData, but without the - * 'set' option, and also the data fed to it is the result from mData. - * This is the rendering method to match the data method of mData. - * @type function|int|string|null - * @default null - */ - "mRender": null, - - /** - * Unique header TH/TD element for this column - this is what the sorting - * listener is attached to (if sorting is enabled.) - * @type node - * @default null - */ - "nTh": null, - - /** - * Unique footer TH/TD element for this column (if there is one). Not used - * in DataTables as such, but can be used for plug-ins to reference the - * footer for each column. - * @type node - * @default null - */ - "nTf": null, - - /** - * The class to apply to all TD elements in the table's TBODY for the column - * @type string - * @default null - */ - "sClass": null, - - /** - * When DataTables calculates the column widths to assign to each column, - * it finds the longest string in each column and then constructs a - * temporary table and reads the widths from that. The problem with this - * is that "mmm" is much wider then "iiii", but the latter is a longer - * string - thus the calculation can go wrong (doing it properly and putting - * it into an DOM object and measuring that is horribly(!) slow). Thus as - * a "work around" we provide this option. It will append its value to the - * text that is found to be the longest string for the column - i.e. padding. - * @type string - */ - "sContentPadding": null, - - /** - * Allows a default value to be given for a column's data, and will be used - * whenever a null data source is encountered (this can be because mData - * is set to null, or because the data source itself is null). - * @type string - * @default null - */ - "sDefaultContent": null, - - /** - * Name for the column, allowing reference to the column by name as well as - * by index (needs a lookup to work by name). - * @type string - */ - "sName": null, - - /** - * Custom sorting data type - defines which of the available plug-ins in - * afnSortData the custom sorting will use - if any is defined. - * @type string - * @default std - */ - "sSortDataType": 'std', - - /** - * Class to be applied to the header element when sorting on this column - * @type string - * @default null - */ - "sSortingClass": null, - - /** - * Class to be applied to the header element when sorting on this column - - * when jQuery UI theming is used. - * @type string - * @default null - */ - "sSortingClassJUI": null, - - /** - * Title of the column - what is seen in the TH element (nTh). - * @type string - */ - "sTitle": null, - - /** - * Column sorting and filtering type - * @type string - * @default null - */ - "sType": null, - - /** - * Width of the column - * @type string - * @default null - */ - "sWidth": null, - - /** - * Width of the column when it was first "encountered" - * @type string - * @default null - */ - "sWidthOrig": null - }; - - - - /** - * Initialisation options that can be given to DataTables at initialisation - * time. - * @namespace - */ - DataTable.defaults = { - /** - * An array of data to use for the table, passed in at initialisation which - * will be used in preference to any data which is already in the DOM. This is - * particularly useful for constructing tables purely in Javascript, for - * example with a custom Ajax call. - * @type array - * @default null - * @dtopt Option - * - * @example - * // Using a 2D array data source - * $(document).ready( function () { - * $('#example').dataTable( { - * "aaData": [ - * ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'], - * ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'], - * ], - * "aoColumns": [ - * { "sTitle": "Engine" }, - * { "sTitle": "Browser" }, - * { "sTitle": "Platform" }, - * { "sTitle": "Version" }, - * { "sTitle": "Grade" } - * ] - * } ); - * } ); - * - * @example - * // Using an array of objects as a data source (mData) - * $(document).ready( function () { - * $('#example').dataTable( { - * "aaData": [ - * { - * "engine": "Trident", - * "browser": "Internet Explorer 4.0", - * "platform": "Win 95+", - * "version": 4, - * "grade": "X" - * }, - * { - * "engine": "Trident", - * "browser": "Internet Explorer 5.0", - * "platform": "Win 95+", - * "version": 5, - * "grade": "C" - * } - * ], - * "aoColumns": [ - * { "sTitle": "Engine", "mData": "engine" }, - * { "sTitle": "Browser", "mData": "browser" }, - * { "sTitle": "Platform", "mData": "platform" }, - * { "sTitle": "Version", "mData": "version" }, - * { "sTitle": "Grade", "mData": "grade" } - * ] - * } ); - * } ); - */ - "aaData": null, - - - /** - * If sorting is enabled, then DataTables will perform a first pass sort on - * initialisation. You can define which column(s) the sort is performed upon, - * and the sorting direction, with this variable. The aaSorting array should - * contain an array for each column to be sorted initially containing the - * column's index and a direction string ('asc' or 'desc'). - * @type array - * @default [[0,'asc']] - * @dtopt Option - * - * @example - * // Sort by 3rd column first, and then 4th column - * $(document).ready( function() { - * $('#example').dataTable( { - * "aaSorting": [[2,'asc'], [3,'desc']] - * } ); - * } ); - * - * // No initial sorting - * $(document).ready( function() { - * $('#example').dataTable( { - * "aaSorting": [] - * } ); - * } ); - */ - "aaSorting": [[0,'asc']], - - - /** - * This parameter is basically identical to the aaSorting parameter, but - * cannot be overridden by user interaction with the table. What this means - * is that you could have a column (visible or hidden) which the sorting will - * always be forced on first - any sorting after that (from the user) will - * then be performed as required. This can be useful for grouping rows - * together. - * @type array - * @default null - * @dtopt Option - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "aaSortingFixed": [[0,'asc']] - * } ); - * } ) - */ - "aaSortingFixed": null, - - - /** - * This parameter allows you to readily specify the entries in the length drop - * down menu that DataTables shows when pagination is enabled. It can be - * either a 1D array of options which will be used for both the displayed - * option and the value, or a 2D array which will use the array in the first - * position as the value, and the array in the second position as the - * displayed options (useful for language strings such as 'All'). - * @type array - * @default [ 10, 25, 50, 100 ] - * @dtopt Option - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]] - * } ); - * } ); - * - * @example - * // Setting the default display length as well as length menu - * // This is likely to be wanted if you remove the '10' option which - * // is the iDisplayLength default. - * $(document).ready( function() { - * $('#example').dataTable( { - * "iDisplayLength": 25, - * "aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]] - * } ); - * } ); - */ - "aLengthMenu": [ 10, 25, 50, 100 ], - - - /** - * The aoColumns option in the initialisation parameter allows you to define - * details about the way individual columns behave. For a full list of - * column options that can be set, please see - * {@link DataTable.defaults.columns}. Note that if you use aoColumns to - * define your columns, you must have an entry in the array for every single - * column that you have in your table (these can be null if you don't which - * to specify any options). - * @member - */ - "aoColumns": null, - - /** - * Very similar to aoColumns, aoColumnDefs allows you to target a specific - * column, multiple columns, or all columns, using the aTargets property of - * each object in the array. This allows great flexibility when creating - * tables, as the aoColumnDefs arrays can be of any length, targeting the - * columns you specifically want. aoColumnDefs may use any of the column - * options available: {@link DataTable.defaults.columns}, but it _must_ - * have aTargets defined in each object in the array. Values in the aTargets - * array may be: - *
      - *
    • a string - class name will be matched on the TH for the column
    • - *
    • 0 or a positive integer - column index counting from the left
    • - *
    • a negative integer - column index counting from the right
    • - *
    • the string "_all" - all columns (i.e. assign a default)
    • - *
    - * @member - */ - "aoColumnDefs": null, - - - /** - * Basically the same as oSearch, this parameter defines the individual column - * filtering state at initialisation time. The array must be of the same size - * as the number of columns, and each element be an object with the parameters - * "sSearch" and "bEscapeRegex" (the latter is optional). 'null' is also - * accepted and the default will be used. - * @type array - * @default [] - * @dtopt Option - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoSearchCols": [ - * null, - * { "sSearch": "My filter" }, - * null, - * { "sSearch": "^[0-9]", "bEscapeRegex": false } - * ] - * } ); - * } ) - */ - "aoSearchCols": [], - - - /** - * An array of CSS classes that should be applied to displayed rows. This - * array may be of any length, and DataTables will apply each class - * sequentially, looping when required. - * @type array - * @default null Will take the values determined by the oClasses.sStripe* - * options - * @dtopt Option - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "asStripeClasses": [ 'strip1', 'strip2', 'strip3' ] - * } ); - * } ) - */ - "asStripeClasses": null, - - - /** - * Enable or disable automatic column width calculation. This can be disabled - * as an optimisation (it takes some time to calculate the widths) if the - * tables widths are passed in using aoColumns. - * @type boolean - * @default true - * @dtopt Features - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "bAutoWidth": false - * } ); - * } ); - */ - "bAutoWidth": true, - - - /** - * Deferred rendering can provide DataTables with a huge speed boost when you - * are using an Ajax or JS data source for the table. This option, when set to - * true, will cause DataTables to defer the creation of the table elements for - * each row until they are needed for a draw - saving a significant amount of - * time. - * @type boolean - * @default false - * @dtopt Features - * - * @example - * $(document).ready( function() { - * var oTable = $('#example').dataTable( { - * "sAjaxSource": "sources/arrays.txt", - * "bDeferRender": true - * } ); - * } ); - */ - "bDeferRender": false, - - - /** - * Replace a DataTable which matches the given selector and replace it with - * one which has the properties of the new initialisation object passed. If no - * table matches the selector, then the new DataTable will be constructed as - * per normal. - * @type boolean - * @default false - * @dtopt Options - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "sScrollY": "200px", - * "bPaginate": false - * } ); - * - * // Some time later.... - * $('#example').dataTable( { - * "bFilter": false, - * "bDestroy": true - * } ); - * } ); - */ - "bDestroy": false, - - - /** - * Enable or disable filtering of data. Filtering in DataTables is "smart" in - * that it allows the end user to input multiple words (space separated) and - * will match a row containing those words, even if not in the order that was - * specified (this allow matching across multiple columns). Note that if you - * wish to use filtering in DataTables this must remain 'true' - to remove the - * default filtering input box and retain filtering abilities, please use - * {@link DataTable.defaults.sDom}. - * @type boolean - * @default true - * @dtopt Features - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "bFilter": false - * } ); - * } ); - */ - "bFilter": true, - - - /** - * Enable or disable the table information display. This shows information - * about the data that is currently visible on the page, including information - * about filtered data if that action is being performed. - * @type boolean - * @default true - * @dtopt Features - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "bInfo": false - * } ); - * } ); - */ - "bInfo": true, - - - /** - * Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some - * slightly different and additional mark-up from what DataTables has - * traditionally used). - * @type boolean - * @default false - * @dtopt Features - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "bJQueryUI": true - * } ); - * } ); - */ - "bJQueryUI": false, - - - /** - * Allows the end user to select the size of a formatted page from a select - * menu (sizes are 10, 25, 50 and 100). Requires pagination (bPaginate). - * @type boolean - * @default true - * @dtopt Features - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "bLengthChange": false - * } ); - * } ); - */ - "bLengthChange": true, - - - /** - * Enable or disable pagination. - * @type boolean - * @default true - * @dtopt Features - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "bPaginate": false - * } ); - * } ); - */ - "bPaginate": true, - - - /** - * Enable or disable the display of a 'processing' indicator when the table is - * being processed (e.g. a sort). This is particularly useful for tables with - * large amounts of data where it can take a noticeable amount of time to sort - * the entries. - * @type boolean - * @default false - * @dtopt Features - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "bProcessing": true - * } ); - * } ); - */ - "bProcessing": false, - - - /** - * Retrieve the DataTables object for the given selector. Note that if the - * table has already been initialised, this parameter will cause DataTables - * to simply return the object that has already been set up - it will not take - * account of any changes you might have made to the initialisation object - * passed to DataTables (setting this parameter to true is an acknowledgement - * that you understand this). bDestroy can be used to reinitialise a table if - * you need. - * @type boolean - * @default false - * @dtopt Options - * - * @example - * $(document).ready( function() { - * initTable(); - * tableActions(); - * } ); - * - * function initTable () - * { - * return $('#example').dataTable( { - * "sScrollY": "200px", - * "bPaginate": false, - * "bRetrieve": true - * } ); - * } - * - * function tableActions () - * { - * var oTable = initTable(); - * // perform API operations with oTable - * } - */ - "bRetrieve": false, - - - /** - * Indicate if DataTables should be allowed to set the padding / margin - * etc for the scrolling header elements or not. Typically you will want - * this. - * @type boolean - * @default true - * @dtopt Options - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "bScrollAutoCss": false, - * "sScrollY": "200px" - * } ); - * } ); - */ - "bScrollAutoCss": true, - - - /** - * When vertical (y) scrolling is enabled, DataTables will force the height of - * the table's viewport to the given height at all times (useful for layout). - * However, this can look odd when filtering data down to a small data set, - * and the footer is left "floating" further down. This parameter (when - * enabled) will cause DataTables to collapse the table's viewport down when - * the result set will fit within the given Y height. - * @type boolean - * @default false - * @dtopt Options - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "sScrollY": "200", - * "bScrollCollapse": true - * } ); - * } ); - */ - "bScrollCollapse": false, - - - /** - * Enable infinite scrolling for DataTables (to be used in combination with - * sScrollY). Infinite scrolling means that DataTables will continually load - * data as a user scrolls through a table, which is very useful for large - * dataset. This cannot be used with pagination, which is automatically - * disabled. Note - the Scroller extra for DataTables is recommended in - * in preference to this option. - * @type boolean - * @default false - * @dtopt Features - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "bScrollInfinite": true, - * "bScrollCollapse": true, - * "sScrollY": "200px" - * } ); - * } ); - */ - "bScrollInfinite": false, - - - /** - * Configure DataTables to use server-side processing. Note that the - * sAjaxSource parameter must also be given in order to give DataTables a - * source to obtain the required data for each draw. - * @type boolean - * @default false - * @dtopt Features - * @dtopt Server-side - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "bServerSide": true, - * "sAjaxSource": "xhr.php" - * } ); - * } ); - */ - "bServerSide": false, - - - /** - * Enable or disable sorting of columns. Sorting of individual columns can be - * disabled by the "bSortable" option for each column. - * @type boolean - * @default true - * @dtopt Features - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "bSort": false - * } ); - * } ); - */ - "bSort": true, - - - /** - * Allows control over whether DataTables should use the top (true) unique - * cell that is found for a single column, or the bottom (false - default). - * This is useful when using complex headers. - * @type boolean - * @default false - * @dtopt Options - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "bSortCellsTop": true - * } ); - * } ); - */ - "bSortCellsTop": false, - - - /** - * Enable or disable the addition of the classes 'sorting_1', 'sorting_2' and - * 'sorting_3' to the columns which are currently being sorted on. This is - * presented as a feature switch as it can increase processing time (while - * classes are removed and added) so for large data sets you might want to - * turn this off. - * @type boolean - * @default true - * @dtopt Features - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "bSortClasses": false - * } ); - * } ); - */ - "bSortClasses": true, - - - /** - * Enable or disable state saving. When enabled a cookie will be used to save - * table display information such as pagination information, display length, - * filtering and sorting. As such when the end user reloads the page the - * display display will match what thy had previously set up. - * @type boolean - * @default false - * @dtopt Features - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "bStateSave": true - * } ); - * } ); - */ - "bStateSave": false, - - - /** - * Customise the cookie and / or the parameters being stored when using - * DataTables with state saving enabled. This function is called whenever - * the cookie is modified, and it expects a fully formed cookie string to be - * returned. Note that the data object passed in is a Javascript object which - * must be converted to a string (JSON.stringify for example). - * @type function - * @param {string} sName Name of the cookie defined by DataTables - * @param {object} oData Data to be stored in the cookie - * @param {string} sExpires Cookie expires string - * @param {string} sPath Path of the cookie to set - * @returns {string} Cookie formatted string (which should be encoded by - * using encodeURIComponent()) - * @dtopt Callbacks - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "fnCookieCallback": function (sName, oData, sExpires, sPath) { - * // Customise oData or sName or whatever else here - * return sName + "="+JSON.stringify(oData)+"; expires=" + sExpires +"; path=" + sPath; - * } - * } ); - * } ); - */ - "fnCookieCallback": null, - - - /** - * This function is called when a TR element is created (and all TD child - * elements have been inserted), or registered if using a DOM source, allowing - * manipulation of the TR element (adding classes etc). - * @type function - * @param {node} nRow "TR" element for the current row - * @param {array} aData Raw data array for this row - * @param {int} iDataIndex The index of this row in aoData - * @dtopt Callbacks - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "fnCreatedRow": function( nRow, aData, iDataIndex ) { - * // Bold the grade for all 'A' grade browsers - * if ( aData[4] == "A" ) - * { - * $('td:eq(4)', nRow).html( 'A' ); - * } - * } - * } ); - * } ); - */ - "fnCreatedRow": null, - - - /** - * This function is called on every 'draw' event, and allows you to - * dynamically modify any aspect you want about the created DOM. - * @type function - * @param {object} oSettings DataTables settings object - * @dtopt Callbacks - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "fnDrawCallback": function( oSettings ) { - * alert( 'DataTables has redrawn the table' ); - * } - * } ); - * } ); - */ - "fnDrawCallback": null, - - - /** - * Identical to fnHeaderCallback() but for the table footer this function - * allows you to modify the table footer on every 'draw' even. - * @type function - * @param {node} nFoot "TR" element for the footer - * @param {array} aData Full table data (as derived from the original HTML) - * @param {int} iStart Index for the current display starting point in the - * display array - * @param {int} iEnd Index for the current display ending point in the - * display array - * @param {array int} aiDisplay Index array to translate the visual position - * to the full data array - * @dtopt Callbacks - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "fnFooterCallback": function( nFoot, aData, iStart, iEnd, aiDisplay ) { - * nFoot.getElementsByTagName('th')[0].innerHTML = "Starting index is "+iStart; - * } - * } ); - * } ) - */ - "fnFooterCallback": null, - - - /** - * When rendering large numbers in the information element for the table - * (i.e. "Showing 1 to 10 of 57 entries") DataTables will render large numbers - * to have a comma separator for the 'thousands' units (e.g. 1 million is - * rendered as "1,000,000") to help readability for the end user. This - * function will override the default method DataTables uses. - * @type function - * @member - * @param {int} iIn number to be formatted - * @returns {string} formatted string for DataTables to show the number - * @dtopt Callbacks - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "fnFormatNumber": function ( iIn ) { - * if ( iIn < 1000 ) { - * return iIn; - * } else { - * var - * s=(iIn+""), - * a=s.split(""), out="", - * iLen=s.length; - * - * for ( var i=0 ; i<iLen ; i++ ) { - * if ( i%3 === 0 && i !== 0 ) { - * out = "'"+out; - * } - * out = a[iLen-i-1]+out; - * } - * } - * return out; - * }; - * } ); - * } ); - */ - "fnFormatNumber": function ( iIn ) { - if ( iIn < 1000 ) - { - // A small optimisation for what is likely to be the majority of use cases - return iIn; - } - - var s=(iIn+""), a=s.split(""), out="", iLen=s.length; - - for ( var i=0 ; iA
    ' ); - * } - * } - * } ); - * } ); - */ - "fnRowCallback": null, - - - /** - * This parameter allows you to override the default function which obtains - * the data from the server ($.getJSON) so something more suitable for your - * application. For example you could use POST data, or pull information from - * a Gears or AIR database. - * @type function - * @member - * @param {string} sSource HTTP source to obtain the data from (sAjaxSource) - * @param {array} aoData A key/value pair object containing the data to send - * to the server - * @param {function} fnCallback to be called on completion of the data get - * process that will draw the data on the page. - * @param {object} oSettings DataTables settings object - * @dtopt Callbacks - * @dtopt Server-side - * - * @example - * // POST data to server - * $(document).ready( function() { - * $('#example').dataTable( { - * "bProcessing": true, - * "bServerSide": true, - * "sAjaxSource": "xhr.php", - * "fnServerData": function ( sSource, aoData, fnCallback, oSettings ) { - * oSettings.jqXHR = $.ajax( { - * "dataType": 'json', - * "type": "POST", - * "url": sSource, - * "data": aoData, - * "success": fnCallback - * } ); - * } - * } ); - * } ); - */ - "fnServerData": function ( sUrl, aoData, fnCallback, oSettings ) { - oSettings.jqXHR = $.ajax( { - "url": sUrl, - "data": aoData, - "success": function (json) { - if ( json.sError ) { - oSettings.oApi._fnLog( oSettings, 0, json.sError ); - } - - $(oSettings.oInstance).trigger('xhr', [oSettings, json]); - fnCallback( json ); - }, - "dataType": "json", - "cache": false, - "type": oSettings.sServerMethod, - "error": function (xhr, error, thrown) { - if ( error == "parsererror" ) { - oSettings.oApi._fnLog( oSettings, 0, "DataTables warning: JSON data from "+ - "server could not be parsed. This is caused by a JSON formatting error." ); - } - } - } ); - }, - - - /** - * It is often useful to send extra data to the server when making an Ajax - * request - for example custom filtering information, and this callback - * function makes it trivial to send extra information to the server. The - * passed in parameter is the data set that has been constructed by - * DataTables, and you can add to this or modify it as you require. - * @type function - * @param {array} aoData Data array (array of objects which are name/value - * pairs) that has been constructed by DataTables and will be sent to the - * server. In the case of Ajax sourced data with server-side processing - * this will be an empty array, for server-side processing there will be a - * significant number of parameters! - * @returns {undefined} Ensure that you modify the aoData array passed in, - * as this is passed by reference. - * @dtopt Callbacks - * @dtopt Server-side - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "bProcessing": true, - * "bServerSide": true, - * "sAjaxSource": "scripts/server_processing.php", - * "fnServerParams": function ( aoData ) { - * aoData.push( { "name": "more_data", "value": "my_value" } ); - * } - * } ); - * } ); - */ - "fnServerParams": null, - - - /** - * Load the table state. With this function you can define from where, and how, the - * state of a table is loaded. By default DataTables will load from its state saving - * cookie, but you might wish to use local storage (HTML5) or a server-side database. - * @type function - * @member - * @param {object} oSettings DataTables settings object - * @return {object} The DataTables state object to be loaded - * @dtopt Callbacks - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "bStateSave": true, - * "fnStateLoad": function (oSettings) { - * var o; - * - * // Send an Ajax request to the server to get the data. Note that - * // this is a synchronous request. - * $.ajax( { - * "url": "/state_load", - * "async": false, - * "dataType": "json", - * "success": function (json) { - * o = json; - * } - * } ); - * - * return o; - * } - * } ); - * } ); - */ - "fnStateLoad": function ( oSettings ) { - var sData = this.oApi._fnReadCookie( oSettings.sCookiePrefix+oSettings.sInstance ); - var oData; - - try { - oData = (typeof $.parseJSON === 'function') ? - $.parseJSON(sData) : eval( '('+sData+')' ); - } catch (e) { - oData = null; - } - - return oData; - }, - - - /** - * Callback which allows modification of the saved state prior to loading that state. - * This callback is called when the table is loading state from the stored data, but - * prior to the settings object being modified by the saved state. Note that for - * plug-in authors, you should use the 'stateLoadParams' event to load parameters for - * a plug-in. - * @type function - * @param {object} oSettings DataTables settings object - * @param {object} oData The state object that is to be loaded - * @dtopt Callbacks - * - * @example - * // Remove a saved filter, so filtering is never loaded - * $(document).ready( function() { - * $('#example').dataTable( { - * "bStateSave": true, - * "fnStateLoadParams": function (oSettings, oData) { - * oData.oSearch.sSearch = ""; - * } - * } ); - * } ); - * - * @example - * // Disallow state loading by returning false - * $(document).ready( function() { - * $('#example').dataTable( { - * "bStateSave": true, - * "fnStateLoadParams": function (oSettings, oData) { - * return false; - * } - * } ); - * } ); - */ - "fnStateLoadParams": null, - - - /** - * Callback that is called when the state has been loaded from the state saving method - * and the DataTables settings object has been modified as a result of the loaded state. - * @type function - * @param {object} oSettings DataTables settings object - * @param {object} oData The state object that was loaded - * @dtopt Callbacks - * - * @example - * // Show an alert with the filtering value that was saved - * $(document).ready( function() { - * $('#example').dataTable( { - * "bStateSave": true, - * "fnStateLoaded": function (oSettings, oData) { - * alert( 'Saved filter was: '+oData.oSearch.sSearch ); - * } - * } ); - * } ); - */ - "fnStateLoaded": null, - - - /** - * Save the table state. This function allows you to define where and how the state - * information for the table is stored - by default it will use a cookie, but you - * might want to use local storage (HTML5) or a server-side database. - * @type function - * @member - * @param {object} oSettings DataTables settings object - * @param {object} oData The state object to be saved - * @dtopt Callbacks - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "bStateSave": true, - * "fnStateSave": function (oSettings, oData) { - * // Send an Ajax request to the server with the state object - * $.ajax( { - * "url": "/state_save", - * "data": oData, - * "dataType": "json", - * "method": "POST" - * "success": function () {} - * } ); - * } - * } ); - * } ); - */ - "fnStateSave": function ( oSettings, oData ) { - this.oApi._fnCreateCookie( - oSettings.sCookiePrefix+oSettings.sInstance, - this.oApi._fnJsonString(oData), - oSettings.iCookieDuration, - oSettings.sCookiePrefix, - oSettings.fnCookieCallback - ); - }, - - - /** - * Callback which allows modification of the state to be saved. Called when the table - * has changed state a new state save is required. This method allows modification of - * the state saving object prior to actually doing the save, including addition or - * other state properties or modification. Note that for plug-in authors, you should - * use the 'stateSaveParams' event to save parameters for a plug-in. - * @type function - * @param {object} oSettings DataTables settings object - * @param {object} oData The state object to be saved - * @dtopt Callbacks - * - * @example - * // Remove a saved filter, so filtering is never saved - * $(document).ready( function() { - * $('#example').dataTable( { - * "bStateSave": true, - * "fnStateSaveParams": function (oSettings, oData) { - * oData.oSearch.sSearch = ""; - * } - * } ); - * } ); - */ - "fnStateSaveParams": null, - - - /** - * Duration of the cookie which is used for storing session information. This - * value is given in seconds. - * @type int - * @default 7200 (2 hours) - * @dtopt Options - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "iCookieDuration": 60*60*24; // 1 day - * } ); - * } ) - */ - "iCookieDuration": 7200, - - - /** - * When enabled DataTables will not make a request to the server for the first - * page draw - rather it will use the data already on the page (no sorting etc - * will be applied to it), thus saving on an XHR at load time. iDeferLoading - * is used to indicate that deferred loading is required, but it is also used - * to tell DataTables how many records there are in the full table (allowing - * the information element and pagination to be displayed correctly). In the case - * where a filtering is applied to the table on initial load, this can be - * indicated by giving the parameter as an array, where the first element is - * the number of records available after filtering and the second element is the - * number of records without filtering (allowing the table information element - * to be shown correctly). - * @type int | array - * @default null - * @dtopt Options - * - * @example - * // 57 records available in the table, no filtering applied - * $(document).ready( function() { - * $('#example').dataTable( { - * "bServerSide": true, - * "sAjaxSource": "scripts/server_processing.php", - * "iDeferLoading": 57 - * } ); - * } ); - * - * @example - * // 57 records after filtering, 100 without filtering (an initial filter applied) - * $(document).ready( function() { - * $('#example').dataTable( { - * "bServerSide": true, - * "sAjaxSource": "scripts/server_processing.php", - * "iDeferLoading": [ 57, 100 ], - * "oSearch": { - * "sSearch": "my_filter" - * } - * } ); - * } ); - */ - "iDeferLoading": null, - - - /** - * Number of rows to display on a single page when using pagination. If - * feature enabled (bLengthChange) then the end user will be able to override - * this to a custom setting using a pop-up menu. - * @type int - * @default 10 - * @dtopt Options - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "iDisplayLength": 50 - * } ); - * } ) - */ - "iDisplayLength": 10, - - - /** - * Define the starting point for data display when using DataTables with - * pagination. Note that this parameter is the number of records, rather than - * the page number, so if you have 10 records per page and want to start on - * the third page, it should be "20". - * @type int - * @default 0 - * @dtopt Options - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "iDisplayStart": 20 - * } ); - * } ) - */ - "iDisplayStart": 0, - - - /** - * The scroll gap is the amount of scrolling that is left to go before - * DataTables will load the next 'page' of data automatically. You typically - * want a gap which is big enough that the scrolling will be smooth for the - * user, while not so large that it will load more data than need. - * @type int - * @default 100 - * @dtopt Options - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "bScrollInfinite": true, - * "bScrollCollapse": true, - * "sScrollY": "200px", - * "iScrollLoadGap": 50 - * } ); - * } ); - */ - "iScrollLoadGap": 100, - - - /** - * By default DataTables allows keyboard navigation of the table (sorting, paging, - * and filtering) by adding a tabindex attribute to the required elements. This - * allows you to tab through the controls and press the enter key to activate them. - * The tabindex is default 0, meaning that the tab follows the flow of the document. - * You can overrule this using this parameter if you wish. Use a value of -1 to - * disable built-in keyboard navigation. - * @type int - * @default 0 - * @dtopt Options - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "iTabIndex": 1 - * } ); - * } ); - */ - "iTabIndex": 0, - - - /** - * All strings that DataTables uses in the user interface that it creates - * are defined in this object, allowing you to modified them individually or - * completely replace them all as required. - * @namespace - */ - "oLanguage": { - /** - * Strings that are used for WAI-ARIA labels and controls only (these are not - * actually visible on the page, but will be read by screenreaders, and thus - * must be internationalised as well). - * @namespace - */ - "oAria": { - /** - * ARIA label that is added to the table headers when the column may be - * sorted ascending by activing the column (click or return when focused). - * Note that the column header is prefixed to this string. - * @type string - * @default : activate to sort column ascending - * @dtopt Language - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "oLanguage": { - * "oAria": { - * "sSortAscending": " - click/return to sort ascending" - * } - * } - * } ); - * } ); - */ - "sSortAscending": ": activate to sort column ascending", - - /** - * ARIA label that is added to the table headers when the column may be - * sorted descending by activing the column (click or return when focused). - * Note that the column header is prefixed to this string. - * @type string - * @default : activate to sort column ascending - * @dtopt Language - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "oLanguage": { - * "oAria": { - * "sSortDescending": " - click/return to sort descending" - * } - * } - * } ); - * } ); - */ - "sSortDescending": ": activate to sort column descending" - }, - - /** - * Pagination string used by DataTables for the two built-in pagination - * control types ("two_button" and "full_numbers") - * @namespace - */ - "oPaginate": { - /** - * Text to use when using the 'full_numbers' type of pagination for the - * button to take the user to the first page. - * @type string - * @default First - * @dtopt Language - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "oLanguage": { - * "oPaginate": { - * "sFirst": "First page" - * } - * } - * } ); - * } ); - */ - "sFirst": "First", - - - /** - * Text to use when using the 'full_numbers' type of pagination for the - * button to take the user to the last page. - * @type string - * @default Last - * @dtopt Language - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "oLanguage": { - * "oPaginate": { - * "sLast": "Last page" - * } - * } - * } ); - * } ); - */ - "sLast": "Last", - - - /** - * Text to use for the 'next' pagination button (to take the user to the - * next page). - * @type string - * @default Next - * @dtopt Language - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "oLanguage": { - * "oPaginate": { - * "sNext": "Next page" - * } - * } - * } ); - * } ); - */ - "sNext": "Next", - - - /** - * Text to use for the 'previous' pagination button (to take the user to - * the previous page). - * @type string - * @default Previous - * @dtopt Language - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "oLanguage": { - * "oPaginate": { - * "sPrevious": "Previous page" - * } - * } - * } ); - * } ); - */ - "sPrevious": "Previous" - }, - - /** - * This string is shown in preference to sZeroRecords when the table is - * empty of data (regardless of filtering). Note that this is an optional - * parameter - if it is not given, the value of sZeroRecords will be used - * instead (either the default or given value). - * @type string - * @default No data available in table - * @dtopt Language - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "oLanguage": { - * "sEmptyTable": "No data available in table" - * } - * } ); - * } ); - */ - "sEmptyTable": "No data available in table", - - - /** - * This string gives information to the end user about the information that - * is current on display on the page. The _START_, _END_ and _TOTAL_ - * variables are all dynamically replaced as the table display updates, and - * can be freely moved or removed as the language requirements change. - * @type string - * @default Showing _START_ to _END_ of _TOTAL_ entries - * @dtopt Language - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "oLanguage": { - * "sInfo": "Got a total of _TOTAL_ entries to show (_START_ to _END_)" - * } - * } ); - * } ); - */ - "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries", - - - /** - * Display information string for when the table is empty. Typically the - * format of this string should match sInfo. - * @type string - * @default Showing 0 to 0 of 0 entries - * @dtopt Language - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "oLanguage": { - * "sInfoEmpty": "No entries to show" - * } - * } ); - * } ); - */ - "sInfoEmpty": "Showing 0 to 0 of 0 entries", - - - /** - * When a user filters the information in a table, this string is appended - * to the information (sInfo) to give an idea of how strong the filtering - * is. The variable _MAX_ is dynamically updated. - * @type string - * @default (filtered from _MAX_ total entries) - * @dtopt Language - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "oLanguage": { - * "sInfoFiltered": " - filtering from _MAX_ records" - * } - * } ); - * } ); - */ - "sInfoFiltered": "(filtered from _MAX_ total entries)", - - - /** - * If can be useful to append extra information to the info string at times, - * and this variable does exactly that. This information will be appended to - * the sInfo (sInfoEmpty and sInfoFiltered in whatever combination they are - * being used) at all times. - * @type string - * @default Empty string - * @dtopt Language - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "oLanguage": { - * "sInfoPostFix": "All records shown are derived from real information." - * } - * } ); - * } ); - */ - "sInfoPostFix": "", - - - /** - * DataTables has a build in number formatter (fnFormatNumber) which is used - * to format large numbers that are used in the table information. By - * default a comma is used, but this can be trivially changed to any - * character you wish with this parameter. - * @type string - * @default , - * @dtopt Language - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "oLanguage": { - * "sInfoThousands": "'" - * } - * } ); - * } ); - */ - "sInfoThousands": ",", - - - /** - * Detail the action that will be taken when the drop down menu for the - * pagination length option is changed. The '_MENU_' variable is replaced - * with a default select list of 10, 25, 50 and 100, and can be replaced - * with a custom select box if required. - * @type string - * @default Show _MENU_ entries - * @dtopt Language - * - * @example - * // Language change only - * $(document).ready( function() { - * $('#example').dataTable( { - * "oLanguage": { - * "sLengthMenu": "Display _MENU_ records" - * } - * } ); - * } ); - * - * @example - * // Language and options change - * $(document).ready( function() { - * $('#example').dataTable( { - * "oLanguage": { - * "sLengthMenu": 'Display records' - * } - * } ); - * } ); - */ - "sLengthMenu": "Show _MENU_ entries", - - - /** - * When using Ajax sourced data and during the first draw when DataTables is - * gathering the data, this message is shown in an empty row in the table to - * indicate to the end user the the data is being loaded. Note that this - * parameter is not used when loading data by server-side processing, just - * Ajax sourced data with client-side processing. - * @type string - * @default Loading... - * @dtopt Language - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "oLanguage": { - * "sLoadingRecords": "Please wait - loading..." - * } - * } ); - * } ); - */ - "sLoadingRecords": "Loading...", - - - /** - * Text which is displayed when the table is processing a user action - * (usually a sort command or similar). - * @type string - * @default Processing... - * @dtopt Language - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "oLanguage": { - * "sProcessing": "DataTables is currently busy" - * } - * } ); - * } ); - */ - "sProcessing": "Processing...", - - - /** - * Details the actions that will be taken when the user types into the - * filtering input text box. The variable "_INPUT_", if used in the string, - * is replaced with the HTML text box for the filtering input allowing - * control over where it appears in the string. If "_INPUT_" is not given - * then the input box is appended to the string automatically. - * @type string - * @default Search: - * @dtopt Language - * - * @example - * // Input text box will be appended at the end automatically - * $(document).ready( function() { - * $('#example').dataTable( { - * "oLanguage": { - * "sSearch": "Filter records:" - * } - * } ); - * } ); - * - * @example - * // Specify where the filter should appear - * $(document).ready( function() { - * $('#example').dataTable( { - * "oLanguage": { - * "sSearch": "Apply filter _INPUT_ to table" - * } - * } ); - * } ); - */ - "sSearch": "Search:", - - - /** - * All of the language information can be stored in a file on the - * server-side, which DataTables will look up if this parameter is passed. - * It must store the URL of the language file, which is in a JSON format, - * and the object has the same properties as the oLanguage object in the - * initialiser object (i.e. the above parameters). Please refer to one of - * the example language files to see how this works in action. - * @type string - * @default Empty string - i.e. disabled - * @dtopt Language - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "oLanguage": { - * "sUrl": "http://www.sprymedia.co.uk/dataTables/lang.txt" - * } - * } ); - * } ); - */ - "sUrl": "", - - - /** - * Text shown inside the table records when the is no information to be - * displayed after filtering. sEmptyTable is shown when there is simply no - * information in the table at all (regardless of filtering). - * @type string - * @default No matching records found - * @dtopt Language - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "oLanguage": { - * "sZeroRecords": "No records to display" - * } - * } ); - * } ); - */ - "sZeroRecords": "No matching records found" - }, - - - /** - * This parameter allows you to have define the global filtering state at - * initialisation time. As an object the "sSearch" parameter must be - * defined, but all other parameters are optional. When "bRegex" is true, - * the search string will be treated as a regular expression, when false - * (default) it will be treated as a straight string. When "bSmart" - * DataTables will use it's smart filtering methods (to word match at - * any point in the data), when false this will not be done. - * @namespace - * @extends DataTable.models.oSearch - * @dtopt Options - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "oSearch": {"sSearch": "Initial search"} - * } ); - * } ) - */ - "oSearch": $.extend( {}, DataTable.models.oSearch ), - - - /** - * By default DataTables will look for the property 'aaData' when obtaining - * data from an Ajax source or for server-side processing - this parameter - * allows that property to be changed. You can use Javascript dotted object - * notation to get a data source for multiple levels of nesting. - * @type string - * @default aaData - * @dtopt Options - * @dtopt Server-side - * - * @example - * // Get data from { "data": [...] } - * $(document).ready( function() { - * var oTable = $('#example').dataTable( { - * "sAjaxSource": "sources/data.txt", - * "sAjaxDataProp": "data" - * } ); - * } ); - * - * @example - * // Get data from { "data": { "inner": [...] } } - * $(document).ready( function() { - * var oTable = $('#example').dataTable( { - * "sAjaxSource": "sources/data.txt", - * "sAjaxDataProp": "data.inner" - * } ); - * } ); - */ - "sAjaxDataProp": "aaData", - - - /** - * You can instruct DataTables to load data from an external source using this - * parameter (use aData if you want to pass data in you already have). Simply - * provide a url a JSON object can be obtained from. This object must include - * the parameter 'aaData' which is the data source for the table. - * @type string - * @default null - * @dtopt Options - * @dtopt Server-side - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "sAjaxSource": "http://www.sprymedia.co.uk/dataTables/json.php" - * } ); - * } ) - */ - "sAjaxSource": null, - - - /** - * This parameter can be used to override the default prefix that DataTables - * assigns to a cookie when state saving is enabled. - * @type string - * @default SpryMedia_DataTables_ - * @dtopt Options - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "sCookiePrefix": "my_datatable_", - * } ); - * } ); - */ - "sCookiePrefix": "SpryMedia_DataTables_", - - - /** - * This initialisation variable allows you to specify exactly where in the - * DOM you want DataTables to inject the various controls it adds to the page - * (for example you might want the pagination controls at the top of the - * table). DIV elements (with or without a custom class) can also be added to - * aid styling. The follow syntax is used: - *
      - *
    • The following options are allowed: - *
        - *
      • 'l' - Length changing
      • 'f' - Filtering input - *
      • 't' - The table!
      • - *
      • 'i' - Information
      • - *
      • 'p' - Pagination
      • - *
      • 'r' - pRocessing
      • - *
      - *
    • - *
    • The following constants are allowed: - *
        - *
      • 'H' - jQueryUI theme "header" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')
      • - *
      • 'F' - jQueryUI theme "footer" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')
      • - *
      - *
    • - *
    • The following syntax is expected: - *
        - *
      • '<' and '>' - div elements
      • - *
      • '<"class" and '>' - div with a class
      • - *
      • '<"#id" and '>' - div with an ID
      • - *
      - *
    • - *
    • Examples: - *
        - *
      • '<"wrapper"flipt>'
      • - *
      • '<lf<t>ip>'
      • - *
      - *
    • - *
    - * @type string - * @default lfrtip (when bJQueryUI is false) or - * <"H"lfr>t<"F"ip> (when bJQueryUI is true) - * @dtopt Options - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "sDom": '<"top"i>rt<"bottom"flp><"clear">' - * } ); - * } ); - */ - "sDom": "lfrtip", - - - /** - * DataTables features two different built-in pagination interaction methods - * ('two_button' or 'full_numbers') which present different page controls to - * the end user. Further methods can be added using the API (see below). - * @type string - * @default two_button - * @dtopt Options - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "sPaginationType": "full_numbers" - * } ); - * } ) - */ - "sPaginationType": "two_button", - - - /** - * Enable horizontal scrolling. When a table is too wide to fit into a certain - * layout, or you have a large number of columns in the table, you can enable - * x-scrolling to show the table in a viewport, which can be scrolled. This - * property can be any CSS unit, or a number (in which case it will be treated - * as a pixel measurement). - * @type string - * @default blank string - i.e. disabled - * @dtopt Features - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "sScrollX": "100%", - * "bScrollCollapse": true - * } ); - * } ); - */ - "sScrollX": "", - - - /** - * This property can be used to force a DataTable to use more width than it - * might otherwise do when x-scrolling is enabled. For example if you have a - * table which requires to be well spaced, this parameter is useful for - * "over-sizing" the table, and thus forcing scrolling. This property can by - * any CSS unit, or a number (in which case it will be treated as a pixel - * measurement). - * @type string - * @default blank string - i.e. disabled - * @dtopt Options - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "sScrollX": "100%", - * "sScrollXInner": "110%" - * } ); - * } ); - */ - "sScrollXInner": "", - - - /** - * Enable vertical scrolling. Vertical scrolling will constrain the DataTable - * to the given height, and enable scrolling for any data which overflows the - * current viewport. This can be used as an alternative to paging to display - * a lot of data in a small area (although paging and scrolling can both be - * enabled at the same time). This property can be any CSS unit, or a number - * (in which case it will be treated as a pixel measurement). - * @type string - * @default blank string - i.e. disabled - * @dtopt Features - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "sScrollY": "200px", - * "bPaginate": false - * } ); - * } ); - */ - "sScrollY": "", - - - /** - * Set the HTTP method that is used to make the Ajax call for server-side - * processing or Ajax sourced data. - * @type string - * @default GET - * @dtopt Options - * @dtopt Server-side - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "bServerSide": true, - * "sAjaxSource": "scripts/post.php", - * "sServerMethod": "POST" - * } ); - * } ); - */ - "sServerMethod": "GET" - }; - - - - /** - * Column options that can be given to DataTables at initialisation time. - * @namespace - */ - DataTable.defaults.columns = { - /** - * Allows a column's sorting to take multiple columns into account when - * doing a sort. For example first name / last name columns make sense to - * do a multi-column sort over the two columns. - * @type array - * @default null Takes the value of the column index automatically - * @dtopt Columns - * - * @example - * // Using aoColumnDefs - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumnDefs": [ - * { "aDataSort": [ 0, 1 ], "aTargets": [ 0 ] }, - * { "aDataSort": [ 1, 0 ], "aTargets": [ 1 ] }, - * { "aDataSort": [ 2, 3, 4 ], "aTargets": [ 2 ] } - * ] - * } ); - * } ); - * - * @example - * // Using aoColumns - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumns": [ - * { "aDataSort": [ 0, 1 ] }, - * { "aDataSort": [ 1, 0 ] }, - * { "aDataSort": [ 2, 3, 4 ] }, - * null, - * null - * ] - * } ); - * } ); - */ - "aDataSort": null, - - - /** - * You can control the default sorting direction, and even alter the behaviour - * of the sort handler (i.e. only allow ascending sorting etc) using this - * parameter. - * @type array - * @default [ 'asc', 'desc' ] - * @dtopt Columns - * - * @example - * // Using aoColumnDefs - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumnDefs": [ - * { "asSorting": [ "asc" ], "aTargets": [ 1 ] }, - * { "asSorting": [ "desc", "asc", "asc" ], "aTargets": [ 2 ] }, - * { "asSorting": [ "desc" ], "aTargets": [ 3 ] } - * ] - * } ); - * } ); - * - * @example - * // Using aoColumns - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumns": [ - * null, - * { "asSorting": [ "asc" ] }, - * { "asSorting": [ "desc", "asc", "asc" ] }, - * { "asSorting": [ "desc" ] }, - * null - * ] - * } ); - * } ); - */ - "asSorting": [ 'asc', 'desc' ], - - - /** - * Enable or disable filtering on the data in this column. - * @type boolean - * @default true - * @dtopt Columns - * - * @example - * // Using aoColumnDefs - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumnDefs": [ - * { "bSearchable": false, "aTargets": [ 0 ] } - * ] } ); - * } ); - * - * @example - * // Using aoColumns - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumns": [ - * { "bSearchable": false }, - * null, - * null, - * null, - * null - * ] } ); - * } ); - */ - "bSearchable": true, - - - /** - * Enable or disable sorting on this column. - * @type boolean - * @default true - * @dtopt Columns - * - * @example - * // Using aoColumnDefs - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumnDefs": [ - * { "bSortable": false, "aTargets": [ 0 ] } - * ] } ); - * } ); - * - * @example - * // Using aoColumns - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumns": [ - * { "bSortable": false }, - * null, - * null, - * null, - * null - * ] } ); - * } ); - */ - "bSortable": true, - - - /** - * Deprecated When using fnRender() for a column, you may wish - * to use the original data (before rendering) for sorting and filtering - * (the default is to used the rendered data that the user can see). This - * may be useful for dates etc. - * - * Please note that this option has now been deprecated and will be removed - * in the next version of DataTables. Please use mRender / mData rather than - * fnRender. - * @type boolean - * @default true - * @dtopt Columns - * @deprecated - */ - "bUseRendered": true, - - - /** - * Enable or disable the display of this column. - * @type boolean - * @default true - * @dtopt Columns - * - * @example - * // Using aoColumnDefs - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumnDefs": [ - * { "bVisible": false, "aTargets": [ 0 ] } - * ] } ); - * } ); - * - * @example - * // Using aoColumns - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumns": [ - * { "bVisible": false }, - * null, - * null, - * null, - * null - * ] } ); - * } ); - */ - "bVisible": true, - - - /** - * Developer definable function that is called whenever a cell is created (Ajax source, - * etc) or processed for input (DOM source). This can be used as a compliment to mRender - * allowing you to modify the DOM element (add background colour for example) when the - * element is available. - * @type function - * @param {element} nTd The TD node that has been created - * @param {*} sData The Data for the cell - * @param {array|object} oData The data for the whole row - * @param {int} iRow The row index for the aoData data store - * @param {int} iCol The column index for aoColumns - * @dtopt Columns - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumnDefs": [ { - * "aTargets": [3], - * "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) { - * if ( sData == "1.7" ) { - * $(nTd).css('color', 'blue') - * } - * } - * } ] - * }); - * } ); - */ - "fnCreatedCell": null, - - - /** - * Deprecated Custom display function that will be called for the - * display of each cell in this column. - * - * Please note that this option has now been deprecated and will be removed - * in the next version of DataTables. Please use mRender / mData rather than - * fnRender. - * @type function - * @param {object} o Object with the following parameters: - * @param {int} o.iDataRow The row in aoData - * @param {int} o.iDataColumn The column in question - * @param {array} o.aData The data for the row in question - * @param {object} o.oSettings The settings object for this DataTables instance - * @param {object} o.mDataProp The data property used for this column - * @param {*} val The current cell value - * @returns {string} The string you which to use in the display - * @dtopt Columns - * @deprecated - */ - "fnRender": null, - - - /** - * The column index (starting from 0!) that you wish a sort to be performed - * upon when this column is selected for sorting. This can be used for sorting - * on hidden columns for example. - * @type int - * @default -1 Use automatically calculated column index - * @dtopt Columns - * - * @example - * // Using aoColumnDefs - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumnDefs": [ - * { "iDataSort": 1, "aTargets": [ 0 ] } - * ] - * } ); - * } ); - * - * @example - * // Using aoColumns - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumns": [ - * { "iDataSort": 1 }, - * null, - * null, - * null, - * null - * ] - * } ); - * } ); - */ - "iDataSort": -1, - - - /** - * This parameter has been replaced by mData in DataTables to ensure naming - * consistency. mDataProp can still be used, as there is backwards compatibility - * in DataTables for this option, but it is strongly recommended that you use - * mData in preference to mDataProp. - * @name DataTable.defaults.columns.mDataProp - */ - - - /** - * This property can be used to read data from any JSON data source property, - * including deeply nested objects / properties. mData can be given in a - * number of different ways which effect its behaviour: - *
      - *
    • integer - treated as an array index for the data source. This is the - * default that DataTables uses (incrementally increased for each column).
    • - *
    • string - read an object property from the data source. Note that you can - * use Javascript dotted notation to read deep properties / arrays from the - * data source.
    • - *
    • null - the sDefaultContent option will be used for the cell (null - * by default, so you will need to specify the default content you want - - * typically an empty string). This can be useful on generated columns such - * as edit / delete action columns.
    • - *
    • function - the function given will be executed whenever DataTables - * needs to set or get the data for a cell in the column. The function - * takes three parameters: - *
        - *
      • {array|object} The data source for the row
      • - *
      • {string} The type call data requested - this will be 'set' when - * setting data or 'filter', 'display', 'type', 'sort' or undefined when - * gathering data. Note that when undefined is given for the type - * DataTables expects to get the raw data for the object back
      • - *
      • {*} Data to set when the second parameter is 'set'.
      • - *
      - * The return value from the function is not required when 'set' is the type - * of call, but otherwise the return is what will be used for the data - * requested.
    • - *
    - * - * Note that prior to DataTables 1.9.2 mData was called mDataProp. The name change - * reflects the flexibility of this property and is consistent with the naming of - * mRender. If 'mDataProp' is given, then it will still be used by DataTables, as - * it automatically maps the old name to the new if required. - * @type string|int|function|null - * @default null Use automatically calculated column index - * @dtopt Columns - * - * @example - * // Read table data from objects - * $(document).ready( function() { - * var oTable = $('#example').dataTable( { - * "sAjaxSource": "sources/deep.txt", - * "aoColumns": [ - * { "mData": "engine" }, - * { "mData": "browser" }, - * { "mData": "platform.inner" }, - * { "mData": "platform.details.0" }, - * { "mData": "platform.details.1" } - * ] - * } ); - * } ); - * - * @example - * // Using mData as a function to provide different information for - * // sorting, filtering and display. In this case, currency (price) - * $(document).ready( function() { - * var oTable = $('#example').dataTable( { - * "aoColumnDefs": [ { - * "aTargets": [ 0 ], - * "mData": function ( source, type, val ) { - * if (type === 'set') { - * source.price = val; - * // Store the computed dislay and filter values for efficiency - * source.price_display = val=="" ? "" : "$"+numberFormat(val); - * source.price_filter = val=="" ? "" : "$"+numberFormat(val)+" "+val; - * return; - * } - * else if (type === 'display') { - * return source.price_display; - * } - * else if (type === 'filter') { - * return source.price_filter; - * } - * // 'sort', 'type' and undefined all just use the integer - * return source.price; - * } - * } ] - * } ); - * } ); - */ - "mData": null, - - - /** - * This property is the rendering partner to mData and it is suggested that - * when you want to manipulate data for display (including filtering, sorting etc) - * but not altering the underlying data for the table, use this property. mData - * can actually do everything this property can and more, but this parameter is - * easier to use since there is no 'set' option. Like mData is can be given - * in a number of different ways to effect its behaviour, with the addition of - * supporting array syntax for easy outputting of arrays (including arrays of - * objects): - *
      - *
    • integer - treated as an array index for the data source. This is the - * default that DataTables uses (incrementally increased for each column).
    • - *
    • string - read an object property from the data source. Note that you can - * use Javascript dotted notation to read deep properties / arrays from the - * data source and also array brackets to indicate that the data reader should - * loop over the data source array. When characters are given between the array - * brackets, these characters are used to join the data source array together. - * For example: "accounts[, ].name" would result in a comma separated list with - * the 'name' value from the 'accounts' array of objects.
    • - *
    • function - the function given will be executed whenever DataTables - * needs to set or get the data for a cell in the column. The function - * takes three parameters: - *
        - *
      • {array|object} The data source for the row (based on mData)
      • - *
      • {string} The type call data requested - this will be 'filter', 'display', - * 'type' or 'sort'.
      • - *
      • {array|object} The full data source for the row (not based on mData)
      • - *
      - * The return value from the function is what will be used for the data - * requested.
    • - *
    - * @type string|int|function|null - * @default null Use mData - * @dtopt Columns - * - * @example - * // Create a comma separated list from an array of objects - * $(document).ready( function() { - * var oTable = $('#example').dataTable( { - * "sAjaxSource": "sources/deep.txt", - * "aoColumns": [ - * { "mData": "engine" }, - * { "mData": "browser" }, - * { - * "mData": "platform", - * "mRender": "[, ].name" - * } - * ] - * } ); - * } ); - * - * @example - * // Use as a function to create a link from the data source - * $(document).ready( function() { - * var oTable = $('#example').dataTable( { - * "aoColumnDefs": [ - * { - * "aTargets": [ 0 ], - * "mData": "download_link", - * "mRender": function ( data, type, full ) { - * return 'Download'; - * } - * ] - * } ); - * } ); - */ - "mRender": null, - - - /** - * Change the cell type created for the column - either TD cells or TH cells. This - * can be useful as TH cells have semantic meaning in the table body, allowing them - * to act as a header for a row (you may wish to add scope='row' to the TH elements). - * @type string - * @default td - * @dtopt Columns - * - * @example - * // Make the first column use TH cells - * $(document).ready( function() { - * var oTable = $('#example').dataTable( { - * "aoColumnDefs": [ { - * "aTargets": [ 0 ], - * "sCellType": "th" - * } ] - * } ); - * } ); - */ - "sCellType": "td", - - - /** - * Class to give to each cell in this column. - * @type string - * @default Empty string - * @dtopt Columns - * - * @example - * // Using aoColumnDefs - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumnDefs": [ - * { "sClass": "my_class", "aTargets": [ 0 ] } - * ] - * } ); - * } ); - * - * @example - * // Using aoColumns - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumns": [ - * { "sClass": "my_class" }, - * null, - * null, - * null, - * null - * ] - * } ); - * } ); - */ - "sClass": "", - - /** - * When DataTables calculates the column widths to assign to each column, - * it finds the longest string in each column and then constructs a - * temporary table and reads the widths from that. The problem with this - * is that "mmm" is much wider then "iiii", but the latter is a longer - * string - thus the calculation can go wrong (doing it properly and putting - * it into an DOM object and measuring that is horribly(!) slow). Thus as - * a "work around" we provide this option. It will append its value to the - * text that is found to be the longest string for the column - i.e. padding. - * Generally you shouldn't need this, and it is not documented on the - * general DataTables.net documentation - * @type string - * @default Empty string - * @dtopt Columns - * - * @example - * // Using aoColumns - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumns": [ - * null, - * null, - * null, - * { - * "sContentPadding": "mmm" - * } - * ] - * } ); - * } ); - */ - "sContentPadding": "", - - - /** - * Allows a default value to be given for a column's data, and will be used - * whenever a null data source is encountered (this can be because mData - * is set to null, or because the data source itself is null). - * @type string - * @default null - * @dtopt Columns - * - * @example - * // Using aoColumnDefs - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumnDefs": [ - * { - * "mData": null, - * "sDefaultContent": "Edit", - * "aTargets": [ -1 ] - * } - * ] - * } ); - * } ); - * - * @example - * // Using aoColumns - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumns": [ - * null, - * null, - * null, - * { - * "mData": null, - * "sDefaultContent": "Edit" - * } - * ] - * } ); - * } ); - */ - "sDefaultContent": null, - - - /** - * This parameter is only used in DataTables' server-side processing. It can - * be exceptionally useful to know what columns are being displayed on the - * client side, and to map these to database fields. When defined, the names - * also allow DataTables to reorder information from the server if it comes - * back in an unexpected order (i.e. if you switch your columns around on the - * client-side, your server-side code does not also need updating). - * @type string - * @default Empty string - * @dtopt Columns - * - * @example - * // Using aoColumnDefs - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumnDefs": [ - * { "sName": "engine", "aTargets": [ 0 ] }, - * { "sName": "browser", "aTargets": [ 1 ] }, - * { "sName": "platform", "aTargets": [ 2 ] }, - * { "sName": "version", "aTargets": [ 3 ] }, - * { "sName": "grade", "aTargets": [ 4 ] } - * ] - * } ); - * } ); - * - * @example - * // Using aoColumns - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumns": [ - * { "sName": "engine" }, - * { "sName": "browser" }, - * { "sName": "platform" }, - * { "sName": "version" }, - * { "sName": "grade" } - * ] - * } ); - * } ); - */ - "sName": "", - - - /** - * Defines a data source type for the sorting which can be used to read - * real-time information from the table (updating the internally cached - * version) prior to sorting. This allows sorting to occur on user editable - * elements such as form inputs. - * @type string - * @default std - * @dtopt Columns - * - * @example - * // Using aoColumnDefs - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumnDefs": [ - * { "sSortDataType": "dom-text", "aTargets": [ 2, 3 ] }, - * { "sType": "numeric", "aTargets": [ 3 ] }, - * { "sSortDataType": "dom-select", "aTargets": [ 4 ] }, - * { "sSortDataType": "dom-checkbox", "aTargets": [ 5 ] } - * ] - * } ); - * } ); - * - * @example - * // Using aoColumns - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumns": [ - * null, - * null, - * { "sSortDataType": "dom-text" }, - * { "sSortDataType": "dom-text", "sType": "numeric" }, - * { "sSortDataType": "dom-select" }, - * { "sSortDataType": "dom-checkbox" } - * ] - * } ); - * } ); - */ - "sSortDataType": "std", - - - /** - * The title of this column. - * @type string - * @default null Derived from the 'TH' value for this column in the - * original HTML table. - * @dtopt Columns - * - * @example - * // Using aoColumnDefs - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumnDefs": [ - * { "sTitle": "My column title", "aTargets": [ 0 ] } - * ] - * } ); - * } ); - * - * @example - * // Using aoColumns - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumns": [ - * { "sTitle": "My column title" }, - * null, - * null, - * null, - * null - * ] - * } ); - * } ); - */ - "sTitle": null, - - - /** - * The type allows you to specify how the data for this column will be sorted. - * Four types (string, numeric, date and html (which will strip HTML tags - * before sorting)) are currently available. Note that only date formats - * understood by Javascript's Date() object will be accepted as type date. For - * example: "Mar 26, 2008 5:03 PM". May take the values: 'string', 'numeric', - * 'date' or 'html' (by default). Further types can be adding through - * plug-ins. - * @type string - * @default null Auto-detected from raw data - * @dtopt Columns - * - * @example - * // Using aoColumnDefs - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumnDefs": [ - * { "sType": "html", "aTargets": [ 0 ] } - * ] - * } ); - * } ); - * - * @example - * // Using aoColumns - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumns": [ - * { "sType": "html" }, - * null, - * null, - * null, - * null - * ] - * } ); - * } ); - */ - "sType": null, - - - /** - * Defining the width of the column, this parameter may take any CSS value - * (3em, 20px etc). DataTables apples 'smart' widths to columns which have not - * been given a specific width through this interface ensuring that the table - * remains readable. - * @type string - * @default null Automatic - * @dtopt Columns - * - * @example - * // Using aoColumnDefs - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumnDefs": [ - * { "sWidth": "20%", "aTargets": [ 0 ] } - * ] - * } ); - * } ); - * - * @example - * // Using aoColumns - * $(document).ready( function() { - * $('#example').dataTable( { - * "aoColumns": [ - * { "sWidth": "20%" }, - * null, - * null, - * null, - * null - * ] - * } ); - * } ); - */ - "sWidth": null - }; - - - - /** - * DataTables settings object - this holds all the information needed for a - * given table, including configuration, data and current application of the - * table options. DataTables does not have a single instance for each DataTable - * with the settings attached to that instance, but rather instances of the - * DataTable "class" are created on-the-fly as needed (typically by a - * $().dataTable() call) and the settings object is then applied to that - * instance. - * - * Note that this object is related to {@link DataTable.defaults} but this - * one is the internal data store for DataTables's cache of columns. It should - * NOT be manipulated outside of DataTables. Any configuration should be done - * through the initialisation options. - * @namespace - * @todo Really should attach the settings object to individual instances so we - * don't need to create new instances on each $().dataTable() call (if the - * table already exists). It would also save passing oSettings around and - * into every single function. However, this is a very significant - * architecture change for DataTables and will almost certainly break - * backwards compatibility with older installations. This is something that - * will be done in 2.0. - */ - DataTable.models.oSettings = { - /** - * Primary features of DataTables and their enablement state. - * @namespace - */ - "oFeatures": { - - /** - * Flag to say if DataTables should automatically try to calculate the - * optimum table and columns widths (true) or not (false). - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bAutoWidth": null, - - /** - * Delay the creation of TR and TD elements until they are actually - * needed by a driven page draw. This can give a significant speed - * increase for Ajax source and Javascript source data, but makes no - * difference at all fro DOM and server-side processing tables. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bDeferRender": null, - - /** - * Enable filtering on the table or not. Note that if this is disabled - * then there is no filtering at all on the table, including fnFilter. - * To just remove the filtering input use sDom and remove the 'f' option. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bFilter": null, - - /** - * Table information element (the 'Showing x of y records' div) enable - * flag. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bInfo": null, - - /** - * Present a user control allowing the end user to change the page size - * when pagination is enabled. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bLengthChange": null, - - /** - * Pagination enabled or not. Note that if this is disabled then length - * changing must also be disabled. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bPaginate": null, - - /** - * Processing indicator enable flag whenever DataTables is enacting a - * user request - typically an Ajax request for server-side processing. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bProcessing": null, - - /** - * Server-side processing enabled flag - when enabled DataTables will - * get all data from the server for every draw - there is no filtering, - * sorting or paging done on the client-side. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bServerSide": null, - - /** - * Sorting enablement flag. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bSort": null, - - /** - * Apply a class to the columns which are being sorted to provide a - * visual highlight or not. This can slow things down when enabled since - * there is a lot of DOM interaction. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bSortClasses": null, - - /** - * State saving enablement flag. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bStateSave": null - }, - - - /** - * Scrolling settings for a table. - * @namespace - */ - "oScroll": { - /** - * Indicate if DataTables should be allowed to set the padding / margin - * etc for the scrolling header elements or not. Typically you will want - * this. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bAutoCss": null, - - /** - * When the table is shorter in height than sScrollY, collapse the - * table container down to the height of the table (when true). - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bCollapse": null, - - /** - * Infinite scrolling enablement flag. Now deprecated in favour of - * using the Scroller plug-in. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bInfinite": null, - - /** - * Width of the scrollbar for the web-browser's platform. Calculated - * during table initialisation. - * @type int - * @default 0 - */ - "iBarWidth": 0, - - /** - * Space (in pixels) between the bottom of the scrolling container and - * the bottom of the scrolling viewport before the next page is loaded - * when using infinite scrolling. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type int - */ - "iLoadGap": null, - - /** - * Viewport width for horizontal scrolling. Horizontal scrolling is - * disabled if an empty string. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - */ - "sX": null, - - /** - * Width to expand the table to when using x-scrolling. Typically you - * should not need to use this. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - * @deprecated - */ - "sXInner": null, - - /** - * Viewport height for vertical scrolling. Vertical scrolling is disabled - * if an empty string. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - */ - "sY": null - }, - - /** - * Language information for the table. - * @namespace - * @extends DataTable.defaults.oLanguage - */ - "oLanguage": { - /** - * Information callback function. See - * {@link DataTable.defaults.fnInfoCallback} - * @type function - * @default null - */ - "fnInfoCallback": null - }, - - /** - * Browser support parameters - * @namespace - */ - "oBrowser": { - /** - * Indicate if the browser incorrectly calculates width:100% inside a - * scrolling element (IE6/7) - * @type boolean - * @default false - */ - "bScrollOversize": false - }, - - /** - * Array referencing the nodes which are used for the features. The - * parameters of this object match what is allowed by sDom - i.e. - *
      - *
    • 'l' - Length changing
    • - *
    • 'f' - Filtering input
    • - *
    • 't' - The table!
    • - *
    • 'i' - Information
    • - *
    • 'p' - Pagination
    • - *
    • 'r' - pRocessing
    • - *
    - * @type array - * @default [] - */ - "aanFeatures": [], - - /** - * Store data information - see {@link DataTable.models.oRow} for detailed - * information. - * @type array - * @default [] - */ - "aoData": [], - - /** - * Array of indexes which are in the current display (after filtering etc) - * @type array - * @default [] - */ - "aiDisplay": [], - - /** - * Array of indexes for display - no filtering - * @type array - * @default [] - */ - "aiDisplayMaster": [], - - /** - * Store information about each column that is in use - * @type array - * @default [] - */ - "aoColumns": [], - - /** - * Store information about the table's header - * @type array - * @default [] - */ - "aoHeader": [], - - /** - * Store information about the table's footer - * @type array - * @default [] - */ - "aoFooter": [], - - /** - * Search data array for regular expression searching - * @type array - * @default [] - */ - "asDataSearch": [], - - /** - * Store the applied global search information in case we want to force a - * research or compare the old search to a new one. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @namespace - * @extends DataTable.models.oSearch - */ - "oPreviousSearch": {}, - - /** - * Store the applied search for each column - see - * {@link DataTable.models.oSearch} for the format that is used for the - * filtering information for each column. - * @type array - * @default [] - */ - "aoPreSearchCols": [], - - /** - * Sorting that is applied to the table. Note that the inner arrays are - * used in the following manner: - *
      - *
    • Index 0 - column number
    • - *
    • Index 1 - current sorting direction
    • - *
    • Index 2 - index of asSorting for this column
    • - *
    - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type array - * @todo These inner arrays should really be objects - */ - "aaSorting": null, - - /** - * Sorting that is always applied to the table (i.e. prefixed in front of - * aaSorting). - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type array|null - * @default null - */ - "aaSortingFixed": null, - - /** - * Classes to use for the striping of a table. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type array - * @default [] - */ - "asStripeClasses": null, - - /** - * If restoring a table - we should restore its striping classes as well - * @type array - * @default [] - */ - "asDestroyStripes": [], - - /** - * If restoring a table - we should restore its width - * @type int - * @default 0 - */ - "sDestroyWidth": 0, - - /** - * Callback functions array for every time a row is inserted (i.e. on a draw). - * @type array - * @default [] - */ - "aoRowCallback": [], - - /** - * Callback functions for the header on each draw. - * @type array - * @default [] - */ - "aoHeaderCallback": [], - - /** - * Callback function for the footer on each draw. - * @type array - * @default [] - */ - "aoFooterCallback": [], - - /** - * Array of callback functions for draw callback functions - * @type array - * @default [] - */ - "aoDrawCallback": [], - - /** - * Array of callback functions for row created function - * @type array - * @default [] - */ - "aoRowCreatedCallback": [], - - /** - * Callback functions for just before the table is redrawn. A return of - * false will be used to cancel the draw. - * @type array - * @default [] - */ - "aoPreDrawCallback": [], - - /** - * Callback functions for when the table has been initialised. - * @type array - * @default [] - */ - "aoInitComplete": [], - - - /** - * Callbacks for modifying the settings to be stored for state saving, prior to - * saving state. - * @type array - * @default [] - */ - "aoStateSaveParams": [], - - /** - * Callbacks for modifying the settings that have been stored for state saving - * prior to using the stored values to restore the state. - * @type array - * @default [] - */ - "aoStateLoadParams": [], - - /** - * Callbacks for operating on the settings object once the saved state has been - * loaded - * @type array - * @default [] - */ - "aoStateLoaded": [], - - /** - * Cache the table ID for quick access - * @type string - * @default Empty string - */ - "sTableId": "", - - /** - * The TABLE node for the main table - * @type node - * @default null - */ - "nTable": null, - - /** - * Permanent ref to the thead element - * @type node - * @default null - */ - "nTHead": null, - - /** - * Permanent ref to the tfoot element - if it exists - * @type node - * @default null - */ - "nTFoot": null, - - /** - * Permanent ref to the tbody element - * @type node - * @default null - */ - "nTBody": null, - - /** - * Cache the wrapper node (contains all DataTables controlled elements) - * @type node - * @default null - */ - "nTableWrapper": null, - - /** - * Indicate if when using server-side processing the loading of data - * should be deferred until the second draw. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - * @default false - */ - "bDeferLoading": false, - - /** - * Indicate if all required information has been read in - * @type boolean - * @default false - */ - "bInitialised": false, - - /** - * Information about open rows. Each object in the array has the parameters - * 'nTr' and 'nParent' - * @type array - * @default [] - */ - "aoOpenRows": [], - - /** - * Dictate the positioning of DataTables' control elements - see - * {@link DataTable.model.oInit.sDom}. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - * @default null - */ - "sDom": null, - - /** - * Which type of pagination should be used. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - * @default two_button - */ - "sPaginationType": "two_button", - - /** - * The cookie duration (for bStateSave) in seconds. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type int - * @default 0 - */ - "iCookieDuration": 0, - - /** - * The cookie name prefix. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - * @default Empty string - */ - "sCookiePrefix": "", - - /** - * Callback function for cookie creation. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type function - * @default null - */ - "fnCookieCallback": null, - - /** - * Array of callback functions for state saving. Each array element is an - * object with the following parameters: - *
      - *
    • function:fn - function to call. Takes two parameters, oSettings - * and the JSON string to save that has been thus far created. Returns - * a JSON string to be inserted into a json object - * (i.e. '"param": [ 0, 1, 2]')
    • - *
    • string:sName - name of callback
    • - *
    - * @type array - * @default [] - */ - "aoStateSave": [], - - /** - * Array of callback functions for state loading. Each array element is an - * object with the following parameters: - *
      - *
    • function:fn - function to call. Takes two parameters, oSettings - * and the object stored. May return false to cancel state loading
    • - *
    • string:sName - name of callback
    • - *
    - * @type array - * @default [] - */ - "aoStateLoad": [], - - /** - * State that was loaded from the cookie. Useful for back reference - * @type object - * @default null - */ - "oLoadedState": null, - - /** - * Source url for AJAX data for the table. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - * @default null - */ - "sAjaxSource": null, - - /** - * Property from a given object from which to read the table data from. This - * can be an empty string (when not server-side processing), in which case - * it is assumed an an array is given directly. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - */ - "sAjaxDataProp": null, - - /** - * Note if draw should be blocked while getting data - * @type boolean - * @default true - */ - "bAjaxDataGet": true, - - /** - * The last jQuery XHR object that was used for server-side data gathering. - * This can be used for working with the XHR information in one of the - * callbacks - * @type object - * @default null - */ - "jqXHR": null, - - /** - * Function to get the server-side data. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type function - */ - "fnServerData": null, - - /** - * Functions which are called prior to sending an Ajax request so extra - * parameters can easily be sent to the server - * @type array - * @default [] - */ - "aoServerParams": [], - - /** - * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if - * required). - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - */ - "sServerMethod": null, - - /** - * Format numbers for display. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type function - */ - "fnFormatNumber": null, - - /** - * List of options that can be used for the user selectable length menu. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type array - * @default [] - */ - "aLengthMenu": null, - - /** - * Counter for the draws that the table does. Also used as a tracker for - * server-side processing - * @type int - * @default 0 - */ - "iDraw": 0, - - /** - * Indicate if a redraw is being done - useful for Ajax - * @type boolean - * @default false - */ - "bDrawing": false, - - /** - * Draw index (iDraw) of the last error when parsing the returned data - * @type int - * @default -1 - */ - "iDrawError": -1, - - /** - * Paging display length - * @type int - * @default 10 - */ - "_iDisplayLength": 10, - - /** - * Paging start point - aiDisplay index - * @type int - * @default 0 - */ - "_iDisplayStart": 0, - - /** - * Paging end point - aiDisplay index. Use fnDisplayEnd rather than - * this property to get the end point - * @type int - * @default 10 - * @private - */ - "_iDisplayEnd": 10, - - /** - * Server-side processing - number of records in the result set - * (i.e. before filtering), Use fnRecordsTotal rather than - * this property to get the value of the number of records, regardless of - * the server-side processing setting. - * @type int - * @default 0 - * @private - */ - "_iRecordsTotal": 0, - - /** - * Server-side processing - number of records in the current display set - * (i.e. after filtering). Use fnRecordsDisplay rather than - * this property to get the value of the number of records, regardless of - * the server-side processing setting. - * @type boolean - * @default 0 - * @private - */ - "_iRecordsDisplay": 0, - - /** - * Flag to indicate if jQuery UI marking and classes should be used. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bJUI": null, - - /** - * The classes to use for the table - * @type object - * @default {} - */ - "oClasses": {}, - - /** - * Flag attached to the settings object so you can check in the draw - * callback if filtering has been done in the draw. Deprecated in favour of - * events. - * @type boolean - * @default false - * @deprecated - */ - "bFiltered": false, - - /** - * Flag attached to the settings object so you can check in the draw - * callback if sorting has been done in the draw. Deprecated in favour of - * events. - * @type boolean - * @default false - * @deprecated - */ - "bSorted": false, - - /** - * Indicate that if multiple rows are in the header and there is more than - * one unique cell per column, if the top one (true) or bottom one (false) - * should be used for sorting / title by DataTables. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bSortCellsTop": null, - - /** - * Initialisation object that is used for the table - * @type object - * @default null - */ - "oInit": null, - - /** - * Destroy callback functions - for plug-ins to attach themselves to the - * destroy so they can clean up markup and events. - * @type array - * @default [] - */ - "aoDestroyCallback": [], - - - /** - * Get the number of records in the current record set, before filtering - * @type function - */ - "fnRecordsTotal": function () - { - if ( this.oFeatures.bServerSide ) { - return parseInt(this._iRecordsTotal, 10); - } else { - return this.aiDisplayMaster.length; - } - }, - - /** - * Get the number of records in the current record set, after filtering - * @type function - */ - "fnRecordsDisplay": function () - { - if ( this.oFeatures.bServerSide ) { - return parseInt(this._iRecordsDisplay, 10); - } else { - return this.aiDisplay.length; - } - }, - - /** - * Set the display end point - aiDisplay index - * @type function - * @todo Should do away with _iDisplayEnd and calculate it on-the-fly here - */ - "fnDisplayEnd": function () - { - if ( this.oFeatures.bServerSide ) { - if ( this.oFeatures.bPaginate === false || this._iDisplayLength == -1 ) { - return this._iDisplayStart+this.aiDisplay.length; - } else { - return Math.min( this._iDisplayStart+this._iDisplayLength, - this._iRecordsDisplay ); - } - } else { - return this._iDisplayEnd; - } - }, - - /** - * The DataTables object for this table - * @type object - * @default null - */ - "oInstance": null, - - /** - * Unique identifier for each instance of the DataTables object. If there - * is an ID on the table node, then it takes that value, otherwise an - * incrementing internal counter is used. - * @type string - * @default null - */ - "sInstance": null, - - /** - * tabindex attribute value that is added to DataTables control elements, allowing - * keyboard navigation of the table and its controls. - */ - "iTabIndex": 0, - - /** - * DIV container for the footer scrolling table if scrolling - */ - "nScrollHead": null, - - /** - * DIV container for the footer scrolling table if scrolling - */ - "nScrollFoot": null - }; - - /** - * Extension object for DataTables that is used to provide all extension options. - * - * Note that the DataTable.ext object is available through - * jQuery.fn.dataTable.ext where it may be accessed and manipulated. It is - * also aliased to jQuery.fn.dataTableExt for historic reasons. - * @namespace - * @extends DataTable.models.ext - */ - DataTable.ext = $.extend( true, {}, DataTable.models.ext ); - - $.extend( DataTable.ext.oStdClasses, { - "sTable": "dataTable", - - /* Two buttons buttons */ - "sPagePrevEnabled": "paginate_enabled_previous", - "sPagePrevDisabled": "paginate_disabled_previous", - "sPageNextEnabled": "paginate_enabled_next", - "sPageNextDisabled": "paginate_disabled_next", - "sPageJUINext": "", - "sPageJUIPrev": "", - - /* Full numbers paging buttons */ - "sPageButton": "paginate_button", - "sPageButtonActive": "paginate_active", - "sPageButtonStaticDisabled": "paginate_button paginate_button_disabled", - "sPageFirst": "first", - "sPagePrevious": "previous", - "sPageNext": "next", - "sPageLast": "last", - - /* Striping classes */ - "sStripeOdd": "odd", - "sStripeEven": "even", - - /* Empty row */ - "sRowEmpty": "dataTables_empty", - - /* Features */ - "sWrapper": "dataTables_wrapper", - "sFilter": "dataTables_filter", - "sInfo": "dataTables_info", - "sPaging": "dataTables_paginate paging_", /* Note that the type is postfixed */ - "sLength": "dataTables_length", - "sProcessing": "dataTables_processing", - - /* Sorting */ - "sSortAsc": "sorting_asc", - "sSortDesc": "sorting_desc", - "sSortable": "sorting", /* Sortable in both directions */ - "sSortableAsc": "sorting_asc_disabled", - "sSortableDesc": "sorting_desc_disabled", - "sSortableNone": "sorting_disabled", - "sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */ - "sSortJUIAsc": "", - "sSortJUIDesc": "", - "sSortJUI": "", - "sSortJUIAscAllowed": "", - "sSortJUIDescAllowed": "", - "sSortJUIWrapper": "", - "sSortIcon": "", - - /* Scrolling */ - "sScrollWrapper": "dataTables_scroll", - "sScrollHead": "dataTables_scrollHead", - "sScrollHeadInner": "dataTables_scrollHeadInner", - "sScrollBody": "dataTables_scrollBody", - "sScrollFoot": "dataTables_scrollFoot", - "sScrollFootInner": "dataTables_scrollFootInner", - - /* Misc */ - "sFooterTH": "", - "sJUIHeader": "", - "sJUIFooter": "" - } ); - - - $.extend( DataTable.ext.oJUIClasses, DataTable.ext.oStdClasses, { - /* Two buttons buttons */ - "sPagePrevEnabled": "fg-button ui-button ui-state-default ui-corner-left", - "sPagePrevDisabled": "fg-button ui-button ui-state-default ui-corner-left ui-state-disabled", - "sPageNextEnabled": "fg-button ui-button ui-state-default ui-corner-right", - "sPageNextDisabled": "fg-button ui-button ui-state-default ui-corner-right ui-state-disabled", - "sPageJUINext": "ui-icon ui-icon-circle-arrow-e", - "sPageJUIPrev": "ui-icon ui-icon-circle-arrow-w", - - /* Full numbers paging buttons */ - "sPageButton": "fg-button ui-button ui-state-default", - "sPageButtonActive": "fg-button ui-button ui-state-default ui-state-disabled", - "sPageButtonStaticDisabled": "fg-button ui-button ui-state-default ui-state-disabled", - "sPageFirst": "first ui-corner-tl ui-corner-bl", - "sPageLast": "last ui-corner-tr ui-corner-br", - - /* Features */ - "sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi "+ - "ui-buttonset-multi paging_", /* Note that the type is postfixed */ - - /* Sorting */ - "sSortAsc": "ui-state-default", - "sSortDesc": "ui-state-default", - "sSortable": "ui-state-default", - "sSortableAsc": "ui-state-default", - "sSortableDesc": "ui-state-default", - "sSortableNone": "ui-state-default", - "sSortJUIAsc": "css_right ui-icon ui-icon-triangle-1-n", - "sSortJUIDesc": "css_right ui-icon ui-icon-triangle-1-s", - "sSortJUI": "css_right ui-icon ui-icon-carat-2-n-s", - "sSortJUIAscAllowed": "css_right ui-icon ui-icon-carat-1-n", - "sSortJUIDescAllowed": "css_right ui-icon ui-icon-carat-1-s", - "sSortJUIWrapper": "DataTables_sort_wrapper", - "sSortIcon": "DataTables_sort_icon", - - /* Scrolling */ - "sScrollHead": "dataTables_scrollHead ui-state-default", - "sScrollFoot": "dataTables_scrollFoot ui-state-default", - - /* Misc */ - "sFooterTH": "ui-state-default", - "sJUIHeader": "fg-toolbar ui-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix", - "sJUIFooter": "fg-toolbar ui-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix" - } ); - - /* - * Variable: oPagination - * Purpose: - * Scope: jQuery.fn.dataTableExt - */ - $.extend( DataTable.ext.oPagination, { - /* - * Variable: two_button - * Purpose: Standard two button (forward/back) pagination - * Scope: jQuery.fn.dataTableExt.oPagination - */ - "two_button": { - /* - * Function: oPagination.two_button.fnInit - * Purpose: Initialise dom elements required for pagination with forward/back buttons only - * Returns: - - * Inputs: object:oSettings - dataTables settings object - * node:nPaging - the DIV which contains this pagination control - * function:fnCallbackDraw - draw function which must be called on update - */ - "fnInit": function ( oSettings, nPaging, fnCallbackDraw ) - { - var oLang = oSettings.oLanguage.oPaginate; - var oClasses = oSettings.oClasses; - var fnClickHandler = function ( e ) { - if ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) ) - { - fnCallbackDraw( oSettings ); - } - }; - - var sAppend = (!oSettings.bJUI) ? - ''+oLang.sPrevious+''+ - ''+oLang.sNext+'' - : - ''+ - ''; - $(nPaging).append( sAppend ); - - var els = $('a', nPaging); - var nPrevious = els[0], - nNext = els[1]; - - oSettings.oApi._fnBindAction( nPrevious, {action: "previous"}, fnClickHandler ); - oSettings.oApi._fnBindAction( nNext, {action: "next"}, fnClickHandler ); - - /* ID the first elements only */ - if ( !oSettings.aanFeatures.p ) - { - nPaging.id = oSettings.sTableId+'_paginate'; - nPrevious.id = oSettings.sTableId+'_previous'; - nNext.id = oSettings.sTableId+'_next'; - - nPrevious.setAttribute('aria-controls', oSettings.sTableId); - nNext.setAttribute('aria-controls', oSettings.sTableId); - } - }, - - /* - * Function: oPagination.two_button.fnUpdate - * Purpose: Update the two button pagination at the end of the draw - * Returns: - - * Inputs: object:oSettings - dataTables settings object - * function:fnCallbackDraw - draw function to call on page change - */ - "fnUpdate": function ( oSettings, fnCallbackDraw ) - { - if ( !oSettings.aanFeatures.p ) - { - return; - } - - var oClasses = oSettings.oClasses; - var an = oSettings.aanFeatures.p; - var nNode; - - /* Loop over each instance of the pager */ - for ( var i=0, iLen=an.length ; i'+oLang.sFirst+''+ - ''+oLang.sPrevious+''+ - ''+ - ''+oLang.sNext+''+ - ''+oLang.sLast+'' - ); - var els = $('a', nPaging); - var nFirst = els[0], - nPrev = els[1], - nNext = els[2], - nLast = els[3]; - - oSettings.oApi._fnBindAction( nFirst, {action: "first"}, fnClickHandler ); - oSettings.oApi._fnBindAction( nPrev, {action: "previous"}, fnClickHandler ); - oSettings.oApi._fnBindAction( nNext, {action: "next"}, fnClickHandler ); - oSettings.oApi._fnBindAction( nLast, {action: "last"}, fnClickHandler ); - - /* ID the first elements only */ - if ( !oSettings.aanFeatures.p ) - { - nPaging.id = oSettings.sTableId+'_paginate'; - nFirst.id =oSettings.sTableId+'_first'; - nPrev.id =oSettings.sTableId+'_previous'; - nNext.id =oSettings.sTableId+'_next'; - nLast.id =oSettings.sTableId+'_last'; - } - }, - - /* - * Function: oPagination.full_numbers.fnUpdate - * Purpose: Update the list of page buttons shows - * Returns: - - * Inputs: object:oSettings - dataTables settings object - * function:fnCallbackDraw - draw function to call on page change - */ - "fnUpdate": function ( oSettings, fnCallbackDraw ) - { - if ( !oSettings.aanFeatures.p ) - { - return; - } - - var iPageCount = DataTable.ext.oPagination.iFullNumbersShowPages; - var iPageCountHalf = Math.floor(iPageCount / 2); - var iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength); - var iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1; - var sList = ""; - var iStartButton, iEndButton, i, iLen; - var oClasses = oSettings.oClasses; - var anButtons, anStatic, nPaginateList, nNode; - var an = oSettings.aanFeatures.p; - var fnBind = function (j) { - oSettings.oApi._fnBindAction( this, {"page": j+iStartButton-1}, function(e) { - /* Use the information in the element to jump to the required page */ - oSettings.oApi._fnPageChange( oSettings, e.data.page ); - fnCallbackDraw( oSettings ); - e.preventDefault(); - } ); - }; - - /* Pages calculation */ - if ( oSettings._iDisplayLength === -1 ) - { - iStartButton = 1; - iEndButton = 1; - iCurrentPage = 1; - } - else if (iPages < iPageCount) - { - iStartButton = 1; - iEndButton = iPages; - } - else if (iCurrentPage <= iPageCountHalf) - { - iStartButton = 1; - iEndButton = iPageCount; - } - else if (iCurrentPage >= (iPages - iPageCountHalf)) - { - iStartButton = iPages - iPageCount + 1; - iEndButton = iPages; - } - else - { - iStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1; - iEndButton = iStartButton + iPageCount - 1; - } - - - /* Build the dynamic list */ - for ( i=iStartButton ; i<=iEndButton ; i++ ) - { - sList += (iCurrentPage !== i) ? - ''+oSettings.fnFormatNumber(i)+'' : - ''+oSettings.fnFormatNumber(i)+''; - } - - /* Loop over each instance of the pager */ - for ( i=0, iLen=an.length ; i y) ? 1 : 0)); - }, - - "string-desc": function ( x, y ) - { - return ((x < y) ? 1 : ((x > y) ? -1 : 0)); - }, - - - /* - * html sorting (ignore html tags) - */ - "html-pre": function ( a ) - { - return a.replace( /<.*?>/g, "" ).toLowerCase(); - }, - - "html-asc": function ( x, y ) - { - return ((x < y) ? -1 : ((x > y) ? 1 : 0)); - }, - - "html-desc": function ( x, y ) - { - return ((x < y) ? 1 : ((x > y) ? -1 : 0)); - }, - - - /* - * date sorting - */ - "date-pre": function ( a ) - { - var x = Date.parse( a ); - - if ( isNaN(x) || x==="" ) - { - x = Date.parse( "01/01/1970 00:00:00" ); - } - return x; - }, - - "date-asc": function ( x, y ) - { - return x - y; - }, - - "date-desc": function ( x, y ) - { - return y - x; - }, - - - /* - * numerical sorting - */ - "numeric-pre": function ( a ) - { - return (a=="-" || a==="") ? 0 : a*1; - }, - - "numeric-asc": function ( x, y ) - { - return x - y; - }, - - "numeric-desc": function ( x, y ) - { - return y - x; - } - } ); - - - $.extend( DataTable.ext.aTypes, [ - /* - * Function: - - * Purpose: Check to see if a string is numeric - * Returns: string:'numeric' or null - * Inputs: mixed:sText - string to check - */ - function ( sData ) - { - /* Allow zero length strings as a number */ - if ( typeof sData === 'number' ) - { - return 'numeric'; - } - else if ( typeof sData !== 'string' ) - { - return null; - } - - var sValidFirstChars = "0123456789-"; - var sValidChars = "0123456789."; - var Char; - var bDecimal = false; - - /* Check for a valid first char (no period and allow negatives) */ - Char = sData.charAt(0); - if (sValidFirstChars.indexOf(Char) == -1) - { - return null; - } - - /* Check all the other characters are valid */ - for ( var i=1 ; i') != -1 ) - { - return 'html'; - } - return null; - } - ] ); - - - // jQuery aliases - $.fn.DataTable = DataTable; - $.fn.dataTable = DataTable; - $.fn.dataTableSettings = DataTable.settings; - $.fn.dataTableExt = DataTable.ext; - - - // Information about events fired by DataTables - for documentation. - /** - * Draw event, fired whenever the table is redrawn on the page, at the same point as - * fnDrawCallback. This may be useful for binding events or performing calculations when - * the table is altered at all. - * @name DataTable#draw - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * Filter event, fired when the filtering applied to the table (using the build in global - * global filter, or column filters) is altered. - * @name DataTable#filter - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * Page change event, fired when the paging of the table is altered. - * @name DataTable#page - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * Sort event, fired when the sorting applied to the table is altered. - * @name DataTable#sort - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * DataTables initialisation complete event, fired when the table is fully drawn, - * including Ajax data loaded, if Ajax data is required. - * @name DataTable#init - * @event - * @param {event} e jQuery event object - * @param {object} oSettings DataTables settings object - * @param {object} json The JSON object request from the server - only - * present if client-side Ajax sourced data is used
  • - */ - - /** - * State save event, fired when the table has changed state a new state save is required. - * This method allows modification of the state saving object prior to actually doing the - * save, including addition or other state properties (for plug-ins) or modification - * of a DataTables core property. - * @name DataTable#stateSaveParams - * @event - * @param {event} e jQuery event object - * @param {object} oSettings DataTables settings object - * @param {object} json The state information to be saved - */ - - /** - * State load event, fired when the table is loading state from the stored data, but - * prior to the settings object being modified by the saved state - allowing modification - * of the saved state is required or loading of state for a plug-in. - * @name DataTable#stateLoadParams - * @event - * @param {event} e jQuery event object - * @param {object} oSettings DataTables settings object - * @param {object} json The saved state information - */ - - /** - * State loaded event, fired when state has been loaded from stored data and the settings - * object has been modified by the loaded data. - * @name DataTable#stateLoaded - * @event - * @param {event} e jQuery event object - * @param {object} oSettings DataTables settings object - * @param {object} json The saved state information - */ - - /** - * Processing event, fired when DataTables is doing some kind of processing (be it, - * sort, filter or anything else). Can be used to indicate to the end user that - * there is something happening, or that something has finished. - * @name DataTable#processing - * @event - * @param {event} e jQuery event object - * @param {object} oSettings DataTables settings object - * @param {boolean} bShow Flag for if DataTables is doing processing or not - */ - - /** - * Ajax (XHR) event, fired whenever an Ajax request is completed from a request to - * made to the server for new data (note that this trigger is called in fnServerData, - * if you override fnServerData and which to use this event, you need to trigger it in - * you success function). - * @name DataTable#xhr - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - * @param {object} json JSON returned from the server - */ - - /** - * Destroy event, fired when the DataTable is destroyed by calling fnDestroy or passing - * the bDestroy:true parameter in the initialisation object. This can be used to remove - * bound events, added DOM nodes, etc. - * @name DataTable#destroy - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ -})); - -}(window, document)); - diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/data-tables/jquery.dataTables.min.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/data-tables/jquery.dataTables.min.js deleted file mode 100644 index c73ad54c..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/data-tables/jquery.dataTables.min.js +++ /dev/null @@ -1,155 +0,0 @@ -/* - * File: jquery.dataTables.min.js - * Version: 1.9.4 - * Author: Allan Jardine (www.sprymedia.co.uk) - * Info: www.datatables.net - * - * Copyright 2008-2012 Allan Jardine, all rights reserved. - * - * This source file is free software, under either the GPL v2 license or a - * BSD style license, available at: - * http://datatables.net/license_gpl2 - * http://datatables.net/license_bsd - * - * This source file is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. - */ -(function(X,l,n){var L=function(h){var j=function(e){function o(a,b){var c=j.defaults.columns,d=a.aoColumns.length,c=h.extend({},j.models.oColumn,c,{sSortingClass:a.oClasses.sSortable,sSortingClassJUI:a.oClasses.sSortJUI,nTh:b?b:l.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.oDefaults:d});a.aoColumns.push(c);if(a.aoPreSearchCols[d]===n||null===a.aoPreSearchCols[d])a.aoPreSearchCols[d]=h.extend({},j.models.oSearch);else if(c=a.aoPreSearchCols[d], -c.bRegex===n&&(c.bRegex=!0),c.bSmart===n&&(c.bSmart=!0),c.bCaseInsensitive===n)c.bCaseInsensitive=!0;m(a,d,null)}function m(a,b,c){var d=a.aoColumns[b];c!==n&&null!==c&&(c.mDataProp&&!c.mData&&(c.mData=c.mDataProp),c.sType!==n&&(d.sType=c.sType,d._bAutoType=!1),h.extend(d,c),p(d,c,"sWidth","sWidthOrig"),c.iDataSort!==n&&(d.aDataSort=[c.iDataSort]),p(d,c,"aDataSort"));var i=d.mRender?Q(d.mRender):null,f=Q(d.mData);d.fnGetData=function(a,b){var c=f(a,b);return d.mRender&&b&&""!==b?i(c,b,a):c};d.fnSetData= -L(d.mData);a.oFeatures.bSort||(d.bSortable=!1);!d.bSortable||-1==h.inArray("asc",d.asSorting)&&-1==h.inArray("desc",d.asSorting)?(d.sSortingClass=a.oClasses.sSortableNone,d.sSortingClassJUI=""):-1==h.inArray("asc",d.asSorting)&&-1==h.inArray("desc",d.asSorting)?(d.sSortingClass=a.oClasses.sSortable,d.sSortingClassJUI=a.oClasses.sSortJUI):-1!=h.inArray("asc",d.asSorting)&&-1==h.inArray("desc",d.asSorting)?(d.sSortingClass=a.oClasses.sSortableAsc,d.sSortingClassJUI=a.oClasses.sSortJUIAscAllowed):-1== -h.inArray("asc",d.asSorting)&&-1!=h.inArray("desc",d.asSorting)&&(d.sSortingClass=a.oClasses.sSortableDesc,d.sSortingClassJUI=a.oClasses.sSortJUIDescAllowed)}function k(a){if(!1===a.oFeatures.bAutoWidth)return!1;da(a);for(var b=0,c=a.aoColumns.length;bj[f])d(a.aoColumns.length+j[f],b[i]);else if("string"===typeof j[f]){e=0;for(w=a.aoColumns.length;eb&&a[d]--; -1!=c&&a.splice(c,1)}function S(a,b,c){var d=a.aoColumns[c];return d.fnRender({iDataRow:b,iDataColumn:c,oSettings:a,aData:a.aoData[b]._aData,mDataProp:d.mData},v(a,b,c,"display"))}function ea(a,b){var c=a.aoData[b],d;if(null===c.nTr){c.nTr=l.createElement("tr");c.nTr._DT_RowIndex=b;c._aData.DT_RowId&&(c.nTr.id=c._aData.DT_RowId);c._aData.DT_RowClass&& -(c.nTr.className=c._aData.DT_RowClass);for(var i=0,f=a.aoColumns.length;i=a.fnRecordsDisplay()?0:a.iInitDisplayStart,a.iInitDisplayStart=-1,y(a));if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++;else if(a.oFeatures.bServerSide){if(!a.bDestroying&&!wa(a))return}else a.iDraw++;if(0!==a.aiDisplay.length){var g= -a._iDisplayStart;d=a._iDisplayEnd;a.oFeatures.bServerSide&&(g=0,d=a.aoData.length);for(;g
    ")[0];a.nTable.parentNode.insertBefore(b,a.nTable);a.nTableWrapper=h('
    ')[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var c=a.nTableWrapper,d=a.sDom.split(""),i,f,g,e,w,o,k,m=0;m
    ")[0];w=d[m+ -1];if("'"==w||'"'==w){o="";for(k=2;d[m+k]!=w;)o+=d[m+k],k++;"H"==o?o=a.oClasses.sJUIHeader:"F"==o&&(o=a.oClasses.sJUIFooter);-1!=o.indexOf(".")?(w=o.split("."),e.id=w[0].substr(1,w[0].length-1),e.className=w[1]):"#"==o.charAt(0)?e.id=o.substr(1,o.length-1):e.className=o;m+=k}c.appendChild(e);c=e}else if(">"==g)c=c.parentNode;else if("l"==g&&a.oFeatures.bPaginate&&a.oFeatures.bLengthChange)i=ya(a),f=1;else if("f"==g&&a.oFeatures.bFilter)i=za(a),f=1;else if("r"==g&&a.oFeatures.bProcessing)i=Aa(a),f= -1;else if("t"==g)i=Ba(a),f=1;else if("i"==g&&a.oFeatures.bInfo)i=Ca(a),f=1;else if("p"==g&&a.oFeatures.bPaginate)i=Da(a),f=1;else if(0!==j.ext.aoFeatures.length){e=j.ext.aoFeatures;k=0;for(w=e.length;k'):""===c?'':c+' ',d=l.createElement("div");d.className=a.oClasses.sFilter;d.innerHTML="";a.aanFeatures.f||(d.id=a.sTableId+"_filter");c=h('input[type="text"]',d);d._DT_Input=c[0];c.val(b.sSearch.replace('"',"""));c.bind("keyup.DT",function(){for(var c=a.aanFeatures.f,d=this.value===""?"":this.value, -g=0,e=c.length;g=b.length)a.aiDisplay.splice(0,a.aiDisplay.length),a.aiDisplay=a.aiDisplayMaster.slice();else if(a.aiDisplay.length==a.aiDisplayMaster.length||i.sSearch.length>b.length||1==c||0!==b.indexOf(i.sSearch)){a.aiDisplay.splice(0, -a.aiDisplay.length);la(a,1);for(b=0;b").html(c).text()); -return c.replace(/[\n\r]/g," ")}function ma(a,b,c,d){if(c)return a=b?a.split(" "):oa(a).split(" "),a="^(?=.*?"+a.join(")(?=.*?")+").*$",RegExp(a,d?"i":"");a=b?a:oa(a);return RegExp(a,d?"i":"")}function Ja(a,b){return"function"===typeof j.ext.ofnSearch[b]?j.ext.ofnSearch[b](a):null===a?"":"html"==b?a.replace(/[\r\n]/g," ").replace(/<.*?>/g,""):"string"===typeof a?a.replace(/[\r\n]/g," "):a}function oa(a){return a.replace(RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"), -"\\$1")}function Ca(a){var b=l.createElement("div");b.className=a.oClasses.sInfo;a.aanFeatures.i||(a.aoDrawCallback.push({fn:Ka,sName:"information"}),b.id=a.sTableId+"_info");a.nTable.setAttribute("aria-describedby",a.sTableId+"_info");return b}function Ka(a){if(a.oFeatures.bInfo&&0!==a.aanFeatures.i.length){var b=a.oLanguage,c=a._iDisplayStart+1,d=a.fnDisplayEnd(),i=a.fnRecordsTotal(),f=a.fnRecordsDisplay(),g;g=0===f?b.sInfoEmpty:b.sInfo;f!=i&&(g+=" "+b.sInfoFiltered);g+=b.sInfoPostFix;g=ja(a,g); -null!==b.fnInfoCallback&&(g=b.fnInfoCallback.call(a.oInstance,a,c,d,i,f,g));a=a.aanFeatures.i;b=0;for(c=a.length;b",c,d,i=a.aLengthMenu;if(2==i.length&&"object"===typeof i[0]&&"object"===typeof i[1]){c=0;for(d=i[0].length;c'+i[1][c]+""}else{c=0;for(d=i.length;c'+i[c]+""}b+="";i=l.createElement("div");a.aanFeatures.l|| -(i.id=a.sTableId+"_length");i.className=a.oClasses.sLength;i.innerHTML="";h('select option[value="'+a._iDisplayLength+'"]',i).attr("selected",!0);h("select",i).bind("change.DT",function(){var b=h(this).val(),i=a.aanFeatures.l;c=0;for(d=i.length;ca.aiDisplay.length||-1==a._iDisplayLength?a.aiDisplay.length:a._iDisplayStart+a._iDisplayLength}function Da(a){if(a.oScroll.bInfinite)return null;var b=l.createElement("div");b.className=a.oClasses.sPaging+a.sPaginationType;j.ext.oPagination[a.sPaginationType].fnInit(a, -b,function(a){y(a);x(a)});a.aanFeatures.p||a.aoDrawCallback.push({fn:function(a){j.ext.oPagination[a.sPaginationType].fnUpdate(a,function(a){y(a);x(a)})},sName:"pagination"});return b}function qa(a,b){var c=a._iDisplayStart;if("number"===typeof b)a._iDisplayStart=b*a._iDisplayLength,a._iDisplayStart>a.fnRecordsDisplay()&&(a._iDisplayStart=0);else if("first"==b)a._iDisplayStart=0;else if("previous"==b)a._iDisplayStart=0<=a._iDisplayLength?a._iDisplayStart-a._iDisplayLength:0,0>a._iDisplayStart&&(a._iDisplayStart= -0);else if("next"==b)0<=a._iDisplayLength?a._iDisplayStart+a._iDisplayLengthh(a.nTable).height()-a.oScroll.iLoadGap&&a.fnDisplayEnd()d.offsetHeight||"scroll"==h(d).css("overflow-y")))a.nTable.style.width=q(h(a.nTable).outerWidth()-a.oScroll.iBarWidth)}else""!==a.oScroll.sXInner?a.nTable.style.width= -q(a.oScroll.sXInner):i==h(d).width()&&h(d).height()i-a.oScroll.iBarWidth&&(a.nTable.style.width=q(i))):a.nTable.style.width=q(i);i=h(a.nTable).outerWidth();C(s,e);C(function(a){p.push(q(h(a).width()))},e);C(function(a,b){a.style.width=p[b]},g);h(e).height(0);null!==a.nTFoot&&(C(s,j),C(function(a){n.push(q(h(a).width()))},j),C(function(a,b){a.style.width=n[b]},o),h(j).height(0));C(function(a,b){a.innerHTML= -"";a.style.width=p[b]},e);null!==a.nTFoot&&C(function(a,b){a.innerHTML="";a.style.width=n[b]},j);if(h(a.nTable).outerWidth()d.offsetHeight||"scroll"==h(d).css("overflow-y")?i+a.oScroll.iBarWidth:i;if(r&&(d.scrollHeight>d.offsetHeight||"scroll"==h(d).css("overflow-y")))a.nTable.style.width=q(g-a.oScroll.iBarWidth);d.style.width=q(g);a.nScrollHead.style.width=q(g);null!==a.nTFoot&&(a.nScrollFoot.style.width=q(g));""===a.oScroll.sX?D(a,1,"The table cannot fit into the current element which will cause column misalignment. The table has been drawn at its minimum possible width."): -""!==a.oScroll.sXInner&&D(a,1,"The table cannot fit into the current element which will cause column misalignment. Increase the sScrollXInner value or remove it to allow automatic calculation")}else d.style.width=q("100%"),a.nScrollHead.style.width=q("100%"),null!==a.nTFoot&&(a.nScrollFoot.style.width=q("100%"));""===a.oScroll.sY&&r&&(d.style.height=q(a.nTable.offsetHeight+a.oScroll.iBarWidth));""!==a.oScroll.sY&&a.oScroll.bCollapse&&(d.style.height=q(a.oScroll.sY),r=""!==a.oScroll.sX&&a.nTable.offsetWidth> -d.offsetWidth?a.oScroll.iBarWidth:0,a.nTable.offsetHeightd.clientHeight||"scroll"==h(d).css("overflow-y");b.style.paddingRight=c?a.oScroll.iBarWidth+"px":"0px";null!==a.nTFoot&&(R.style.width=q(r),l.style.width=q(r),l.style.paddingRight=c?a.oScroll.iBarWidth+"px":"0px");h(d).scroll();if(a.bSorted||a.bFiltered)d.scrollTop=0}function C(a,b,c){for(var d= -0,i=0,f=b.length,g,e;itd",b));j=N(a,f);for(f=d=0;fc)return null;if(null===a.aoData[c].nTr){var d=l.createElement("td");d.innerHTML=v(a,c,b,"");return d}return J(a,c)[b]}function Pa(a,b){for(var c=-1,d=-1,i=0;i/g,"");e.length>c&&(c=e.length,d=i)}return d}function q(a){if(null===a)return"0px";if("number"==typeof a)return 0>a?"0px":a+"px";var b=a.charCodeAt(a.length-1); -return 48>b||57/g,""),i=q[c].nTh,i.removeAttribute("aria-sort"),i.removeAttribute("aria-label"),q[c].bSortable?0d&&d++;f=RegExp(f+"[123]");var o;b=0;for(c=a.length;b
    ')[0];l.body.appendChild(b);a.oBrowser.bScrollOversize= -100===h("#DT_BrowserTest",b)[0].offsetWidth?!0:!1;l.body.removeChild(b)}function Va(a){return function(){var b=[s(this[j.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return j.ext.oApi[a].apply(this,b)}}var U=/\[.*?\]$/,Wa=X.JSON?JSON.stringify:function(a){var b=typeof a;if("object"!==b||null===a)return"string"===b&&(a='"'+a+'"'),a+"";var c,d,e=[],f=h.isArray(a);for(c in a)d=a[c],b=typeof d,"string"===b?d='"'+d+'"':"object"===b&&null!==d&&(d=Wa(d)),e.push((f?"":'"'+c+'":')+d);return(f? -"[":"{")+e+(f?"]":"}")};this.$=function(a,b){var c,d,e=[],f;d=s(this[j.ext.iApiIndex]);var g=d.aoData,o=d.aiDisplay,k=d.aiDisplayMaster;b||(b={});b=h.extend({},{filter:"none",order:"current",page:"all"},b);if("current"==b.page){c=d._iDisplayStart;for(d=d.fnDisplayEnd();c=d.fnRecordsDisplay()&&(d._iDisplayStart-=d._iDisplayLength,0>d._iDisplayStart&&(d._iDisplayStart=0));if(c===n||c)y(d),x(d);return g};this.fnDestroy=function(a){var b=s(this[j.ext.iApiIndex]),c=b.nTableWrapper.parentNode,d=b.nTBody,i,f,a=a===n?!1:a;b.bDestroying=!0;A(b,"aoDestroyCallback","destroy",[b]);if(!a){i=0;for(f=b.aoColumns.length;itr>td."+b.oClasses.sRowEmpty,b.nTable).parent().remove();b.nTable!=b.nTHead.parentNode&&(h(b.nTable).children("thead").remove(),b.nTable.appendChild(b.nTHead));b.nTFoot&&b.nTable!=b.nTFoot.parentNode&&(h(b.nTable).children("tfoot").remove(),b.nTable.appendChild(b.nTFoot));b.nTable.parentNode.removeChild(b.nTable);h(b.nTableWrapper).remove();b.aaSorting=[];b.aaSortingFixed=[];P(b);h(T(b)).removeClass(b.asStripeClasses.join(" "));h("th, td",b.nTHead).removeClass([b.oClasses.sSortable,b.oClasses.sSortableAsc, -b.oClasses.sSortableDesc,b.oClasses.sSortableNone].join(" "));b.bJUI&&(h("th span."+b.oClasses.sSortIcon+", td span."+b.oClasses.sSortIcon,b.nTHead).remove(),h("th, td",b.nTHead).each(function(){var a=h("div."+b.oClasses.sSortJUIWrapper,this),c=a.contents();h(this).append(c);a.remove()}));!a&&b.nTableReinsertBefore?c.insertBefore(b.nTable,b.nTableReinsertBefore):a||c.appendChild(b.nTable);i=0;for(f=b.aoData.length;i=t(d);if(!m)for(e=a;et<"F"ip>')):h.extend(g.oClasses,j.ext.oStdClasses);h(this).addClass(g.oClasses.sTable);if(""!==g.oScroll.sX||""!==g.oScroll.sY)g.oScroll.iBarWidth=Qa();g.iInitDisplayStart===n&&(g.iInitDisplayStart=e.iDisplayStart, -g._iDisplayStart=e.iDisplayStart);e.bStateSave&&(g.oFeatures.bStateSave=!0,Sa(g,e),z(g,"aoDrawCallback",ra,"state_save"));null!==e.iDeferLoading&&(g.bDeferLoading=!0,a=h.isArray(e.iDeferLoading),g._iRecordsDisplay=a?e.iDeferLoading[0]:e.iDeferLoading,g._iRecordsTotal=a?e.iDeferLoading[1]:e.iDeferLoading);null!==e.aaData&&(f=!0);""!==e.oLanguage.sUrl?(g.oLanguage.sUrl=e.oLanguage.sUrl,h.getJSON(g.oLanguage.sUrl,null,function(a){pa(a);h.extend(true,g.oLanguage,e.oLanguage,a);ba(g)}),i=!0):h.extend(!0, -g.oLanguage,e.oLanguage);null===e.asStripeClasses&&(g.asStripeClasses=[g.oClasses.sStripeOdd,g.oClasses.sStripeEven]);b=g.asStripeClasses.length;g.asDestroyStripes=[];if(b){c=!1;d=h(this).children("tbody").children("tr:lt("+b+")");for(a=0;a=g.aoColumns.length&&(g.aaSorting[a][0]=0);var k=g.aoColumns[g.aaSorting[a][0]];g.aaSorting[a][2]===n&&(g.aaSorting[a][2]=0);e.aaSorting===n&&g.saved_aaSorting===n&&(g.aaSorting[a][1]= -k.asSorting[0]);c=0;for(d=k.asSorting.length;c=parseInt(n,10)};j.fnIsDataTable=function(e){for(var h=j.settings,m=0;me)return e;for(var h=e+"",e=h.split(""),j="",h=h.length,k=0;k'+k.sPrevious+''+k.sNext+"":'';h(j).append(k);var l=h("a",j), -k=l[0],l=l[1];e.oApi._fnBindAction(k,{action:"previous"},n);e.oApi._fnBindAction(l,{action:"next"},n);e.aanFeatures.p||(j.id=e.sTableId+"_paginate",k.id=e.sTableId+"_previous",l.id=e.sTableId+"_next",k.setAttribute("aria-controls",e.sTableId),l.setAttribute("aria-controls",e.sTableId))},fnUpdate:function(e){if(e.aanFeatures.p)for(var h=e.oClasses,j=e.aanFeatures.p,k,l=0,n=j.length;l'+k.sFirst+''+k.sPrevious+''+k.sNext+''+k.sLast+"");var t=h("a",j),k=t[0],l=t[1],r=t[2],t=t[3];e.oApi._fnBindAction(k,{action:"first"},n);e.oApi._fnBindAction(l,{action:"previous"},n);e.oApi._fnBindAction(r,{action:"next"},n);e.oApi._fnBindAction(t,{action:"last"},n);e.aanFeatures.p||(j.id=e.sTableId+"_paginate",k.id=e.sTableId+"_first",l.id=e.sTableId+"_previous",r.id=e.sTableId+"_next",t.id=e.sTableId+"_last")}, -fnUpdate:function(e,o){if(e.aanFeatures.p){var m=j.ext.oPagination.iFullNumbersShowPages,k=Math.floor(m/2),l=Math.ceil(e.fnRecordsDisplay()/e._iDisplayLength),n=Math.ceil(e._iDisplayStart/e._iDisplayLength)+1,t="",r,B=e.oClasses,u,M=e.aanFeatures.p,L=function(h){e.oApi._fnBindAction(this,{page:h+r-1},function(h){e.oApi._fnPageChange(e,h.data.page);o(e);h.preventDefault()})};-1===e._iDisplayLength?n=k=r=1:l=l-k?(r=l-m+1,k=l):(r=n-Math.ceil(m/2)+1,k=r+m-1);for(m=r;m<=k;m++)t+= -n!==m?''+e.fnFormatNumber(m)+"":''+e.fnFormatNumber(m)+"";m=0;for(k=M.length;mh?1:0},"string-desc":function(e,h){return eh?-1:0},"html-pre":function(e){return e.replace(/<.*?>/g,"").toLowerCase()},"html-asc":function(e,h){return eh?1:0},"html-desc":function(e,h){return e< -h?1:e>h?-1:0},"date-pre":function(e){e=Date.parse(e);if(isNaN(e)||""===e)e=Date.parse("01/01/1970 00:00:00");return e},"date-asc":function(e,h){return e-h},"date-desc":function(e,h){return h-e},"numeric-pre":function(e){return"-"==e||""===e?0:1*e},"numeric-asc":function(e,h){return e-h},"numeric-desc":function(e,h){return h-e}});h.extend(j.ext.aTypes,[function(e){if("number"===typeof e)return"numeric";if("string"!==typeof e)return null;var h,j=!1;h=e.charAt(0);if(-1=="0123456789-".indexOf(h))return null; -for(var k=1;k")?"html":null}]);h.fn.DataTable=j;h.fn.dataTable=j;h.fn.dataTableSettings=j.settings;h.fn.dataTableExt=j.ext};"function"===typeof define&&define.amd?define(["jquery"],L):jQuery&&!jQuery.fn.dataTable&& -L(jQuery)})(window,document); diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/fakeLoader/fakeLoader.css b/uiframe-iui/src/main/resources/webroot/component/thirdparty/fakeLoader/fakeLoader.css deleted file mode 100644 index def18f25..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/fakeLoader/fakeLoader.css +++ /dev/null @@ -1,382 +0,0 @@ -/********************** - *CSS Animations by: - *http://codepen.io/vivinantony -***********************/ -.spinner1 { - width: 40px; - height: 40px; - position: relative; -} - - -.double-bounce1, .double-bounce2 { - width: 100%; - height: 100%; - border-radius: 50%; - background-color: #fff; - opacity: 0.6; - position: absolute; - top: 0; - left: 0; - - -webkit-animation: bounce 2.0s infinite ease-in-out; - animation: bounce 2.0s infinite ease-in-out; -} - -.double-bounce2 { - -webkit-animation-delay: -1.0s; - animation-delay: -1.0s; -} - -@-webkit-keyframes bounce { - 0%, 100% { -webkit-transform: scale(0.0) } - 50% { -webkit-transform: scale(1.0) } -} - -@keyframes bounce { - 0%, 100% { - transform: scale(0.0); - -webkit-transform: scale(0.0); - } 50% { - transform: scale(1.0); - -webkit-transform: scale(1.0); - } -} - -.spinner2 { - width: 40px; - height: 40px; - position: relative; -} - - -.container1 > div, .container2 > div, .container3 > div { - width: 6px; - height: 6px; - background-color: #fff; - - border-radius: 100%; - position: absolute; - -webkit-animation: bouncedelay 1.2s infinite ease-in-out; - animation: bouncedelay 1.2s infinite ease-in-out; - /* Prevent first frame from flickering when animation starts */ - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} - -.spinner2 .spinner-container { - position: absolute; - width: 100%; - height: 100%; -} - -.container2 { - -webkit-transform: rotateZ(45deg); - transform: rotateZ(45deg); -} - -.container3 { - -webkit-transform: rotateZ(90deg); - transform: rotateZ(90deg); -} - -.circle1 { top: 0; left: 0; } -.circle2 { top: 0; right: 0; } -.circle3 { right: 0; bottom: 0; } -.circle4 { left: 0; bottom: 0; } - -.container2 .circle1 { - -webkit-animation-delay: -1.1s; - animation-delay: -1.1s; -} - -.container3 .circle1 { - -webkit-animation-delay: -1.0s; - animation-delay: -1.0s; -} - -.container1 .circle2 { - -webkit-animation-delay: -0.9s; - animation-delay: -0.9s; -} - -.container2 .circle2 { - -webkit-animation-delay: -0.8s; - animation-delay: -0.8s; -} - -.container3 .circle2 { - -webkit-animation-delay: -0.7s; - animation-delay: -0.7s; -} - -.container1 .circle3 { - -webkit-animation-delay: -0.6s; - animation-delay: -0.6s; -} - -.container2 .circle3 { - -webkit-animation-delay: -0.5s; - animation-delay: -0.5s; -} - -.container3 .circle3 { - -webkit-animation-delay: -0.4s; - animation-delay: -0.4s; -} - -.container1 .circle4 { - -webkit-animation-delay: -0.3s; - animation-delay: -0.3s; -} - -.container2 .circle4 { - -webkit-animation-delay: -0.2s; - animation-delay: -0.2s; -} - -.container3 .circle4 { - -webkit-animation-delay: -0.1s; - animation-delay: -0.1s; -} - -@-webkit-keyframes bouncedelay { - 0%, 80%, 100% { -webkit-transform: scale(0.0) } - 40% { -webkit-transform: scale(1.0) } -} - -@keyframes bouncedelay { - 0%, 80%, 100% { - transform: scale(0.0); - -webkit-transform: scale(0.0); - } 40% { - transform: scale(1.0); - -webkit-transform: scale(1.0); - } -} - -.spinner3 { - width: 40px; - height: 40px; - position: relative; - -webkit-animation: rotate 2.0s infinite linear; - animation: rotate 2.0s infinite linear; -} - -.dot1, .dot2 { - width: 60%; - height: 60%; - display: inline-block; - position: absolute; - top: 0; - background-color: #fff; - border-radius: 100%; - - -webkit-animation: bounce 2.0s infinite ease-in-out; - animation: bounce 2.0s infinite ease-in-out; -} - -.dot2 { - top: auto; - bottom: 0px; - -webkit-animation-delay: -1.0s; - animation-delay: -1.0s; -} - -@-webkit-keyframes rotate { 100% { -webkit-transform: rotate(360deg) }} -@keyframes rotate { 100% { transform: rotate(360deg); -webkit-transform: rotate(360deg) }} - -@-webkit-keyframes bounce { - 0%, 100% { -webkit-transform: scale(0.0) } - 50% { -webkit-transform: scale(1.0) } -} - -@keyframes bounce { - 0%, 100% { - transform: scale(0.0); - -webkit-transform: scale(0.0); - } 50% { - transform: scale(1.0); - -webkit-transform: scale(1.0); - } -} - -.spinner4 { - width: 30px; - height: 30px; - background-color: #fff; - -webkit-animation: rotateplane 1.2s infinite ease-in-out; - animation: rotateplane 1.2s infinite ease-in-out; -} - -@-webkit-keyframes rotateplane { - 0% { -webkit-transform: perspective(120px) } - 50% { -webkit-transform: perspective(120px) rotateY(180deg) } - 100% { -webkit-transform: perspective(120px) rotateY(180deg) rotateX(180deg) } -} - -@keyframes rotateplane { - 0% { - transform: perspective(120px) rotateX(0deg) rotateY(0deg); - -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg) - } 50% { - transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); - -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg) - } 100% { - transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); - -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); - } -} - -.spinner5 { - width: 32px; - height: 32px; - position: relative; -} - -.cube1, .cube2 { - background-color: #fff; - width: 10px; - height: 10px; - position: absolute; - top: 0; - left: 0; - - -webkit-animation: cubemove 1.8s infinite ease-in-out; - animation: cubemove 1.8s infinite ease-in-out; -} - -.cube2 { - -webkit-animation-delay: -0.9s; - animation-delay: -0.9s; -} - -@-webkit-keyframes cubemove { - 25% { -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5) } - 50% { -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg) } - 75% { -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5) } - 100% { -webkit-transform: rotate(-360deg) } -} - -@keyframes cubemove { - 25% { - transform: translateX(42px) rotate(-90deg) scale(0.5); - -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5); - } 50% { - transform: translateX(42px) translateY(42px) rotate(-179deg); - -webkit-transform: translateX(42px) translateY(42px) rotate(-179deg); - } 50.1% { - transform: translateX(42px) translateY(42px) rotate(-180deg); - -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg); - } 75% { - transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); - -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); - } 100% { - transform: rotate(-360deg); - -webkit-transform: rotate(-360deg); - } -} - -.spinner6 { - width: 50px; - height: 30px; - text-align: center; -} - -.spinner6 > div { - background-color: #fff; - height: 100%; - width: 6px; - margin-left:2px; - display: inline-block; - - -webkit-animation: stretchdelay 1.2s infinite ease-in-out; - animation: stretchdelay 1.2s infinite ease-in-out; -} - -.spinner6 .rect2 { - -webkit-animation-delay: -1.1s; - animation-delay: -1.1s; -} - -.spinner6 .rect3 { - -webkit-animation-delay: -1.0s; - animation-delay: -1.0s; -} - -.spinner6 .rect4 { - -webkit-animation-delay: -0.9s; - animation-delay: -0.9s; -} - -.spinner6 .rect5 { - -webkit-animation-delay: -0.8s; - animation-delay: -0.8s; -} - -@-webkit-keyframes stretchdelay { - 0%, 40%, 100% { -webkit-transform: scaleY(0.4) } - 20% { -webkit-transform: scaleY(1.0) } -} - -@keyframes stretchdelay { - 0%, 40%, 100% { - transform: scaleY(0.4); - -webkit-transform: scaleY(0.4); - } 20% { - transform: scaleY(1.0); - -webkit-transform: scaleY(1.0); - } -} - .spinner7 { - width: 90px; - height: 30px; - text-align: center; - } - - .spinner7 > div { - background-color: #fff; - height: 15px; - width: 15px; - margin-left:3px; - border-radius: 50%; - display: inline-block; - - -webkit-animation: stretchdelay 0.7s infinite ease-in-out; - animation: stretchdelay 0.7s infinite ease-in-out; - } - - .spinner7 .circ2 { - -webkit-animation-delay: -0.6s; - animation-delay: -0.6s; - } - - .spinner7 .circ3 { - -webkit-animation-delay: -0.5s; - animation-delay: -0.5s; - } - - .spinner7 .circ4 { - -webkit-animation-delay: -0.4s; - animation-delay: -0.4s; - } - - .spinner7 .circ5 { - -webkit-animation-delay: -0.3s; - animation-delay: -0.3s; - } - - @-webkit-keyframes stretchdelay { - 0%, 40%, 100% { -webkit-transform: translateY(-10px) } - 20% { -webkit-transform: translateY(-20px) } - } - - @keyframes stretchdelay { - 0%, 40%, 100% { - transform: translateY(-10px); - -webkit-transform: translateY(-10px); - } 20% { - transform: translateY(-20px); - -webkit-transform: translateY(-20px); - } - } \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/fakeLoader/fakeLoader.min.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/fakeLoader/fakeLoader.min.js deleted file mode 100644 index 243dc0b2..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/fakeLoader/fakeLoader.min.js +++ /dev/null @@ -1,174 +0,0 @@ -/*-------------------------------------------------------------------- - *JAVASCRIPT "FakeLoader.js" - *Version: 1.1.0 - 2014 - *author: João Pereira - *website: http://www.joaopereira.pt - *Licensed MIT ------------------------------------------------------------------------*/ -(function ($) { - - $.fn.fakeLoader = function(options) { - //Defaults - $.fn.settings = $.extend({ - timeToHide:0, // Default Time to hide fakeLoader - pos:'fixed',// Default Position - top:'0px', // Default Top value - left:'0px', // Default Left value - width:'100%', // Default width - height:'100%', // Default Height - zIndex: '999', // Default zIndex - bgColor: '#2ecc71', // Default background color - opacity:'0.6',//默认透明度 - text:'',//默认加载中文字 - spinner:'spinner1', // Default Spinner - imagePath:'' // Default Path custom image - }, options); - var timer=null; - $.fn.Setopacity=function(opacity){ - $(".loadingbackground").fadeTo("slow",opacity); - }; - $.fn.SetTimeToHide=function(timetohide){ - var el = $(this); - el.settings.timeToHide=timetohide; - if(!!timer)clearTimeout(timer); - el.css({ - 'display':"block" - });//fadeTo("fast",el.settings.opacity); - $(".loadingbackground").fadeTo(1,el.settings.opacity); - setTimeout(function(){ - el.fadeOut();//fadeTo("slow",0); - }, el.settings.timeToHide); - }; - $.fn.setToHide=function(){ - var el = $(this); - if(!!timer)clearTimeout(timer); - el.fadeOut();//fadeTo("slow",0); - }; - //The target - var el = $(this); - - //Customized Spinners - var spinner01 = '

    '+el.settings.text+'
    '; - var spinner02 = '

    '+el.settings.text+'
    '; - var spinner03 = '

    '+el.settings.text+'
    '; - var spinner04 = '

    '+el.settings.text+'
    '; - var spinner05 = '

    '+el.settings.text+'
    '; - var spinner06 = '

    '+el.settings.text+'
    '; - var spinner07 = '

    '+el.settings.text+'
    '; - - //Init styles - var initStyles = { - 'position':el.settings.pos, - 'width':el.settings.width, - 'height':el.settings.height, - 'top':el.settings.top, - 'left':el.settings.left - }; - - //Apply styles - el.css(initStyles); - //Each - el.each(function() { - var a = el.settings.spinner; - //console.log(a) - switch (a) { - case 'spinner1': - el.html(spinner01); - break; - case 'spinner2': - el.html(spinner02); - break; - case 'spinner3': - el.html(spinner03); - break; - case 'spinner4': - el.html(spinner04); - break; - case 'spinner5': - el.html(spinner05); - break; - case 'spinner6': - el.html(spinner06); - break; - case 'spinner7': - el.html(spinner07); - break; - default: - el.html(spinner01); - } - - //Add customized loader image - - if (el.settings.imagePath !='') { - el.html('
    '+el.settings.text+'
    '); - } - centerLoader(); - }); - - //Time to hide fakeLoader - if(el.settings.timeToHide>0){ - timer=setTimeout(function(){ - el.fadeOut();//fadeTo("slow",0); - }, el.settings.timeToHide); - } - //Return Styles - this.css({ - //'backgroundColor':el.settings.bgColor, - 'display':"block", - 'zIndex':el.settings.zIndex - }); - - $(".loadingbackground").css(initStyles).css({ - 'backgroundColor':el.settings.bgColor, - 'opacity':el.settings.opacity, - 'zIndex':el.settings.zIndex+1 - }); - $(".loadingTip").css(initStyles).css({ - //'backgroundColor':el.settings.bgColor, - 'zIndex':el.settings.zIndex+2 - }); - return this; - }; // End Fake Loader - - - //Center Spinner - function centerLoader() { - - var winW = $(window).width(); - var winH = $(window).height(); - - var spinnerW = $('.fl').outerWidth(); - var spinnerH = $('.fl').outerHeight(); - var fW = $('.f2').outerWidth(); - var left=(winW/2)-(spinnerW/2); - var left2=(winW/2)-(fW/2); - left=left>0?left:winW/2-20; - left2=left2==0||fW==0?left:left2; - //left2=left2>0?left2:winW/2-40; - left2=left2-20; - console.log("loding gif:"+left+" text:"+left2); - $('.fl').css({ - 'position':'absolute', - 'left':left, - 'top':(winH/2)-(spinnerH/2) - }); - $('.f2').css({ - 'position':'absolute', - 'left':left2, - 'top':(winH/2)+(spinnerH/2) - }); - } - - $(window).load(function(){ - centerLoader(); - $(window).resize(function(){ - centerLoader(); - }); - }); - - -}(jQuery)); - - - - diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/css/font-awesome.css b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/css/font-awesome.css deleted file mode 100644 index 8bde0e26..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/css/font-awesome.css +++ /dev/null @@ -1,1672 +0,0 @@ -/*! - * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ -/* FONT PATH - * -------------------------- */ -@font-face { - font-family: 'FontAwesome'; - src: url('../fonts/fontawesome-webfont.eot?v=4.2.0'); - src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg'); - font-weight: normal; - font-style: normal; -} -.fa { - display: inline-block; - font: normal normal normal 14px/1 FontAwesome; - font-size: inherit; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -/* makes the font 33% larger relative to the icon container */ -.fa-lg { - font-size: 1.33333333em; - line-height: 0.75em; - vertical-align: -15%; -} -.fa-2x { - font-size: 2em; -} -.fa-3x { - font-size: 3em; -} -.fa-4x { - font-size: 4em; -} -.fa-5x { - font-size: 5em; -} -.fa-fw { - width: 1.28571429em; - text-align: center; -} -.fa-ul { - padding-left: 0; - margin-left: 2.14285714em; - list-style-type: none; -} -.fa-ul > li { - position: relative; -} -.fa-li { - position: absolute; - left: -2.14285714em; - width: 2.14285714em; - top: 0.14285714em; - text-align: center; -} -.fa-li.fa-lg { - left: -1.85714286em; -} -.fa-border { - padding: .2em .25em .15em; - border: solid 0.08em #eeeeee; - border-radius: .1em; -} -.pull-right { - float: right; -} -.pull-left { - float: left; -} -.fa.pull-left { - margin-right: .3em; -} -.fa.pull-right { - margin-left: .3em; -} -.fa-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -.fa-rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} -.fa-rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); -} -.fa-rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - -webkit-transform: rotate(270deg); - -ms-transform: rotate(270deg); - transform: rotate(270deg); -} -.fa-flip-horizontal { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); - -webkit-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - transform: scale(-1, 1); -} -.fa-flip-vertical { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); - -webkit-transform: scale(1, -1); - -ms-transform: scale(1, -1); - transform: scale(1, -1); -} -:root .fa-rotate-90, -:root .fa-rotate-180, -:root .fa-rotate-270, -:root .fa-flip-horizontal, -:root .fa-flip-vertical { - filter: none; -} -.fa-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.fa-stack-1x, -.fa-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.fa-stack-1x { - line-height: inherit; -} -.fa-stack-2x { - font-size: 2em; -} -.fa-inverse { - color: #ffffff; -} -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ -.fa-glass:before { - content: "\f000"; -} -.fa-music:before { - content: "\f001"; -} -.fa-search:before { - content: "\f002"; -} -.fa-envelope-o:before { - content: "\f003"; -} -.fa-heart:before { - content: "\f004"; -} -.fa-star:before { - content: "\f005"; -} -.fa-star-o:before { - content: "\f006"; -} -.fa-user:before { - content: "\f007"; -} -.fa-film:before { - content: "\f008"; -} -.fa-th-large:before { - content: "\f009"; -} -.fa-th:before { - content: "\f00a"; -} -.fa-th-list:before { - content: "\f00b"; -} -.fa-check:before { - content: "\f00c"; -} -.fa-remove:before, -.fa-close:before, -.fa-times:before { - content: "\f00d"; -} -.fa-search-plus:before { - content: "\f00e"; -} -.fa-search-minus:before { - content: "\f010"; -} -.fa-power-off:before { - content: "\f011"; -} -.fa-signal:before { - content: "\f012"; -} -.fa-gear:before, -.fa-cog:before { - content: "\f013"; -} -.fa-trash-o:before { - content: "\f014"; -} -.fa-home:before { - content: "\f015"; -} -.fa-file-o:before { - content: "\f016"; -} -.fa-clock-o:before { - content: "\f017"; -} -.fa-road:before { - content: "\f018"; -} -.fa-download:before { - content: "\f019"; -} -.fa-arrow-circle-o-down:before { - content: "\f01a"; -} -.fa-arrow-circle-o-up:before { - content: "\f01b"; -} -.fa-inbox:before { - content: "\f01c"; -} -.fa-play-circle-o:before { - content: "\f01d"; -} -.fa-rotate-right:before, -.fa-repeat:before { - content: "\f01e"; -} -.fa-refresh:before { - content: "\f021"; -} -.fa-list-alt:before { - content: "\f022"; -} -.fa-lock:before { - content: "\f023"; -} -.fa-flag:before { - content: "\f024"; -} -.fa-headphones:before { - content: "\f025"; -} -.fa-volume-off:before { - content: "\f026"; -} -.fa-volume-down:before { - content: "\f027"; -} -.fa-volume-up:before { - content: "\f028"; -} -.fa-qrcode:before { - content: "\f029"; -} -.fa-barcode:before { - content: "\f02a"; -} -.fa-tag:before { - content: "\f02b"; -} -.fa-tags:before { - content: "\f02c"; -} -.fa-book:before { - content: "\f02d"; -} -.fa-bookmark:before { - content: "\f02e"; -} -.fa-print:before { - content: "\f02f"; -} -.fa-camera:before { - content: "\f030"; -} -.fa-font:before { - content: "\f031"; -} -.fa-bold:before { - content: "\f032"; -} -.fa-italic:before { - content: "\f033"; -} -.fa-text-height:before { - content: "\f034"; -} -.fa-text-width:before { - content: "\f035"; -} -.fa-align-left:before { - content: "\f036"; -} -.fa-align-center:before { - content: "\f037"; -} -.fa-align-right:before { - content: "\f038"; -} -.fa-align-justify:before { - content: "\f039"; -} -.fa-list:before { - content: "\f03a"; -} -.fa-dedent:before, -.fa-outdent:before { - content: "\f03b"; -} -.fa-indent:before { - content: "\f03c"; -} -.fa-video-camera:before { - content: "\f03d"; -} -.fa-photo:before, -.fa-image:before, -.fa-picture-o:before { - content: "\f03e"; -} -.fa-pencil:before { - content: "\f040"; -} -.fa-map-marker:before { - content: "\f041"; -} -.fa-adjust:before { - content: "\f042"; -} -.fa-tint:before { - content: "\f043"; -} -.fa-edit:before, -.fa-pencil-square-o:before { - content: "\f044"; -} -.fa-share-square-o:before { - content: "\f045"; -} -.fa-check-square-o:before { - content: "\f046"; -} -.fa-arrows:before { - content: "\f047"; -} -.fa-step-backward:before { - content: "\f048"; -} -.fa-fast-backward:before { - content: "\f049"; -} -.fa-backward:before { - content: "\f04a"; -} -.fa-play:before { - content: "\f04b"; -} -.fa-pause:before { - content: "\f04c"; -} -.fa-stop:before { - content: "\f04d"; -} -.fa-forward:before { - content: "\f04e"; -} -.fa-fast-forward:before { - content: "\f050"; -} -.fa-step-forward:before { - content: "\f051"; -} -.fa-eject:before { - content: "\f052"; -} -.fa-chevron-left:before { - content: "\f053"; -} -.fa-chevron-right:before { - content: "\f054"; -} -.fa-plus-circle:before { - content: "\f055"; -} -.fa-minus-circle:before { - content: "\f056"; -} -.fa-times-circle:before { - content: "\f057"; -} -.fa-check-circle:before { - content: "\f058"; -} -.fa-question-circle:before { - content: "\f059"; -} -.fa-info-circle:before { - content: "\f05a"; -} -.fa-crosshairs:before { - content: "\f05b"; -} -.fa-times-circle-o:before { - content: "\f05c"; -} -.fa-check-circle-o:before { - content: "\f05d"; -} -.fa-ban:before { - content: "\f05e"; -} -.fa-arrow-left:before { - content: "\f060"; -} -.fa-arrow-right:before { - content: "\f061"; -} -.fa-arrow-up:before { - content: "\f062"; -} -.fa-arrow-down:before { - content: "\f063"; -} -.fa-mail-forward:before, -.fa-share:before { - content: "\f064"; -} -.fa-expand:before { - content: "\f065"; -} -.fa-compress:before { - content: "\f066"; -} -.fa-plus:before { - content: "\f067"; -} -.fa-minus:before { - content: "\f068"; -} -.fa-asterisk:before { - content: "\f069"; -} -.fa-exclamation-circle:before { - content: "\f06a"; -} -.fa-gift:before { - content: "\f06b"; -} -.fa-leaf:before { - content: "\f06c"; -} -.fa-fire:before { - content: "\f06d"; -} -.fa-eye:before { - content: "\f06e"; -} -.fa-eye-slash:before { - content: "\f070"; -} -.fa-warning:before, -.fa-exclamation-triangle:before { - content: "\f071"; -} -.fa-plane:before { - content: "\f072"; -} -.fa-calendar:before { - content: "\f073"; -} -.fa-random:before { - content: "\f074"; -} -.fa-comment:before { - content: "\f075"; -} -.fa-magnet:before { - content: "\f076"; -} -.fa-chevron-up:before { - content: "\f077"; -} -.fa-chevron-down:before { - content: "\f078"; -} -.fa-retweet:before { - content: "\f079"; -} -.fa-shopping-cart:before { - content: "\f07a"; -} -.fa-folder:before { - content: "\f07b"; -} -.fa-folder-open:before { - content: "\f07c"; -} -.fa-arrows-v:before { - content: "\f07d"; -} -.fa-arrows-h:before { - content: "\f07e"; -} -.fa-bar-chart-o:before, -.fa-bar-chart:before { - content: "\f080"; -} -.fa-twitter-square:before { - content: "\f081"; -} -.fa-facebook-square:before { - content: "\f082"; -} -.fa-camera-retro:before { - content: "\f083"; -} -.fa-key:before { - content: "\f084"; -} -.fa-gears:before, -.fa-cogs:before { - content: "\f085"; -} -.fa-comments:before { - content: "\f086"; -} -.fa-thumbs-o-up:before { - content: "\f087"; -} -.fa-thumbs-o-down:before { - content: "\f088"; -} -.fa-star-half:before { - content: "\f089"; -} -.fa-heart-o:before { - content: "\f08a"; -} -.fa-sign-out:before { - content: "\f08b"; -} -.fa-linkedin-square:before { - content: "\f08c"; -} -.fa-thumb-tack:before { - content: "\f08d"; -} -.fa-external-link:before { - content: "\f08e"; -} -.fa-sign-in:before { - content: "\f090"; -} -.fa-trophy:before { - content: "\f091"; -} -.fa-github-square:before { - content: "\f092"; -} -.fa-upload:before { - content: "\f093"; -} -.fa-lemon-o:before { - content: "\f094"; -} -.fa-phone:before { - content: "\f095"; -} -.fa-square-o:before { - content: "\f096"; -} -.fa-bookmark-o:before { - content: "\f097"; -} -.fa-phone-square:before { - content: "\f098"; -} -.fa-twitter:before { - content: "\f099"; -} -.fa-facebook:before { - content: "\f09a"; -} -.fa-github:before { - content: "\f09b"; -} -.fa-unlock:before { - content: "\f09c"; -} -.fa-credit-card:before { - content: "\f09d"; -} -.fa-rss:before { - content: "\f09e"; -} -.fa-hdd-o:before { - content: "\f0a0"; -} -.fa-bullhorn:before { - content: "\f0a1"; -} -.fa-bell:before { - content: "\f0f3"; -} -.fa-certificate:before { - content: "\f0a3"; -} -.fa-hand-o-right:before { - content: "\f0a4"; -} -.fa-hand-o-left:before { - content: "\f0a5"; -} -.fa-hand-o-up:before { - content: "\f0a6"; -} -.fa-hand-o-down:before { - content: "\f0a7"; -} -.fa-arrow-circle-left:before { - content: "\f0a8"; -} -.fa-arrow-circle-right:before { - content: "\f0a9"; -} -.fa-arrow-circle-up:before { - content: "\f0aa"; -} -.fa-arrow-circle-down:before { - content: "\f0ab"; -} -.fa-globe:before { - content: "\f0ac"; -} -.fa-wrench:before { - content: "\f0ad"; -} -.fa-tasks:before { - content: "\f0ae"; -} -.fa-filter:before { - content: "\f0b0"; -} -.fa-briefcase:before { - content: "\f0b1"; -} -.fa-arrows-alt:before { - content: "\f0b2"; -} -.fa-group:before, -.fa-users:before { - content: "\f0c0"; -} -.fa-chain:before, -.fa-link:before { - content: "\f0c1"; -} -.fa-cloud:before { - content: "\f0c2"; -} -.fa-flask:before { - content: "\f0c3"; -} -.fa-cut:before, -.fa-scissors:before { - content: "\f0c4"; -} -.fa-copy:before, -.fa-files-o:before { - content: "\f0c5"; -} -.fa-paperclip:before { - content: "\f0c6"; -} -.fa-save:before, -.fa-floppy-o:before { - content: "\f0c7"; -} -.fa-square:before { - content: "\f0c8"; -} -.fa-navicon:before, -.fa-reorder:before, -.fa-bars:before { - content: "\f0c9"; -} -.fa-list-ul:before { - content: "\f0ca"; -} -.fa-list-ol:before { - content: "\f0cb"; -} -.fa-strikethrough:before { - content: "\f0cc"; -} -.fa-underline:before { - content: "\f0cd"; -} -.fa-table:before { - content: "\f0ce"; -} -.fa-magic:before { - content: "\f0d0"; -} -.fa-truck:before { - content: "\f0d1"; -} -.fa-pinterest:before { - content: "\f0d2"; -} -.fa-pinterest-square:before { - content: "\f0d3"; -} -.fa-google-plus-square:before { - content: "\f0d4"; -} -.fa-google-plus:before { - content: "\f0d5"; -} -.fa-money:before { - content: "\f0d6"; -} -.fa-caret-down:before { - content: "\f0d7"; -} -.fa-caret-up:before { - content: "\f0d8"; -} -.fa-caret-left:before { - content: "\f0d9"; -} -.fa-caret-right:before { - content: "\f0da"; -} -.fa-columns:before { - content: "\f0db"; -} -.fa-unsorted:before, -.fa-sort:before { - content: "\f0dc"; -} -.fa-sort-down:before, -.fa-sort-desc:before { - content: "\f0dd"; -} -.fa-sort-up:before, -.fa-sort-asc:before { - content: "\f0de"; -} -.fa-envelope:before { - content: "\f0e0"; -} -.fa-linkedin:before { - content: "\f0e1"; -} -.fa-rotate-left:before, -.fa-undo:before { - content: "\f0e2"; -} -.fa-legal:before, -.fa-gavel:before { - content: "\f0e3"; -} -.fa-dashboard:before, -.fa-tachometer:before { - content: "\f0e4"; -} -.fa-comment-o:before { - content: "\f0e5"; -} -.fa-comments-o:before { - content: "\f0e6"; -} -.fa-flash:before, -.fa-bolt:before { - content: "\f0e7"; -} -.fa-sitemap:before { - content: "\f0e8"; -} -.fa-umbrella:before { - content: "\f0e9"; -} -.fa-paste:before, -.fa-clipboard:before { - content: "\f0ea"; -} -.fa-lightbulb-o:before { - content: "\f0eb"; -} -.fa-exchange:before { - content: "\f0ec"; -} -.fa-cloud-download:before { - content: "\f0ed"; -} -.fa-cloud-upload:before { - content: "\f0ee"; -} -.fa-user-md:before { - content: "\f0f0"; -} -.fa-stethoscope:before { - content: "\f0f1"; -} -.fa-suitcase:before { - content: "\f0f2"; -} -.fa-bell-o:before { - content: "\f0a2"; -} -.fa-coffee:before { - content: "\f0f4"; -} -.fa-cutlery:before { - content: "\f0f5"; -} -.fa-file-text-o:before { - content: "\f0f6"; -} -.fa-building-o:before { - content: "\f0f7"; -} -.fa-hospital-o:before { - content: "\f0f8"; -} -.fa-ambulance:before { - content: "\f0f9"; -} -.fa-medkit:before { - content: "\f0fa"; -} -.fa-fighter-jet:before { - content: "\f0fb"; -} -.fa-beer:before { - content: "\f0fc"; -} -.fa-h-square:before { - content: "\f0fd"; -} -.fa-plus-square:before { - content: "\f0fe"; -} -.fa-angle-double-left:before { - content: "\f100"; -} -.fa-angle-double-right:before { - content: "\f101"; -} -.fa-angle-double-up:before { - content: "\f102"; -} -.fa-angle-double-down:before { - content: "\f103"; -} -.fa-angle-left:before { - content: "\f104"; -} -.fa-angle-right:before { - content: "\f105"; -} -.fa-angle-up:before { - content: "\f106"; -} -.fa-angle-down:before { - content: "\f107"; -} -.fa-desktop:before { - content: "\f108"; -} -.fa-laptop:before { - content: "\f109"; -} -.fa-tablet:before { - content: "\f10a"; -} -.fa-mobile-phone:before, -.fa-mobile:before { - content: "\f10b"; -} -.fa-circle-o:before { - content: "\f10c"; -} -.fa-quote-left:before { - content: "\f10d"; -} -.fa-quote-right:before { - content: "\f10e"; -} -.fa-spinner:before { - content: "\f110"; -} -.fa-circle:before { - content: "\f111"; -} -.fa-mail-reply:before, -.fa-reply:before { - content: "\f112"; -} -.fa-github-alt:before { - content: "\f113"; -} -.fa-folder-o:before { - content: "\f114"; -} -.fa-folder-open-o:before { - content: "\f115"; -} -.fa-smile-o:before { - content: "\f118"; -} -.fa-frown-o:before { - content: "\f119"; -} -.fa-meh-o:before { - content: "\f11a"; -} -.fa-gamepad:before { - content: "\f11b"; -} -.fa-keyboard-o:before { - content: "\f11c"; -} -.fa-flag-o:before { - content: "\f11d"; -} -.fa-flag-checkered:before { - content: "\f11e"; -} -.fa-terminal:before { - content: "\f120"; -} -.fa-code:before { - content: "\f121"; -} -.fa-mail-reply-all:before, -.fa-reply-all:before { - content: "\f122"; -} -.fa-star-half-empty:before, -.fa-star-half-full:before, -.fa-star-half-o:before { - content: "\f123"; -} -.fa-location-arrow:before { - content: "\f124"; -} -.fa-crop:before { - content: "\f125"; -} -.fa-code-fork:before { - content: "\f126"; -} -.fa-unlink:before, -.fa-chain-broken:before { - content: "\f127"; -} -.fa-question:before { - content: "\f128"; -} -.fa-info:before { - content: "\f129"; -} -.fa-exclamation:before { - content: "\f12a"; -} -.fa-superscript:before { - content: "\f12b"; -} -.fa-subscript:before { - content: "\f12c"; -} -.fa-eraser:before { - content: "\f12d"; -} -.fa-puzzle-piece:before { - content: "\f12e"; -} -.fa-microphone:before { - content: "\f130"; -} -.fa-microphone-slash:before { - content: "\f131"; -} -.fa-shield:before { - content: "\f132"; -} -.fa-calendar-o:before { - content: "\f133"; -} -.fa-fire-extinguisher:before { - content: "\f134"; -} -.fa-rocket:before { - content: "\f135"; -} -.fa-maxcdn:before { - content: "\f136"; -} -.fa-chevron-circle-left:before { - content: "\f137"; -} -.fa-chevron-circle-right:before { - content: "\f138"; -} -.fa-chevron-circle-up:before { - content: "\f139"; -} -.fa-chevron-circle-down:before { - content: "\f13a"; -} -.fa-html5:before { - content: "\f13b"; -} -.fa-css3:before { - content: "\f13c"; -} -.fa-anchor:before { - content: "\f13d"; -} -.fa-unlock-alt:before { - content: "\f13e"; -} -.fa-bullseye:before { - content: "\f140"; -} -.fa-ellipsis-h:before { - content: "\f141"; -} -.fa-ellipsis-v:before { - content: "\f142"; -} -.fa-rss-square:before { - content: "\f143"; -} -.fa-play-circle:before { - content: "\f144"; -} -.fa-ticket:before { - content: "\f145"; -} -.fa-minus-square:before { - content: "\f146"; -} -.fa-minus-square-o:before { - content: "\f147"; -} -.fa-level-up:before { - content: "\f148"; -} -.fa-level-down:before { - content: "\f149"; -} -.fa-check-square:before { - content: "\f14a"; -} -.fa-pencil-square:before { - content: "\f14b"; -} -.fa-external-link-square:before { - content: "\f14c"; -} -.fa-share-square:before { - content: "\f14d"; -} -.fa-compass:before { - content: "\f14e"; -} -.fa-toggle-down:before, -.fa-caret-square-o-down:before { - content: "\f150"; -} -.fa-toggle-up:before, -.fa-caret-square-o-up:before { - content: "\f151"; -} -.fa-toggle-right:before, -.fa-caret-square-o-right:before { - content: "\f152"; -} -.fa-euro:before, -.fa-eur:before { - content: "\f153"; -} -.fa-gbp:before { - content: "\f154"; -} -.fa-dollar:before, -.fa-usd:before { - content: "\f155"; -} -.fa-rupee:before, -.fa-inr:before { - content: "\f156"; -} -.fa-cny:before, -.fa-rmb:before, -.fa-yen:before, -.fa-jpy:before { - content: "\f157"; -} -.fa-ruble:before, -.fa-rouble:before, -.fa-rub:before { - content: "\f158"; -} -.fa-won:before, -.fa-krw:before { - content: "\f159"; -} -.fa-bitcoin:before, -.fa-btc:before { - content: "\f15a"; -} -.fa-file:before { - content: "\f15b"; -} -.fa-file-text:before { - content: "\f15c"; -} -.fa-sort-alpha-asc:before { - content: "\f15d"; -} -.fa-sort-alpha-desc:before { - content: "\f15e"; -} -.fa-sort-amount-asc:before { - content: "\f160"; -} -.fa-sort-amount-desc:before { - content: "\f161"; -} -.fa-sort-numeric-asc:before { - content: "\f162"; -} -.fa-sort-numeric-desc:before { - content: "\f163"; -} -.fa-thumbs-up:before { - content: "\f164"; -} -.fa-thumbs-down:before { - content: "\f165"; -} -.fa-youtube-square:before { - content: "\f166"; -} -.fa-youtube:before { - content: "\f167"; -} -.fa-xing:before { - content: "\f168"; -} -.fa-xing-square:before { - content: "\f169"; -} -.fa-youtube-play:before { - content: "\f16a"; -} -.fa-dropbox:before { - content: "\f16b"; -} -.fa-stack-overflow:before { - content: "\f16c"; -} -.fa-instagram:before { - content: "\f16d"; -} -.fa-flickr:before { - content: "\f16e"; -} -.fa-adn:before { - content: "\f170"; -} -.fa-bitbucket:before { - content: "\f171"; -} -.fa-bitbucket-square:before { - content: "\f172"; -} -.fa-tumblr:before { - content: "\f173"; -} -.fa-tumblr-square:before { - content: "\f174"; -} -.fa-long-arrow-down:before { - content: "\f175"; -} -.fa-long-arrow-up:before { - content: "\f176"; -} -.fa-long-arrow-left:before { - content: "\f177"; -} -.fa-long-arrow-right:before { - content: "\f178"; -} -.fa-apple:before { - content: "\f179"; -} -.fa-windows:before { - content: "\f17a"; -} -.fa-android:before { - content: "\f17b"; -} -.fa-linux:before { - content: "\f17c"; -} -.fa-dribbble:before { - content: "\f17d"; -} -.fa-skype:before { - content: "\f17e"; -} -.fa-foursquare:before { - content: "\f180"; -} -.fa-trello:before { - content: "\f181"; -} -.fa-female:before { - content: "\f182"; -} -.fa-male:before { - content: "\f183"; -} -.fa-gittip:before { - content: "\f184"; -} -.fa-sun-o:before { - content: "\f185"; -} -.fa-moon-o:before { - content: "\f186"; -} -.fa-archive:before { - content: "\f187"; -} -.fa-bug:before { - content: "\f188"; -} -.fa-vk:before { - content: "\f189"; -} -.fa-weibo:before { - content: "\f18a"; -} -.fa-renren:before { - content: "\f18b"; -} -.fa-pagelines:before { - content: "\f18c"; -} -.fa-stack-exchange:before { - content: "\f18d"; -} -.fa-arrow-circle-o-right:before { - content: "\f18e"; -} -.fa-arrow-circle-o-left:before { - content: "\f190"; -} -.fa-toggle-left:before, -.fa-caret-square-o-left:before { - content: "\f191"; -} -.fa-dot-circle-o:before { - content: "\f192"; -} -.fa-wheelchair:before { - content: "\f193"; -} -.fa-vimeo-square:before { - content: "\f194"; -} -.fa-turkish-lira:before, -.fa-try:before { - content: "\f195"; -} -.fa-plus-square-o:before { - content: "\f196"; -} -.fa-space-shuttle:before { - content: "\f197"; -} -.fa-slack:before { - content: "\f198"; -} -.fa-envelope-square:before { - content: "\f199"; -} -.fa-wordpress:before { - content: "\f19a"; -} -.fa-openid:before { - content: "\f19b"; -} -.fa-institution:before, -.fa-bank:before, -.fa-university:before { - content: "\f19c"; -} -.fa-mortar-board:before, -.fa-graduation-cap:before { - content: "\f19d"; -} -.fa-yahoo:before { - content: "\f19e"; -} -.fa-google:before { - content: "\f1a0"; -} -.fa-reddit:before { - content: "\f1a1"; -} -.fa-reddit-square:before { - content: "\f1a2"; -} -.fa-stumbleupon-circle:before { - content: "\f1a3"; -} -.fa-stumbleupon:before { - content: "\f1a4"; -} -.fa-delicious:before { - content: "\f1a5"; -} -.fa-digg:before { - content: "\f1a6"; -} -.fa-pied-piper:before { - content: "\f1a7"; -} -.fa-pied-piper-alt:before { - content: "\f1a8"; -} -.fa-drupal:before { - content: "\f1a9"; -} -.fa-joomla:before { - content: "\f1aa"; -} -.fa-language:before { - content: "\f1ab"; -} -.fa-fax:before { - content: "\f1ac"; -} -.fa-building:before { - content: "\f1ad"; -} -.fa-child:before { - content: "\f1ae"; -} -.fa-paw:before { - content: "\f1b0"; -} -.fa-spoon:before { - content: "\f1b1"; -} -.fa-cube:before { - content: "\f1b2"; -} -.fa-cubes:before { - content: "\f1b3"; -} -.fa-behance:before { - content: "\f1b4"; -} -.fa-behance-square:before { - content: "\f1b5"; -} -.fa-steam:before { - content: "\f1b6"; -} -.fa-steam-square:before { - content: "\f1b7"; -} -.fa-recycle:before { - content: "\f1b8"; -} -.fa-automobile:before, -.fa-car:before { - content: "\f1b9"; -} -.fa-cab:before, -.fa-taxi:before { - content: "\f1ba"; -} -.fa-tree:before { - content: "\f1bb"; -} -.fa-spotify:before { - content: "\f1bc"; -} -.fa-deviantart:before { - content: "\f1bd"; -} -.fa-soundcloud:before { - content: "\f1be"; -} -.fa-database:before { - content: "\f1c0"; -} -.fa-file-pdf-o:before { - content: "\f1c1"; -} -.fa-file-word-o:before { - content: "\f1c2"; -} -.fa-file-excel-o:before { - content: "\f1c3"; -} -.fa-file-powerpoint-o:before { - content: "\f1c4"; -} -.fa-file-photo-o:before, -.fa-file-picture-o:before, -.fa-file-image-o:before { - content: "\f1c5"; -} -.fa-file-zip-o:before, -.fa-file-archive-o:before { - content: "\f1c6"; -} -.fa-file-sound-o:before, -.fa-file-audio-o:before { - content: "\f1c7"; -} -.fa-file-movie-o:before, -.fa-file-video-o:before { - content: "\f1c8"; -} -.fa-file-code-o:before { - content: "\f1c9"; -} -.fa-vine:before { - content: "\f1ca"; -} -.fa-codepen:before { - content: "\f1cb"; -} -.fa-jsfiddle:before { - content: "\f1cc"; -} -.fa-life-bouy:before, -.fa-life-buoy:before, -.fa-life-saver:before, -.fa-support:before, -.fa-life-ring:before { - content: "\f1cd"; -} -.fa-circle-o-notch:before { - content: "\f1ce"; -} -.fa-ra:before, -.fa-rebel:before { - content: "\f1d0"; -} -.fa-ge:before, -.fa-empire:before { - content: "\f1d1"; -} -.fa-git-square:before { - content: "\f1d2"; -} -.fa-git:before { - content: "\f1d3"; -} -.fa-hacker-news:before { - content: "\f1d4"; -} -.fa-tencent-weibo:before { - content: "\f1d5"; -} -.fa-qq:before { - content: "\f1d6"; -} -.fa-wechat:before, -.fa-weixin:before { - content: "\f1d7"; -} -.fa-send:before, -.fa-paper-plane:before { - content: "\f1d8"; -} -.fa-send-o:before, -.fa-paper-plane-o:before { - content: "\f1d9"; -} -.fa-history:before { - content: "\f1da"; -} -.fa-circle-thin:before { - content: "\f1db"; -} -.fa-header:before { - content: "\f1dc"; -} -.fa-paragraph:before { - content: "\f1dd"; -} -.fa-sliders:before { - content: "\f1de"; -} -.fa-share-alt:before { - content: "\f1e0"; -} -.fa-share-alt-square:before { - content: "\f1e1"; -} -.fa-bomb:before { - content: "\f1e2"; -} -.fa-soccer-ball-o:before, -.fa-futbol-o:before { - content: "\f1e3"; -} -.fa-tty:before { - content: "\f1e4"; -} -.fa-binoculars:before { - content: "\f1e5"; -} -.fa-plug:before { - content: "\f1e6"; -} -.fa-slideshare:before { - content: "\f1e7"; -} -.fa-twitch:before { - content: "\f1e8"; -} -.fa-yelp:before { - content: "\f1e9"; -} -.fa-newspaper-o:before { - content: "\f1ea"; -} -.fa-wifi:before { - content: "\f1eb"; -} -.fa-calculator:before { - content: "\f1ec"; -} -.fa-paypal:before { - content: "\f1ed"; -} -.fa-google-wallet:before { - content: "\f1ee"; -} -.fa-cc-visa:before { - content: "\f1f0"; -} -.fa-cc-mastercard:before { - content: "\f1f1"; -} -.fa-cc-discover:before { - content: "\f1f2"; -} -.fa-cc-amex:before { - content: "\f1f3"; -} -.fa-cc-paypal:before { - content: "\f1f4"; -} -.fa-cc-stripe:before { - content: "\f1f5"; -} -.fa-bell-slash:before { - content: "\f1f6"; -} -.fa-bell-slash-o:before { - content: "\f1f7"; -} -.fa-trash:before { - content: "\f1f8"; -} -.fa-copyright:before { - content: "\f1f9"; -} -.fa-at:before { - content: "\f1fa"; -} -.fa-eyedropper:before { - content: "\f1fb"; -} -.fa-paint-brush:before { - content: "\f1fc"; -} -.fa-birthday-cake:before { - content: "\f1fd"; -} -.fa-area-chart:before { - content: "\f1fe"; -} -.fa-pie-chart:before { - content: "\f200"; -} -.fa-line-chart:before { - content: "\f201"; -} -.fa-lastfm:before { - content: "\f202"; -} -.fa-lastfm-square:before { - content: "\f203"; -} -.fa-toggle-off:before { - content: "\f204"; -} -.fa-toggle-on:before { - content: "\f205"; -} -.fa-bicycle:before { - content: "\f206"; -} -.fa-bus:before { - content: "\f207"; -} -.fa-ioxhost:before { - content: "\f208"; -} -.fa-angellist:before { - content: "\f209"; -} -.fa-cc:before { - content: "\f20a"; -} -.fa-shekel:before, -.fa-sheqel:before, -.fa-ils:before { - content: "\f20b"; -} -.fa-meanpath:before { - content: "\f20c"; -} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/css/font-awesome.min.css b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/css/font-awesome.min.css deleted file mode 100644 index 318fb871..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/css/font-awesome.min.css +++ /dev/null @@ -1,4 +0,0 @@ -/*! - * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.2.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"} \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/FontAwesome.otf b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/FontAwesome.otf deleted file mode 100644 index 81c9ad949b47f64afeca5642ee2494b6e3147f44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85908 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 uQr82 diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.eot b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.eot deleted file mode 100644 index 84677bc0c5f37f1fac9d87548c4554b5c91717cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56006 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�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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.ttf b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.ttf deleted file mode 100644 index 96a3639cdde5e8ab459c6380e3b9524ee81641dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112160 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 zÄ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 V*eEM;|ho{trTA6=?tf diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.woff b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.woff deleted file mode 100644 index 628b6a52a87e62c6f22426e17c01f6a303aa194e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65452 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 q%u^)w#YX9ZIvhtu?9Cy6YRi6f6G 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 diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/bordered-pulled.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/bordered-pulled.less deleted file mode 100644 index 48a7004d..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/bordered-pulled.less +++ /dev/null @@ -1,16 +0,0 @@ -// Bordered & Pulled -// ------------------------- - -.@{fa-css-prefix}-border { - padding: .2em .25em .15em; - border: solid .08em @fa-border-color; - border-radius: .1em; -} - -.pull-right { float: right; } -.pull-left { float: left; } - -.@{fa-css-prefix} { - &.pull-left { margin-right: .3em; } - &.pull-right { margin-left: .3em; } -} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/core.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/core.less deleted file mode 100644 index 792ba4a5..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/core.less +++ /dev/null @@ -1,11 +0,0 @@ -// Base Class Definition -// ------------------------- - -.@{fa-css-prefix} { - display: inline-block; - font: normal normal normal 14px/1 FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/fixed-width.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/fixed-width.less deleted file mode 100644 index 4fd1ed36..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/fixed-width.less +++ /dev/null @@ -1,6 +0,0 @@ -// Fixed Width Icons -// ------------------------- -.@{fa-css-prefix}-fw { - width: (18em / 14); - text-align: center; -} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/font-awesome.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/font-awesome.less deleted file mode 100644 index 3727f967..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/font-awesome.less +++ /dev/null @@ -1,17 +0,0 @@ -/*! - * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ - -@import "variables.less"; -@import "mixins.less"; -@import "path.less"; -@import "core.less"; -@import "larger.less"; -@import "fixed-width.less"; -@import "list.less"; -@import "bordered-pulled.less"; -@import "spinning.less"; -@import "rotated-flipped.less"; -@import "stacked.less"; -@import "icons.less"; diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/icons.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/icons.less deleted file mode 100644 index 1ff19e34..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/icons.less +++ /dev/null @@ -1,552 +0,0 @@ -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ - -.@{fa-css-prefix}-glass:before { content: @fa-var-glass; } -.@{fa-css-prefix}-music:before { content: @fa-var-music; } -.@{fa-css-prefix}-search:before { content: @fa-var-search; } -.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; } -.@{fa-css-prefix}-heart:before { content: @fa-var-heart; } -.@{fa-css-prefix}-star:before { content: @fa-var-star; } -.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; } -.@{fa-css-prefix}-user:before { content: @fa-var-user; } -.@{fa-css-prefix}-film:before { content: @fa-var-film; } -.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; } -.@{fa-css-prefix}-th:before { content: @fa-var-th; } -.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; } -.@{fa-css-prefix}-check:before { content: @fa-var-check; } -.@{fa-css-prefix}-remove:before, -.@{fa-css-prefix}-close:before, -.@{fa-css-prefix}-times:before { content: @fa-var-times; } -.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; } -.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; } -.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; } -.@{fa-css-prefix}-signal:before { content: @fa-var-signal; } -.@{fa-css-prefix}-gear:before, -.@{fa-css-prefix}-cog:before { content: @fa-var-cog; } -.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; } -.@{fa-css-prefix}-home:before { content: @fa-var-home; } -.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; } -.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; } -.@{fa-css-prefix}-road:before { content: @fa-var-road; } -.@{fa-css-prefix}-download:before { content: @fa-var-download; } -.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; } -.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; } -.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; } -.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; } -.@{fa-css-prefix}-rotate-right:before, -.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; } -.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; } -.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; } -.@{fa-css-prefix}-lock:before { content: @fa-var-lock; } -.@{fa-css-prefix}-flag:before { content: @fa-var-flag; } -.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; } -.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; } -.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; } -.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; } -.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; } -.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; } -.@{fa-css-prefix}-tag:before { content: @fa-var-tag; } -.@{fa-css-prefix}-tags:before { content: @fa-var-tags; } -.@{fa-css-prefix}-book:before { content: @fa-var-book; } -.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; } -.@{fa-css-prefix}-print:before { content: @fa-var-print; } -.@{fa-css-prefix}-camera:before { content: @fa-var-camera; } -.@{fa-css-prefix}-font:before { content: @fa-var-font; } -.@{fa-css-prefix}-bold:before { content: @fa-var-bold; } -.@{fa-css-prefix}-italic:before { content: @fa-var-italic; } -.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; } -.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; } -.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; } -.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; } -.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; } -.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; } -.@{fa-css-prefix}-list:before { content: @fa-var-list; } -.@{fa-css-prefix}-dedent:before, -.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; } -.@{fa-css-prefix}-indent:before { content: @fa-var-indent; } -.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; } -.@{fa-css-prefix}-photo:before, -.@{fa-css-prefix}-image:before, -.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; } -.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; } -.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; } -.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; } -.@{fa-css-prefix}-tint:before { content: @fa-var-tint; } -.@{fa-css-prefix}-edit:before, -.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; } -.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; } -.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; } -.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; } -.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; } -.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; } -.@{fa-css-prefix}-backward:before { content: @fa-var-backward; } -.@{fa-css-prefix}-play:before { content: @fa-var-play; } -.@{fa-css-prefix}-pause:before { content: @fa-var-pause; } -.@{fa-css-prefix}-stop:before { content: @fa-var-stop; } -.@{fa-css-prefix}-forward:before { content: @fa-var-forward; } -.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; } -.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; } -.@{fa-css-prefix}-eject:before { content: @fa-var-eject; } -.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; } -.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; } -.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; } -.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; } -.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; } -.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; } -.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; } -.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; } -.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; } -.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; } -.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; } -.@{fa-css-prefix}-ban:before { content: @fa-var-ban; } -.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; } -.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; } -.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; } -.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; } -.@{fa-css-prefix}-mail-forward:before, -.@{fa-css-prefix}-share:before { content: @fa-var-share; } -.@{fa-css-prefix}-expand:before { content: @fa-var-expand; } -.@{fa-css-prefix}-compress:before { content: @fa-var-compress; } -.@{fa-css-prefix}-plus:before { content: @fa-var-plus; } -.@{fa-css-prefix}-minus:before { content: @fa-var-minus; } -.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; } -.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; } -.@{fa-css-prefix}-gift:before { content: @fa-var-gift; } -.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; } -.@{fa-css-prefix}-fire:before { content: @fa-var-fire; } -.@{fa-css-prefix}-eye:before { content: @fa-var-eye; } -.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; } -.@{fa-css-prefix}-warning:before, -.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; } -.@{fa-css-prefix}-plane:before { content: @fa-var-plane; } -.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; } -.@{fa-css-prefix}-random:before { content: @fa-var-random; } -.@{fa-css-prefix}-comment:before { content: @fa-var-comment; } -.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; } -.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; } -.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; } -.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; } -.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; } -.@{fa-css-prefix}-folder:before { content: @fa-var-folder; } -.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; } -.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; } -.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; } -.@{fa-css-prefix}-bar-chart-o:before, -.@{fa-css-prefix}-bar-chart:before { content: @fa-var-bar-chart; } -.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; } -.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; } -.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; } -.@{fa-css-prefix}-key:before { content: @fa-var-key; } -.@{fa-css-prefix}-gears:before, -.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; } -.@{fa-css-prefix}-comments:before { content: @fa-var-comments; } -.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; } -.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; } -.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; } -.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; } -.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; } -.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; } -.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; } -.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; } -.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; } -.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; } -.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; } -.@{fa-css-prefix}-upload:before { content: @fa-var-upload; } -.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; } -.@{fa-css-prefix}-phone:before { content: @fa-var-phone; } -.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; } -.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; } -.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; } -.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; } -.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; } -.@{fa-css-prefix}-github:before { content: @fa-var-github; } -.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; } -.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; } -.@{fa-css-prefix}-rss:before { content: @fa-var-rss; } -.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; } -.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; } -.@{fa-css-prefix}-bell:before { content: @fa-var-bell; } -.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; } -.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; } -.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; } -.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; } -.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; } -.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; } -.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; } -.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; } -.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; } -.@{fa-css-prefix}-globe:before { content: @fa-var-globe; } -.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; } -.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; } -.@{fa-css-prefix}-filter:before { content: @fa-var-filter; } -.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; } -.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; } -.@{fa-css-prefix}-group:before, -.@{fa-css-prefix}-users:before { content: @fa-var-users; } -.@{fa-css-prefix}-chain:before, -.@{fa-css-prefix}-link:before { content: @fa-var-link; } -.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; } -.@{fa-css-prefix}-flask:before { content: @fa-var-flask; } -.@{fa-css-prefix}-cut:before, -.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; } -.@{fa-css-prefix}-copy:before, -.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; } -.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; } -.@{fa-css-prefix}-save:before, -.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; } -.@{fa-css-prefix}-square:before { content: @fa-var-square; } -.@{fa-css-prefix}-navicon:before, -.@{fa-css-prefix}-reorder:before, -.@{fa-css-prefix}-bars:before { content: @fa-var-bars; } -.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; } -.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; } -.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; } -.@{fa-css-prefix}-underline:before { content: @fa-var-underline; } -.@{fa-css-prefix}-table:before { content: @fa-var-table; } -.@{fa-css-prefix}-magic:before { content: @fa-var-magic; } -.@{fa-css-prefix}-truck:before { content: @fa-var-truck; } -.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; } -.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; } -.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; } -.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; } -.@{fa-css-prefix}-money:before { content: @fa-var-money; } -.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; } -.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; } -.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; } -.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; } -.@{fa-css-prefix}-columns:before { content: @fa-var-columns; } -.@{fa-css-prefix}-unsorted:before, -.@{fa-css-prefix}-sort:before { content: @fa-var-sort; } -.@{fa-css-prefix}-sort-down:before, -.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; } -.@{fa-css-prefix}-sort-up:before, -.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; } -.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; } -.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; } -.@{fa-css-prefix}-rotate-left:before, -.@{fa-css-prefix}-undo:before { content: @fa-var-undo; } -.@{fa-css-prefix}-legal:before, -.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; } -.@{fa-css-prefix}-dashboard:before, -.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; } -.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; } -.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; } -.@{fa-css-prefix}-flash:before, -.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; } -.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; } -.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; } -.@{fa-css-prefix}-paste:before, -.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; } -.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; } -.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; } -.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; } -.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; } -.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; } -.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; } -.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; } -.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; } -.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; } -.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; } -.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; } -.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; } -.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; } -.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; } -.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; } -.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; } -.@{fa-css-prefix}-beer:before { content: @fa-var-beer; } -.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; } -.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; } -.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; } -.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; } -.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; } -.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; } -.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; } -.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; } -.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; } -.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; } -.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; } -.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; } -.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; } -.@{fa-css-prefix}-mobile-phone:before, -.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; } -.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; } -.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; } -.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; } -.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; } -.@{fa-css-prefix}-circle:before { content: @fa-var-circle; } -.@{fa-css-prefix}-mail-reply:before, -.@{fa-css-prefix}-reply:before { content: @fa-var-reply; } -.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; } -.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; } -.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; } -.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; } -.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; } -.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; } -.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; } -.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; } -.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; } -.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; } -.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; } -.@{fa-css-prefix}-code:before { content: @fa-var-code; } -.@{fa-css-prefix}-mail-reply-all:before, -.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; } -.@{fa-css-prefix}-star-half-empty:before, -.@{fa-css-prefix}-star-half-full:before, -.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; } -.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; } -.@{fa-css-prefix}-crop:before { content: @fa-var-crop; } -.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; } -.@{fa-css-prefix}-unlink:before, -.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; } -.@{fa-css-prefix}-question:before { content: @fa-var-question; } -.@{fa-css-prefix}-info:before { content: @fa-var-info; } -.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; } -.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; } -.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; } -.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; } -.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; } -.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; } -.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; } -.@{fa-css-prefix}-shield:before { content: @fa-var-shield; } -.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; } -.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; } -.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; } -.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; } -.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; } -.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; } -.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; } -.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; } -.@{fa-css-prefix}-html5:before { content: @fa-var-html5; } -.@{fa-css-prefix}-css3:before { content: @fa-var-css3; } -.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; } -.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; } -.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; } -.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; } -.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; } -.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; } -.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; } -.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; } -.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; } -.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; } -.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; } -.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; } -.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; } -.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; } -.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; } -.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; } -.@{fa-css-prefix}-compass:before { content: @fa-var-compass; } -.@{fa-css-prefix}-toggle-down:before, -.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; } -.@{fa-css-prefix}-toggle-up:before, -.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; } -.@{fa-css-prefix}-toggle-right:before, -.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; } -.@{fa-css-prefix}-euro:before, -.@{fa-css-prefix}-eur:before { content: @fa-var-eur; } -.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; } -.@{fa-css-prefix}-dollar:before, -.@{fa-css-prefix}-usd:before { content: @fa-var-usd; } -.@{fa-css-prefix}-rupee:before, -.@{fa-css-prefix}-inr:before { content: @fa-var-inr; } -.@{fa-css-prefix}-cny:before, -.@{fa-css-prefix}-rmb:before, -.@{fa-css-prefix}-yen:before, -.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; } -.@{fa-css-prefix}-ruble:before, -.@{fa-css-prefix}-rouble:before, -.@{fa-css-prefix}-rub:before { content: @fa-var-rub; } -.@{fa-css-prefix}-won:before, -.@{fa-css-prefix}-krw:before { content: @fa-var-krw; } -.@{fa-css-prefix}-bitcoin:before, -.@{fa-css-prefix}-btc:before { content: @fa-var-btc; } -.@{fa-css-prefix}-file:before { content: @fa-var-file; } -.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; } -.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; } -.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; } -.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; } -.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; } -.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; } -.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; } -.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; } -.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; } -.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; } -.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; } -.@{fa-css-prefix}-xing:before { content: @fa-var-xing; } -.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; } -.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; } -.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; } -.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; } -.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; } -.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; } -.@{fa-css-prefix}-adn:before { content: @fa-var-adn; } -.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; } -.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; } -.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; } -.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; } -.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; } -.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; } -.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; } -.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; } -.@{fa-css-prefix}-apple:before { content: @fa-var-apple; } -.@{fa-css-prefix}-windows:before { content: @fa-var-windows; } -.@{fa-css-prefix}-android:before { content: @fa-var-android; } -.@{fa-css-prefix}-linux:before { content: @fa-var-linux; } -.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; } -.@{fa-css-prefix}-skype:before { content: @fa-var-skype; } -.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; } -.@{fa-css-prefix}-trello:before { content: @fa-var-trello; } -.@{fa-css-prefix}-female:before { content: @fa-var-female; } -.@{fa-css-prefix}-male:before { content: @fa-var-male; } -.@{fa-css-prefix}-gittip:before { content: @fa-var-gittip; } -.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; } -.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; } -.@{fa-css-prefix}-archive:before { content: @fa-var-archive; } -.@{fa-css-prefix}-bug:before { content: @fa-var-bug; } -.@{fa-css-prefix}-vk:before { content: @fa-var-vk; } -.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; } -.@{fa-css-prefix}-renren:before { content: @fa-var-renren; } -.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; } -.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; } -.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; } -.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; } -.@{fa-css-prefix}-toggle-left:before, -.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; } -.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; } -.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; } -.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; } -.@{fa-css-prefix}-turkish-lira:before, -.@{fa-css-prefix}-try:before { content: @fa-var-try; } -.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; } -.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; } -.@{fa-css-prefix}-slack:before { content: @fa-var-slack; } -.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; } -.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; } -.@{fa-css-prefix}-openid:before { content: @fa-var-openid; } -.@{fa-css-prefix}-institution:before, -.@{fa-css-prefix}-bank:before, -.@{fa-css-prefix}-university:before { content: @fa-var-university; } -.@{fa-css-prefix}-mortar-board:before, -.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; } -.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; } -.@{fa-css-prefix}-google:before { content: @fa-var-google; } -.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; } -.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; } -.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; } -.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; } -.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; } -.@{fa-css-prefix}-digg:before { content: @fa-var-digg; } -.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; } -.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; } -.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; } -.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; } -.@{fa-css-prefix}-language:before { content: @fa-var-language; } -.@{fa-css-prefix}-fax:before { content: @fa-var-fax; } -.@{fa-css-prefix}-building:before { content: @fa-var-building; } -.@{fa-css-prefix}-child:before { content: @fa-var-child; } -.@{fa-css-prefix}-paw:before { content: @fa-var-paw; } -.@{fa-css-prefix}-spoon:before { content: @fa-var-spoon; } -.@{fa-css-prefix}-cube:before { content: @fa-var-cube; } -.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; } -.@{fa-css-prefix}-behance:before { content: @fa-var-behance; } -.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; } -.@{fa-css-prefix}-steam:before { content: @fa-var-steam; } -.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; } -.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; } -.@{fa-css-prefix}-automobile:before, -.@{fa-css-prefix}-car:before { content: @fa-var-car; } -.@{fa-css-prefix}-cab:before, -.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; } -.@{fa-css-prefix}-tree:before { content: @fa-var-tree; } -.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; } -.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; } -.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; } -.@{fa-css-prefix}-database:before { content: @fa-var-database; } -.@{fa-css-prefix}-file-pdf-o:before { content: @fa-var-file-pdf-o; } -.@{fa-css-prefix}-file-word-o:before { content: @fa-var-file-word-o; } -.@{fa-css-prefix}-file-excel-o:before { content: @fa-var-file-excel-o; } -.@{fa-css-prefix}-file-powerpoint-o:before { content: @fa-var-file-powerpoint-o; } -.@{fa-css-prefix}-file-photo-o:before, -.@{fa-css-prefix}-file-picture-o:before, -.@{fa-css-prefix}-file-image-o:before { content: @fa-var-file-image-o; } -.@{fa-css-prefix}-file-zip-o:before, -.@{fa-css-prefix}-file-archive-o:before { content: @fa-var-file-archive-o; } -.@{fa-css-prefix}-file-sound-o:before, -.@{fa-css-prefix}-file-audio-o:before { content: @fa-var-file-audio-o; } -.@{fa-css-prefix}-file-movie-o:before, -.@{fa-css-prefix}-file-video-o:before { content: @fa-var-file-video-o; } -.@{fa-css-prefix}-file-code-o:before { content: @fa-var-file-code-o; } -.@{fa-css-prefix}-vine:before { content: @fa-var-vine; } -.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; } -.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; } -.@{fa-css-prefix}-life-bouy:before, -.@{fa-css-prefix}-life-buoy:before, -.@{fa-css-prefix}-life-saver:before, -.@{fa-css-prefix}-support:before, -.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; } -.@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; } -.@{fa-css-prefix}-ra:before, -.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; } -.@{fa-css-prefix}-ge:before, -.@{fa-css-prefix}-empire:before { content: @fa-var-empire; } -.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; } -.@{fa-css-prefix}-git:before { content: @fa-var-git; } -.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; } -.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; } -.@{fa-css-prefix}-qq:before { content: @fa-var-qq; } -.@{fa-css-prefix}-wechat:before, -.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; } -.@{fa-css-prefix}-send:before, -.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; } -.@{fa-css-prefix}-send-o:before, -.@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; } -.@{fa-css-prefix}-history:before { content: @fa-var-history; } -.@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; } -.@{fa-css-prefix}-header:before { content: @fa-var-header; } -.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; } -.@{fa-css-prefix}-sliders:before { content: @fa-var-sliders; } -.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; } -.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; } -.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; } -.@{fa-css-prefix}-soccer-ball-o:before, -.@{fa-css-prefix}-futbol-o:before { content: @fa-var-futbol-o; } -.@{fa-css-prefix}-tty:before { content: @fa-var-tty; } -.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; } -.@{fa-css-prefix}-plug:before { content: @fa-var-plug; } -.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; } -.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; } -.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; } -.@{fa-css-prefix}-newspaper-o:before { content: @fa-var-newspaper-o; } -.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; } -.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; } -.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; } -.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; } -.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; } -.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; } -.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; } -.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; } -.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; } -.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; } -.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; } -.@{fa-css-prefix}-bell-slash-o:before { content: @fa-var-bell-slash-o; } -.@{fa-css-prefix}-trash:before { content: @fa-var-trash; } -.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; } -.@{fa-css-prefix}-at:before { content: @fa-var-at; } -.@{fa-css-prefix}-eyedropper:before { content: @fa-var-eyedropper; } -.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; } -.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; } -.@{fa-css-prefix}-area-chart:before { content: @fa-var-area-chart; } -.@{fa-css-prefix}-pie-chart:before { content: @fa-var-pie-chart; } -.@{fa-css-prefix}-line-chart:before { content: @fa-var-line-chart; } -.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; } -.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; } -.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; } -.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; } -.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; } -.@{fa-css-prefix}-bus:before { content: @fa-var-bus; } -.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; } -.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; } -.@{fa-css-prefix}-cc:before { content: @fa-var-cc; } -.@{fa-css-prefix}-shekel:before, -.@{fa-css-prefix}-sheqel:before, -.@{fa-css-prefix}-ils:before { content: @fa-var-ils; } -.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; } diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/larger.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/larger.less deleted file mode 100644 index 3646d3d9..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/larger.less +++ /dev/null @@ -1,13 +0,0 @@ -// Icon Sizes -// ------------------------- - -/* makes the font 33% larger relative to the icon container */ -.@{fa-css-prefix}-lg { - font-size: (4em / 3); - line-height: (3em / 4); - vertical-align: -15%; -} -.@{fa-css-prefix}-2x { font-size: 2em; } -.@{fa-css-prefix}-3x { font-size: 3em; } -.@{fa-css-prefix}-4x { font-size: 4em; } -.@{fa-css-prefix}-5x { font-size: 5em; } diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/list.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/list.less deleted file mode 100644 index eb64bf4b..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/list.less +++ /dev/null @@ -1,19 +0,0 @@ -// List Icons -// ------------------------- - -.@{fa-css-prefix}-ul { - padding-left: 0; - margin-left: @fa-li-width; - list-style-type: none; - > li { position: relative; } -} -.@{fa-css-prefix}-li { - position: absolute; - left: -@fa-li-width; - width: @fa-li-width; - top: (2em / 14); - text-align: center; - &.@{fa-css-prefix}-lg { - left: (-@fa-li-width + (4em / 14)); - } -} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/mixins.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/mixins.less deleted file mode 100644 index 1f7153fe..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/mixins.less +++ /dev/null @@ -1,25 +0,0 @@ -// Mixins -// -------------------------- - -.fa-icon() { - display: inline-block; - font: normal normal normal 14px/1 FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.fa-icon-rotate(@degrees, @rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation); - -webkit-transform: rotate(@degrees); - -ms-transform: rotate(@degrees); - transform: rotate(@degrees); -} - -.fa-icon-flip(@horiz, @vert, @rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1); - -webkit-transform: scale(@horiz, @vert); - -ms-transform: scale(@horiz, @vert); - transform: scale(@horiz, @vert); -} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/path.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/path.less deleted file mode 100644 index 39ebbd66..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/path.less +++ /dev/null @@ -1,14 +0,0 @@ -/* FONT PATH - * -------------------------- */ - -@font-face { - font-family: 'FontAwesome'; - src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); - src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), - url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), - url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), - url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); -// src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts - font-weight: normal; - font-style: normal; -} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/rotated-flipped.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/rotated-flipped.less deleted file mode 100644 index 34faba58..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/rotated-flipped.less +++ /dev/null @@ -1,20 +0,0 @@ -// Rotated & Flipped Icons -// ------------------------- - -.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } -.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } -.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } - -.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } -.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } - -// Hook for IE8-9 -// ------------------------- - -:root .@{fa-css-prefix}-rotate-90, -:root .@{fa-css-prefix}-rotate-180, -:root .@{fa-css-prefix}-rotate-270, -:root .@{fa-css-prefix}-flip-horizontal, -:root .@{fa-css-prefix}-flip-vertical { - filter: none; -} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/spinning.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/spinning.less deleted file mode 100644 index 7c007caa..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/spinning.less +++ /dev/null @@ -1,29 +0,0 @@ -// Spinning Icons -// -------------------------- - -.@{fa-css-prefix}-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} - -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/stacked.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/stacked.less deleted file mode 100644 index d3fc1016..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/stacked.less +++ /dev/null @@ -1,20 +0,0 @@ -// Stacked Icons -// ------------------------- - -.@{fa-css-prefix}-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.@{fa-css-prefix}-stack-1x { line-height: inherit; } -.@{fa-css-prefix}-stack-2x { font-size: 2em; } -.@{fa-css-prefix}-inverse { color: @fa-inverse; } diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/variables.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/variables.less deleted file mode 100644 index 512ecd5a..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/variables.less +++ /dev/null @@ -1,561 +0,0 @@ -// Variables -// -------------------------- - -@fa-font-path: "../fonts"; -//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts"; // for referencing Bootstrap CDN font files directly -@fa-css-prefix: fa; -@fa-version: "4.2.0"; -@fa-border-color: #eee; -@fa-inverse: #fff; -@fa-li-width: (30em / 14); - -@fa-var-adjust: "\f042"; -@fa-var-adn: "\f170"; -@fa-var-align-center: "\f037"; -@fa-var-align-justify: "\f039"; -@fa-var-align-left: "\f036"; -@fa-var-align-right: "\f038"; -@fa-var-ambulance: "\f0f9"; -@fa-var-anchor: "\f13d"; -@fa-var-android: "\f17b"; -@fa-var-angellist: "\f209"; -@fa-var-angle-double-down: "\f103"; -@fa-var-angle-double-left: "\f100"; -@fa-var-angle-double-right: "\f101"; -@fa-var-angle-double-up: "\f102"; -@fa-var-angle-down: "\f107"; -@fa-var-angle-left: "\f104"; -@fa-var-angle-right: "\f105"; -@fa-var-angle-up: "\f106"; -@fa-var-apple: "\f179"; -@fa-var-archive: "\f187"; -@fa-var-area-chart: "\f1fe"; -@fa-var-arrow-circle-down: "\f0ab"; -@fa-var-arrow-circle-left: "\f0a8"; -@fa-var-arrow-circle-o-down: "\f01a"; -@fa-var-arrow-circle-o-left: "\f190"; -@fa-var-arrow-circle-o-right: "\f18e"; -@fa-var-arrow-circle-o-up: "\f01b"; -@fa-var-arrow-circle-right: "\f0a9"; -@fa-var-arrow-circle-up: "\f0aa"; -@fa-var-arrow-down: "\f063"; -@fa-var-arrow-left: "\f060"; -@fa-var-arrow-right: "\f061"; -@fa-var-arrow-up: "\f062"; -@fa-var-arrows: "\f047"; -@fa-var-arrows-alt: "\f0b2"; -@fa-var-arrows-h: "\f07e"; -@fa-var-arrows-v: "\f07d"; -@fa-var-asterisk: "\f069"; -@fa-var-at: "\f1fa"; -@fa-var-automobile: "\f1b9"; -@fa-var-backward: "\f04a"; -@fa-var-ban: "\f05e"; -@fa-var-bank: "\f19c"; -@fa-var-bar-chart: "\f080"; -@fa-var-bar-chart-o: "\f080"; -@fa-var-barcode: "\f02a"; -@fa-var-bars: "\f0c9"; -@fa-var-beer: "\f0fc"; -@fa-var-behance: "\f1b4"; -@fa-var-behance-square: "\f1b5"; -@fa-var-bell: "\f0f3"; -@fa-var-bell-o: "\f0a2"; -@fa-var-bell-slash: "\f1f6"; -@fa-var-bell-slash-o: "\f1f7"; -@fa-var-bicycle: "\f206"; -@fa-var-binoculars: "\f1e5"; -@fa-var-birthday-cake: "\f1fd"; -@fa-var-bitbucket: "\f171"; -@fa-var-bitbucket-square: "\f172"; -@fa-var-bitcoin: "\f15a"; -@fa-var-bold: "\f032"; -@fa-var-bolt: "\f0e7"; -@fa-var-bomb: "\f1e2"; -@fa-var-book: "\f02d"; -@fa-var-bookmark: "\f02e"; -@fa-var-bookmark-o: "\f097"; -@fa-var-briefcase: "\f0b1"; -@fa-var-btc: "\f15a"; -@fa-var-bug: "\f188"; -@fa-var-building: "\f1ad"; -@fa-var-building-o: "\f0f7"; -@fa-var-bullhorn: "\f0a1"; -@fa-var-bullseye: "\f140"; -@fa-var-bus: "\f207"; -@fa-var-cab: "\f1ba"; -@fa-var-calculator: "\f1ec"; -@fa-var-calendar: "\f073"; -@fa-var-calendar-o: "\f133"; -@fa-var-camera: "\f030"; -@fa-var-camera-retro: "\f083"; -@fa-var-car: "\f1b9"; -@fa-var-caret-down: "\f0d7"; -@fa-var-caret-left: "\f0d9"; -@fa-var-caret-right: "\f0da"; -@fa-var-caret-square-o-down: "\f150"; -@fa-var-caret-square-o-left: "\f191"; -@fa-var-caret-square-o-right: "\f152"; -@fa-var-caret-square-o-up: "\f151"; -@fa-var-caret-up: "\f0d8"; -@fa-var-cc: "\f20a"; -@fa-var-cc-amex: "\f1f3"; -@fa-var-cc-discover: "\f1f2"; -@fa-var-cc-mastercard: "\f1f1"; -@fa-var-cc-paypal: "\f1f4"; -@fa-var-cc-stripe: "\f1f5"; -@fa-var-cc-visa: "\f1f0"; -@fa-var-certificate: "\f0a3"; -@fa-var-chain: "\f0c1"; -@fa-var-chain-broken: "\f127"; -@fa-var-check: "\f00c"; -@fa-var-check-circle: "\f058"; -@fa-var-check-circle-o: "\f05d"; -@fa-var-check-square: "\f14a"; -@fa-var-check-square-o: "\f046"; -@fa-var-chevron-circle-down: "\f13a"; -@fa-var-chevron-circle-left: "\f137"; -@fa-var-chevron-circle-right: "\f138"; -@fa-var-chevron-circle-up: "\f139"; -@fa-var-chevron-down: "\f078"; -@fa-var-chevron-left: "\f053"; -@fa-var-chevron-right: "\f054"; -@fa-var-chevron-up: "\f077"; -@fa-var-child: "\f1ae"; -@fa-var-circle: "\f111"; -@fa-var-circle-o: "\f10c"; -@fa-var-circle-o-notch: "\f1ce"; -@fa-var-circle-thin: "\f1db"; -@fa-var-clipboard: "\f0ea"; -@fa-var-clock-o: "\f017"; -@fa-var-close: "\f00d"; -@fa-var-cloud: "\f0c2"; -@fa-var-cloud-download: "\f0ed"; -@fa-var-cloud-upload: "\f0ee"; -@fa-var-cny: "\f157"; -@fa-var-code: "\f121"; -@fa-var-code-fork: "\f126"; -@fa-var-codepen: "\f1cb"; -@fa-var-coffee: "\f0f4"; -@fa-var-cog: "\f013"; -@fa-var-cogs: "\f085"; -@fa-var-columns: "\f0db"; -@fa-var-comment: "\f075"; -@fa-var-comment-o: "\f0e5"; -@fa-var-comments: "\f086"; -@fa-var-comments-o: "\f0e6"; -@fa-var-compass: "\f14e"; -@fa-var-compress: "\f066"; -@fa-var-copy: "\f0c5"; -@fa-var-copyright: "\f1f9"; -@fa-var-credit-card: "\f09d"; -@fa-var-crop: "\f125"; -@fa-var-crosshairs: "\f05b"; -@fa-var-css3: "\f13c"; -@fa-var-cube: "\f1b2"; -@fa-var-cubes: "\f1b3"; -@fa-var-cut: "\f0c4"; -@fa-var-cutlery: "\f0f5"; -@fa-var-dashboard: "\f0e4"; -@fa-var-database: "\f1c0"; -@fa-var-dedent: "\f03b"; -@fa-var-delicious: "\f1a5"; -@fa-var-desktop: "\f108"; -@fa-var-deviantart: "\f1bd"; -@fa-var-digg: "\f1a6"; -@fa-var-dollar: "\f155"; -@fa-var-dot-circle-o: "\f192"; -@fa-var-download: "\f019"; -@fa-var-dribbble: "\f17d"; -@fa-var-dropbox: "\f16b"; -@fa-var-drupal: "\f1a9"; -@fa-var-edit: "\f044"; -@fa-var-eject: "\f052"; -@fa-var-ellipsis-h: "\f141"; -@fa-var-ellipsis-v: "\f142"; -@fa-var-empire: "\f1d1"; -@fa-var-envelope: "\f0e0"; -@fa-var-envelope-o: "\f003"; -@fa-var-envelope-square: "\f199"; -@fa-var-eraser: "\f12d"; -@fa-var-eur: "\f153"; -@fa-var-euro: "\f153"; -@fa-var-exchange: "\f0ec"; -@fa-var-exclamation: "\f12a"; -@fa-var-exclamation-circle: "\f06a"; -@fa-var-exclamation-triangle: "\f071"; -@fa-var-expand: "\f065"; -@fa-var-external-link: "\f08e"; -@fa-var-external-link-square: "\f14c"; -@fa-var-eye: "\f06e"; -@fa-var-eye-slash: "\f070"; -@fa-var-eyedropper: "\f1fb"; -@fa-var-facebook: "\f09a"; -@fa-var-facebook-square: "\f082"; -@fa-var-fast-backward: "\f049"; -@fa-var-fast-forward: "\f050"; -@fa-var-fax: "\f1ac"; -@fa-var-female: "\f182"; -@fa-var-fighter-jet: "\f0fb"; -@fa-var-file: "\f15b"; -@fa-var-file-archive-o: "\f1c6"; -@fa-var-file-audio-o: "\f1c7"; -@fa-var-file-code-o: "\f1c9"; -@fa-var-file-excel-o: "\f1c3"; -@fa-var-file-image-o: "\f1c5"; -@fa-var-file-movie-o: "\f1c8"; -@fa-var-file-o: "\f016"; -@fa-var-file-pdf-o: "\f1c1"; -@fa-var-file-photo-o: "\f1c5"; -@fa-var-file-picture-o: "\f1c5"; -@fa-var-file-powerpoint-o: "\f1c4"; -@fa-var-file-sound-o: "\f1c7"; -@fa-var-file-text: "\f15c"; -@fa-var-file-text-o: "\f0f6"; -@fa-var-file-video-o: "\f1c8"; -@fa-var-file-word-o: "\f1c2"; -@fa-var-file-zip-o: "\f1c6"; -@fa-var-files-o: "\f0c5"; -@fa-var-film: "\f008"; -@fa-var-filter: "\f0b0"; -@fa-var-fire: "\f06d"; -@fa-var-fire-extinguisher: "\f134"; -@fa-var-flag: "\f024"; -@fa-var-flag-checkered: "\f11e"; -@fa-var-flag-o: "\f11d"; -@fa-var-flash: "\f0e7"; -@fa-var-flask: "\f0c3"; -@fa-var-flickr: "\f16e"; -@fa-var-floppy-o: "\f0c7"; -@fa-var-folder: "\f07b"; -@fa-var-folder-o: "\f114"; -@fa-var-folder-open: "\f07c"; -@fa-var-folder-open-o: "\f115"; -@fa-var-font: "\f031"; -@fa-var-forward: "\f04e"; -@fa-var-foursquare: "\f180"; -@fa-var-frown-o: "\f119"; -@fa-var-futbol-o: "\f1e3"; -@fa-var-gamepad: "\f11b"; -@fa-var-gavel: "\f0e3"; -@fa-var-gbp: "\f154"; -@fa-var-ge: "\f1d1"; -@fa-var-gear: "\f013"; -@fa-var-gears: "\f085"; -@fa-var-gift: "\f06b"; -@fa-var-git: "\f1d3"; -@fa-var-git-square: "\f1d2"; -@fa-var-github: "\f09b"; -@fa-var-github-alt: "\f113"; -@fa-var-github-square: "\f092"; -@fa-var-gittip: "\f184"; -@fa-var-glass: "\f000"; -@fa-var-globe: "\f0ac"; -@fa-var-google: "\f1a0"; -@fa-var-google-plus: "\f0d5"; -@fa-var-google-plus-square: "\f0d4"; -@fa-var-google-wallet: "\f1ee"; -@fa-var-graduation-cap: "\f19d"; -@fa-var-group: "\f0c0"; -@fa-var-h-square: "\f0fd"; -@fa-var-hacker-news: "\f1d4"; -@fa-var-hand-o-down: "\f0a7"; -@fa-var-hand-o-left: "\f0a5"; -@fa-var-hand-o-right: "\f0a4"; -@fa-var-hand-o-up: "\f0a6"; -@fa-var-hdd-o: "\f0a0"; -@fa-var-header: "\f1dc"; -@fa-var-headphones: "\f025"; -@fa-var-heart: "\f004"; -@fa-var-heart-o: "\f08a"; -@fa-var-history: "\f1da"; -@fa-var-home: "\f015"; -@fa-var-hospital-o: "\f0f8"; -@fa-var-html5: "\f13b"; -@fa-var-ils: "\f20b"; -@fa-var-image: "\f03e"; -@fa-var-inbox: "\f01c"; -@fa-var-indent: "\f03c"; -@fa-var-info: "\f129"; -@fa-var-info-circle: "\f05a"; -@fa-var-inr: "\f156"; -@fa-var-instagram: "\f16d"; -@fa-var-institution: "\f19c"; -@fa-var-ioxhost: "\f208"; -@fa-var-italic: "\f033"; -@fa-var-joomla: "\f1aa"; -@fa-var-jpy: "\f157"; -@fa-var-jsfiddle: "\f1cc"; -@fa-var-key: "\f084"; -@fa-var-keyboard-o: "\f11c"; -@fa-var-krw: "\f159"; -@fa-var-language: "\f1ab"; -@fa-var-laptop: "\f109"; -@fa-var-lastfm: "\f202"; -@fa-var-lastfm-square: "\f203"; -@fa-var-leaf: "\f06c"; -@fa-var-legal: "\f0e3"; -@fa-var-lemon-o: "\f094"; -@fa-var-level-down: "\f149"; -@fa-var-level-up: "\f148"; -@fa-var-life-bouy: "\f1cd"; -@fa-var-life-buoy: "\f1cd"; -@fa-var-life-ring: "\f1cd"; -@fa-var-life-saver: "\f1cd"; -@fa-var-lightbulb-o: "\f0eb"; -@fa-var-line-chart: "\f201"; -@fa-var-link: "\f0c1"; -@fa-var-linkedin: "\f0e1"; -@fa-var-linkedin-square: "\f08c"; -@fa-var-linux: "\f17c"; -@fa-var-list: "\f03a"; -@fa-var-list-alt: "\f022"; -@fa-var-list-ol: "\f0cb"; -@fa-var-list-ul: "\f0ca"; -@fa-var-location-arrow: "\f124"; -@fa-var-lock: "\f023"; -@fa-var-long-arrow-down: "\f175"; -@fa-var-long-arrow-left: "\f177"; -@fa-var-long-arrow-right: "\f178"; -@fa-var-long-arrow-up: "\f176"; -@fa-var-magic: "\f0d0"; -@fa-var-magnet: "\f076"; -@fa-var-mail-forward: "\f064"; -@fa-var-mail-reply: "\f112"; -@fa-var-mail-reply-all: "\f122"; -@fa-var-male: "\f183"; -@fa-var-map-marker: "\f041"; -@fa-var-maxcdn: "\f136"; -@fa-var-meanpath: "\f20c"; -@fa-var-medkit: "\f0fa"; -@fa-var-meh-o: "\f11a"; -@fa-var-microphone: "\f130"; -@fa-var-microphone-slash: "\f131"; -@fa-var-minus: "\f068"; -@fa-var-minus-circle: "\f056"; -@fa-var-minus-square: "\f146"; -@fa-var-minus-square-o: "\f147"; -@fa-var-mobile: "\f10b"; -@fa-var-mobile-phone: "\f10b"; -@fa-var-money: "\f0d6"; -@fa-var-moon-o: "\f186"; -@fa-var-mortar-board: "\f19d"; -@fa-var-music: "\f001"; -@fa-var-navicon: "\f0c9"; -@fa-var-newspaper-o: "\f1ea"; -@fa-var-openid: "\f19b"; -@fa-var-outdent: "\f03b"; -@fa-var-pagelines: "\f18c"; -@fa-var-paint-brush: "\f1fc"; -@fa-var-paper-plane: "\f1d8"; -@fa-var-paper-plane-o: "\f1d9"; -@fa-var-paperclip: "\f0c6"; -@fa-var-paragraph: "\f1dd"; -@fa-var-paste: "\f0ea"; -@fa-var-pause: "\f04c"; -@fa-var-paw: "\f1b0"; -@fa-var-paypal: "\f1ed"; -@fa-var-pencil: "\f040"; -@fa-var-pencil-square: "\f14b"; -@fa-var-pencil-square-o: "\f044"; -@fa-var-phone: "\f095"; -@fa-var-phone-square: "\f098"; -@fa-var-photo: "\f03e"; -@fa-var-picture-o: "\f03e"; -@fa-var-pie-chart: "\f200"; -@fa-var-pied-piper: "\f1a7"; -@fa-var-pied-piper-alt: "\f1a8"; -@fa-var-pinterest: "\f0d2"; -@fa-var-pinterest-square: "\f0d3"; -@fa-var-plane: "\f072"; -@fa-var-play: "\f04b"; -@fa-var-play-circle: "\f144"; -@fa-var-play-circle-o: "\f01d"; -@fa-var-plug: "\f1e6"; -@fa-var-plus: "\f067"; -@fa-var-plus-circle: "\f055"; -@fa-var-plus-square: "\f0fe"; -@fa-var-plus-square-o: "\f196"; -@fa-var-power-off: "\f011"; -@fa-var-print: "\f02f"; -@fa-var-puzzle-piece: "\f12e"; -@fa-var-qq: "\f1d6"; -@fa-var-qrcode: "\f029"; -@fa-var-question: "\f128"; -@fa-var-question-circle: "\f059"; -@fa-var-quote-left: "\f10d"; -@fa-var-quote-right: "\f10e"; -@fa-var-ra: "\f1d0"; -@fa-var-random: "\f074"; -@fa-var-rebel: "\f1d0"; -@fa-var-recycle: "\f1b8"; -@fa-var-reddit: "\f1a1"; -@fa-var-reddit-square: "\f1a2"; -@fa-var-refresh: "\f021"; -@fa-var-remove: "\f00d"; -@fa-var-renren: "\f18b"; -@fa-var-reorder: "\f0c9"; -@fa-var-repeat: "\f01e"; -@fa-var-reply: "\f112"; -@fa-var-reply-all: "\f122"; -@fa-var-retweet: "\f079"; -@fa-var-rmb: "\f157"; -@fa-var-road: "\f018"; -@fa-var-rocket: "\f135"; -@fa-var-rotate-left: "\f0e2"; -@fa-var-rotate-right: "\f01e"; -@fa-var-rouble: "\f158"; -@fa-var-rss: "\f09e"; -@fa-var-rss-square: "\f143"; -@fa-var-rub: "\f158"; -@fa-var-ruble: "\f158"; -@fa-var-rupee: "\f156"; -@fa-var-save: "\f0c7"; -@fa-var-scissors: "\f0c4"; -@fa-var-search: "\f002"; -@fa-var-search-minus: "\f010"; -@fa-var-search-plus: "\f00e"; -@fa-var-send: "\f1d8"; -@fa-var-send-o: "\f1d9"; -@fa-var-share: "\f064"; -@fa-var-share-alt: "\f1e0"; -@fa-var-share-alt-square: "\f1e1"; -@fa-var-share-square: "\f14d"; -@fa-var-share-square-o: "\f045"; -@fa-var-shekel: "\f20b"; -@fa-var-sheqel: "\f20b"; -@fa-var-shield: "\f132"; -@fa-var-shopping-cart: "\f07a"; -@fa-var-sign-in: "\f090"; -@fa-var-sign-out: "\f08b"; -@fa-var-signal: "\f012"; -@fa-var-sitemap: "\f0e8"; -@fa-var-skype: "\f17e"; -@fa-var-slack: "\f198"; -@fa-var-sliders: "\f1de"; -@fa-var-slideshare: "\f1e7"; -@fa-var-smile-o: "\f118"; -@fa-var-soccer-ball-o: "\f1e3"; -@fa-var-sort: "\f0dc"; -@fa-var-sort-alpha-asc: "\f15d"; -@fa-var-sort-alpha-desc: "\f15e"; -@fa-var-sort-amount-asc: "\f160"; -@fa-var-sort-amount-desc: "\f161"; -@fa-var-sort-asc: "\f0de"; -@fa-var-sort-desc: "\f0dd"; -@fa-var-sort-down: "\f0dd"; -@fa-var-sort-numeric-asc: "\f162"; -@fa-var-sort-numeric-desc: "\f163"; -@fa-var-sort-up: "\f0de"; -@fa-var-soundcloud: "\f1be"; -@fa-var-space-shuttle: "\f197"; -@fa-var-spinner: "\f110"; -@fa-var-spoon: "\f1b1"; -@fa-var-spotify: "\f1bc"; -@fa-var-square: "\f0c8"; -@fa-var-square-o: "\f096"; -@fa-var-stack-exchange: "\f18d"; -@fa-var-stack-overflow: "\f16c"; -@fa-var-star: "\f005"; -@fa-var-star-half: "\f089"; -@fa-var-star-half-empty: "\f123"; -@fa-var-star-half-full: "\f123"; -@fa-var-star-half-o: "\f123"; -@fa-var-star-o: "\f006"; -@fa-var-steam: "\f1b6"; -@fa-var-steam-square: "\f1b7"; -@fa-var-step-backward: "\f048"; -@fa-var-step-forward: "\f051"; -@fa-var-stethoscope: "\f0f1"; -@fa-var-stop: "\f04d"; -@fa-var-strikethrough: "\f0cc"; -@fa-var-stumbleupon: "\f1a4"; -@fa-var-stumbleupon-circle: "\f1a3"; -@fa-var-subscript: "\f12c"; -@fa-var-suitcase: "\f0f2"; -@fa-var-sun-o: "\f185"; -@fa-var-superscript: "\f12b"; -@fa-var-support: "\f1cd"; -@fa-var-table: "\f0ce"; -@fa-var-tablet: "\f10a"; -@fa-var-tachometer: "\f0e4"; -@fa-var-tag: "\f02b"; -@fa-var-tags: "\f02c"; -@fa-var-tasks: "\f0ae"; -@fa-var-taxi: "\f1ba"; -@fa-var-tencent-weibo: "\f1d5"; -@fa-var-terminal: "\f120"; -@fa-var-text-height: "\f034"; -@fa-var-text-width: "\f035"; -@fa-var-th: "\f00a"; -@fa-var-th-large: "\f009"; -@fa-var-th-list: "\f00b"; -@fa-var-thumb-tack: "\f08d"; -@fa-var-thumbs-down: "\f165"; -@fa-var-thumbs-o-down: "\f088"; -@fa-var-thumbs-o-up: "\f087"; -@fa-var-thumbs-up: "\f164"; -@fa-var-ticket: "\f145"; -@fa-var-times: "\f00d"; -@fa-var-times-circle: "\f057"; -@fa-var-times-circle-o: "\f05c"; -@fa-var-tint: "\f043"; -@fa-var-toggle-down: "\f150"; -@fa-var-toggle-left: "\f191"; -@fa-var-toggle-off: "\f204"; -@fa-var-toggle-on: "\f205"; -@fa-var-toggle-right: "\f152"; -@fa-var-toggle-up: "\f151"; -@fa-var-trash: "\f1f8"; -@fa-var-trash-o: "\f014"; -@fa-var-tree: "\f1bb"; -@fa-var-trello: "\f181"; -@fa-var-trophy: "\f091"; -@fa-var-truck: "\f0d1"; -@fa-var-try: "\f195"; -@fa-var-tty: "\f1e4"; -@fa-var-tumblr: "\f173"; -@fa-var-tumblr-square: "\f174"; -@fa-var-turkish-lira: "\f195"; -@fa-var-twitch: "\f1e8"; -@fa-var-twitter: "\f099"; -@fa-var-twitter-square: "\f081"; -@fa-var-umbrella: "\f0e9"; -@fa-var-underline: "\f0cd"; -@fa-var-undo: "\f0e2"; -@fa-var-university: "\f19c"; -@fa-var-unlink: "\f127"; -@fa-var-unlock: "\f09c"; -@fa-var-unlock-alt: "\f13e"; -@fa-var-unsorted: "\f0dc"; -@fa-var-upload: "\f093"; -@fa-var-usd: "\f155"; -@fa-var-user: "\f007"; -@fa-var-user-md: "\f0f0"; -@fa-var-users: "\f0c0"; -@fa-var-video-camera: "\f03d"; -@fa-var-vimeo-square: "\f194"; -@fa-var-vine: "\f1ca"; -@fa-var-vk: "\f189"; -@fa-var-volume-down: "\f027"; -@fa-var-volume-off: "\f026"; -@fa-var-volume-up: "\f028"; -@fa-var-warning: "\f071"; -@fa-var-wechat: "\f1d7"; -@fa-var-weibo: "\f18a"; -@fa-var-weixin: "\f1d7"; -@fa-var-wheelchair: "\f193"; -@fa-var-wifi: "\f1eb"; -@fa-var-windows: "\f17a"; -@fa-var-won: "\f159"; -@fa-var-wordpress: "\f19a"; -@fa-var-wrench: "\f0ad"; -@fa-var-xing: "\f168"; -@fa-var-xing-square: "\f169"; -@fa-var-yahoo: "\f19e"; -@fa-var-yelp: "\f1e9"; -@fa-var-yen: "\f157"; -@fa-var-youtube: "\f167"; -@fa-var-youtube-play: "\f16a"; -@fa-var-youtube-square: "\f166"; - diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_bordered-pulled.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_bordered-pulled.scss deleted file mode 100644 index 904a09c9..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_bordered-pulled.scss +++ /dev/null @@ -1,16 +0,0 @@ -// Bordered & Pulled -// ------------------------- - -.#{$fa-css-prefix}-border { - padding: .2em .25em .15em; - border: solid .08em $fa-border-color; - border-radius: .1em; -} - -.pull-right { float: right; } -.pull-left { float: left; } - -.#{$fa-css-prefix} { - &.pull-left { margin-right: .3em; } - &.pull-right { margin-left: .3em; } -} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_core.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_core.scss deleted file mode 100644 index a0aa30e9..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_core.scss +++ /dev/null @@ -1,11 +0,0 @@ -// Base Class Definition -// ------------------------- - -.#{$fa-css-prefix} { - display: inline-block; - font: normal normal normal 14px/1 FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_fixed-width.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_fixed-width.scss deleted file mode 100644 index b01670a9..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_fixed-width.scss +++ /dev/null @@ -1,6 +0,0 @@ -// Fixed Width Icons -// ------------------------- -.#{$fa-css-prefix}-fw { - width: (18em / 14); - text-align: center; -} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_icons.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_icons.scss deleted file mode 100644 index f9d38e32..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_icons.scss +++ /dev/null @@ -1,552 +0,0 @@ -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ - -.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; } -.#{$fa-css-prefix}-music:before { content: $fa-var-music; } -.#{$fa-css-prefix}-search:before { content: $fa-var-search; } -.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; } -.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; } -.#{$fa-css-prefix}-star:before { content: $fa-var-star; } -.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; } -.#{$fa-css-prefix}-user:before { content: $fa-var-user; } -.#{$fa-css-prefix}-film:before { content: $fa-var-film; } -.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; } -.#{$fa-css-prefix}-th:before { content: $fa-var-th; } -.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; } -.#{$fa-css-prefix}-check:before { content: $fa-var-check; } -.#{$fa-css-prefix}-remove:before, -.#{$fa-css-prefix}-close:before, -.#{$fa-css-prefix}-times:before { content: $fa-var-times; } -.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; } -.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; } -.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; } -.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; } -.#{$fa-css-prefix}-gear:before, -.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; } -.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; } -.#{$fa-css-prefix}-home:before { content: $fa-var-home; } -.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; } -.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; } -.#{$fa-css-prefix}-road:before { content: $fa-var-road; } -.#{$fa-css-prefix}-download:before { content: $fa-var-download; } -.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; } -.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; } -.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; } -.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; } -.#{$fa-css-prefix}-rotate-right:before, -.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; } -.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; } -.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; } -.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; } -.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; } -.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; } -.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; } -.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; } -.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; } -.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; } -.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; } -.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; } -.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; } -.#{$fa-css-prefix}-book:before { content: $fa-var-book; } -.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; } -.#{$fa-css-prefix}-print:before { content: $fa-var-print; } -.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; } -.#{$fa-css-prefix}-font:before { content: $fa-var-font; } -.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; } -.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; } -.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; } -.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; } -.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; } -.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; } -.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; } -.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; } -.#{$fa-css-prefix}-list:before { content: $fa-var-list; } -.#{$fa-css-prefix}-dedent:before, -.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; } -.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; } -.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; } -.#{$fa-css-prefix}-photo:before, -.#{$fa-css-prefix}-image:before, -.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; } -.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; } -.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; } -.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; } -.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; } -.#{$fa-css-prefix}-edit:before, -.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; } -.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; } -.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; } -.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; } -.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; } -.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; } -.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; } -.#{$fa-css-prefix}-play:before { content: $fa-var-play; } -.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; } -.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; } -.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; } -.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; } -.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; } -.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; } -.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; } -.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; } -.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; } -.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; } -.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; } -.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; } -.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; } -.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; } -.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; } -.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; } -.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; } -.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; } -.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; } -.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; } -.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; } -.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; } -.#{$fa-css-prefix}-mail-forward:before, -.#{$fa-css-prefix}-share:before { content: $fa-var-share; } -.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; } -.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; } -.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; } -.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; } -.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; } -.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; } -.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; } -.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; } -.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; } -.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; } -.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; } -.#{$fa-css-prefix}-warning:before, -.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; } -.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; } -.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; } -.#{$fa-css-prefix}-random:before { content: $fa-var-random; } -.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; } -.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; } -.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; } -.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; } -.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; } -.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; } -.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; } -.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; } -.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; } -.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; } -.#{$fa-css-prefix}-bar-chart-o:before, -.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; } -.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; } -.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; } -.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; } -.#{$fa-css-prefix}-key:before { content: $fa-var-key; } -.#{$fa-css-prefix}-gears:before, -.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; } -.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; } -.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; } -.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; } -.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; } -.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; } -.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; } -.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; } -.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; } -.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; } -.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; } -.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; } -.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; } -.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; } -.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; } -.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; } -.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; } -.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; } -.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; } -.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; } -.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; } -.#{$fa-css-prefix}-github:before { content: $fa-var-github; } -.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; } -.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; } -.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; } -.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; } -.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; } -.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; } -.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; } -.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; } -.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; } -.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; } -.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; } -.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; } -.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; } -.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; } -.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; } -.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; } -.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; } -.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; } -.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; } -.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; } -.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; } -.#{$fa-css-prefix}-group:before, -.#{$fa-css-prefix}-users:before { content: $fa-var-users; } -.#{$fa-css-prefix}-chain:before, -.#{$fa-css-prefix}-link:before { content: $fa-var-link; } -.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; } -.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; } -.#{$fa-css-prefix}-cut:before, -.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; } -.#{$fa-css-prefix}-copy:before, -.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; } -.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; } -.#{$fa-css-prefix}-save:before, -.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; } -.#{$fa-css-prefix}-square:before { content: $fa-var-square; } -.#{$fa-css-prefix}-navicon:before, -.#{$fa-css-prefix}-reorder:before, -.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; } -.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; } -.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; } -.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; } -.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; } -.#{$fa-css-prefix}-table:before { content: $fa-var-table; } -.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; } -.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; } -.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; } -.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; } -.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; } -.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; } -.#{$fa-css-prefix}-money:before { content: $fa-var-money; } -.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; } -.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; } -.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; } -.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; } -.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; } -.#{$fa-css-prefix}-unsorted:before, -.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; } -.#{$fa-css-prefix}-sort-down:before, -.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; } -.#{$fa-css-prefix}-sort-up:before, -.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; } -.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; } -.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; } -.#{$fa-css-prefix}-rotate-left:before, -.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; } -.#{$fa-css-prefix}-legal:before, -.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; } -.#{$fa-css-prefix}-dashboard:before, -.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; } -.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; } -.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; } -.#{$fa-css-prefix}-flash:before, -.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; } -.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; } -.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; } -.#{$fa-css-prefix}-paste:before, -.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; } -.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; } -.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; } -.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; } -.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; } -.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; } -.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; } -.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; } -.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; } -.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; } -.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; } -.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; } -.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; } -.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; } -.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; } -.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; } -.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; } -.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; } -.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; } -.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; } -.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; } -.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; } -.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; } -.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; } -.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; } -.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; } -.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; } -.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; } -.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; } -.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; } -.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; } -.#{$fa-css-prefix}-mobile-phone:before, -.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; } -.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; } -.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; } -.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; } -.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; } -.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; } -.#{$fa-css-prefix}-mail-reply:before, -.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; } -.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; } -.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; } -.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; } -.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; } -.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; } -.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; } -.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; } -.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; } -.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; } -.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; } -.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; } -.#{$fa-css-prefix}-code:before { content: $fa-var-code; } -.#{$fa-css-prefix}-mail-reply-all:before, -.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; } -.#{$fa-css-prefix}-star-half-empty:before, -.#{$fa-css-prefix}-star-half-full:before, -.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; } -.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; } -.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; } -.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; } -.#{$fa-css-prefix}-unlink:before, -.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; } -.#{$fa-css-prefix}-question:before { content: $fa-var-question; } -.#{$fa-css-prefix}-info:before { content: $fa-var-info; } -.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; } -.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; } -.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; } -.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; } -.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; } -.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; } -.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; } -.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; } -.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; } -.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; } -.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; } -.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; } -.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; } -.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; } -.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; } -.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; } -.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; } -.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; } -.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; } -.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; } -.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; } -.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; } -.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; } -.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; } -.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; } -.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; } -.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; } -.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; } -.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; } -.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; } -.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; } -.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; } -.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; } -.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; } -.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; } -.#{$fa-css-prefix}-toggle-down:before, -.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; } -.#{$fa-css-prefix}-toggle-up:before, -.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; } -.#{$fa-css-prefix}-toggle-right:before, -.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; } -.#{$fa-css-prefix}-euro:before, -.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; } -.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; } -.#{$fa-css-prefix}-dollar:before, -.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; } -.#{$fa-css-prefix}-rupee:before, -.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; } -.#{$fa-css-prefix}-cny:before, -.#{$fa-css-prefix}-rmb:before, -.#{$fa-css-prefix}-yen:before, -.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; } -.#{$fa-css-prefix}-ruble:before, -.#{$fa-css-prefix}-rouble:before, -.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; } -.#{$fa-css-prefix}-won:before, -.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; } -.#{$fa-css-prefix}-bitcoin:before, -.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; } -.#{$fa-css-prefix}-file:before { content: $fa-var-file; } -.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; } -.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; } -.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; } -.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; } -.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; } -.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; } -.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; } -.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; } -.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; } -.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; } -.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; } -.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; } -.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; } -.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; } -.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; } -.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; } -.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; } -.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; } -.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; } -.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; } -.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; } -.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; } -.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; } -.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; } -.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; } -.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; } -.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; } -.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; } -.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; } -.#{$fa-css-prefix}-android:before { content: $fa-var-android; } -.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; } -.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; } -.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; } -.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; } -.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; } -.#{$fa-css-prefix}-female:before { content: $fa-var-female; } -.#{$fa-css-prefix}-male:before { content: $fa-var-male; } -.#{$fa-css-prefix}-gittip:before { content: $fa-var-gittip; } -.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; } -.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; } -.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; } -.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; } -.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; } -.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; } -.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; } -.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; } -.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; } -.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; } -.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; } -.#{$fa-css-prefix}-toggle-left:before, -.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; } -.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; } -.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; } -.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; } -.#{$fa-css-prefix}-turkish-lira:before, -.#{$fa-css-prefix}-try:before { content: $fa-var-try; } -.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; } -.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; } -.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; } -.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; } -.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; } -.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; } -.#{$fa-css-prefix}-institution:before, -.#{$fa-css-prefix}-bank:before, -.#{$fa-css-prefix}-university:before { content: $fa-var-university; } -.#{$fa-css-prefix}-mortar-board:before, -.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; } -.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; } -.#{$fa-css-prefix}-google:before { content: $fa-var-google; } -.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; } -.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; } -.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; } -.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; } -.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; } -.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; } -.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; } -.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; } -.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; } -.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; } -.#{$fa-css-prefix}-language:before { content: $fa-var-language; } -.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; } -.#{$fa-css-prefix}-building:before { content: $fa-var-building; } -.#{$fa-css-prefix}-child:before { content: $fa-var-child; } -.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; } -.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; } -.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; } -.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; } -.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; } -.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; } -.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; } -.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; } -.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; } -.#{$fa-css-prefix}-automobile:before, -.#{$fa-css-prefix}-car:before { content: $fa-var-car; } -.#{$fa-css-prefix}-cab:before, -.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; } -.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; } -.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; } -.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; } -.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; } -.#{$fa-css-prefix}-database:before { content: $fa-var-database; } -.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; } -.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; } -.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; } -.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; } -.#{$fa-css-prefix}-file-photo-o:before, -.#{$fa-css-prefix}-file-picture-o:before, -.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; } -.#{$fa-css-prefix}-file-zip-o:before, -.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; } -.#{$fa-css-prefix}-file-sound-o:before, -.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; } -.#{$fa-css-prefix}-file-movie-o:before, -.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; } -.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; } -.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; } -.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; } -.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; } -.#{$fa-css-prefix}-life-bouy:before, -.#{$fa-css-prefix}-life-buoy:before, -.#{$fa-css-prefix}-life-saver:before, -.#{$fa-css-prefix}-support:before, -.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; } -.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; } -.#{$fa-css-prefix}-ra:before, -.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; } -.#{$fa-css-prefix}-ge:before, -.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; } -.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; } -.#{$fa-css-prefix}-git:before { content: $fa-var-git; } -.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; } -.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; } -.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; } -.#{$fa-css-prefix}-wechat:before, -.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; } -.#{$fa-css-prefix}-send:before, -.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; } -.#{$fa-css-prefix}-send-o:before, -.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; } -.#{$fa-css-prefix}-history:before { content: $fa-var-history; } -.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; } -.#{$fa-css-prefix}-header:before { content: $fa-var-header; } -.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; } -.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; } -.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; } -.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; } -.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; } -.#{$fa-css-prefix}-soccer-ball-o:before, -.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; } -.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; } -.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; } -.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; } -.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; } -.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; } -.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; } -.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; } -.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; } -.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; } -.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; } -.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; } -.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; } -.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; } -.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; } -.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; } -.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; } -.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; } -.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; } -.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; } -.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; } -.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; } -.#{$fa-css-prefix}-at:before { content: $fa-var-at; } -.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; } -.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; } -.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; } -.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; } -.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; } -.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; } -.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; } -.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; } -.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; } -.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; } -.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; } -.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; } -.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; } -.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; } -.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; } -.#{$fa-css-prefix}-shekel:before, -.#{$fa-css-prefix}-sheqel:before, -.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; } -.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; } diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_larger.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_larger.scss deleted file mode 100644 index 4119795e..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_larger.scss +++ /dev/null @@ -1,13 +0,0 @@ -// Icon Sizes -// ------------------------- - -/* makes the font 33% larger relative to the icon container */ -.#{$fa-css-prefix}-lg { - font-size: (4em / 3); - line-height: (3em / 4); - vertical-align: -15%; -} -.#{$fa-css-prefix}-2x { font-size: 2em; } -.#{$fa-css-prefix}-3x { font-size: 3em; } -.#{$fa-css-prefix}-4x { font-size: 4em; } -.#{$fa-css-prefix}-5x { font-size: 5em; } diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_list.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_list.scss deleted file mode 100644 index 44137d73..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_list.scss +++ /dev/null @@ -1,19 +0,0 @@ -// List Icons -// ------------------------- - -.#{$fa-css-prefix}-ul { - padding-left: 0; - margin-left: $fa-li-width; - list-style-type: none; - > li { position: relative; } -} -.#{$fa-css-prefix}-li { - position: absolute; - left: -$fa-li-width; - width: $fa-li-width; - top: (2em / 14); - text-align: center; - &.#{$fa-css-prefix}-lg { - left: -$fa-li-width + (4em / 14); - } -} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_mixins.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_mixins.scss deleted file mode 100644 index deb0bb34..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_mixins.scss +++ /dev/null @@ -1,25 +0,0 @@ -// Mixins -// -------------------------- - -@mixin fa-icon() { - display: inline-block; - font: normal normal normal 14px/1 FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -@mixin fa-icon-rotate($degrees, $rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); - -webkit-transform: rotate($degrees); - -ms-transform: rotate($degrees); - transform: rotate($degrees); -} - -@mixin fa-icon-flip($horiz, $vert, $rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); - -webkit-transform: scale($horiz, $vert); - -ms-transform: scale($horiz, $vert); - transform: scale($horiz, $vert); -} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_path.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_path.scss deleted file mode 100644 index 2679b071..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_path.scss +++ /dev/null @@ -1,14 +0,0 @@ -/* FONT PATH - * -------------------------- */ - -@font-face { - font-family: 'FontAwesome'; - src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); - src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), - url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), - url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), - url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); - //src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts - font-weight: normal; - font-style: normal; -} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_rotated-flipped.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_rotated-flipped.scss deleted file mode 100644 index ff0988aa..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_rotated-flipped.scss +++ /dev/null @@ -1,20 +0,0 @@ -// Rotated & Flipped Icons -// ------------------------- - -.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } -.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } -.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } - -.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } -.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } - -// Hook for IE8-9 -// ------------------------- - -:root .#{$fa-css-prefix}-rotate-90, -:root .#{$fa-css-prefix}-rotate-180, -:root .#{$fa-css-prefix}-rotate-270, -:root .#{$fa-css-prefix}-flip-horizontal, -:root .#{$fa-css-prefix}-flip-vertical { - filter: none; -} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_spinning.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_spinning.scss deleted file mode 100644 index 1c700579..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_spinning.scss +++ /dev/null @@ -1,29 +0,0 @@ -// Spinning Icons -// -------------------------- - -.#{$fa-css-prefix}-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} - -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_stacked.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_stacked.scss deleted file mode 100644 index 5d65d0ab..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_stacked.scss +++ /dev/null @@ -1,20 +0,0 @@ -// Stacked Icons -// ------------------------- - -.#{$fa-css-prefix}-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.#{$fa-css-prefix}-stack-1x { line-height: inherit; } -.#{$fa-css-prefix}-stack-2x { font-size: 2em; } -.#{$fa-css-prefix}-inverse { color: $fa-inverse; } diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_variables.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_variables.scss deleted file mode 100644 index fd158494..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_variables.scss +++ /dev/null @@ -1,561 +0,0 @@ -// Variables -// -------------------------- - -$fa-font-path: "../fonts" !default; -//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts" !default; // for referencing Bootstrap CDN font files directly -$fa-css-prefix: fa !default; -$fa-version: "4.2.0" !default; -$fa-border-color: #eee !default; -$fa-inverse: #fff !default; -$fa-li-width: (30em / 14) !default; - -$fa-var-adjust: "\f042"; -$fa-var-adn: "\f170"; -$fa-var-align-center: "\f037"; -$fa-var-align-justify: "\f039"; -$fa-var-align-left: "\f036"; -$fa-var-align-right: "\f038"; -$fa-var-ambulance: "\f0f9"; -$fa-var-anchor: "\f13d"; -$fa-var-android: "\f17b"; -$fa-var-angellist: "\f209"; -$fa-var-angle-double-down: "\f103"; -$fa-var-angle-double-left: "\f100"; -$fa-var-angle-double-right: "\f101"; -$fa-var-angle-double-up: "\f102"; -$fa-var-angle-down: "\f107"; -$fa-var-angle-left: "\f104"; -$fa-var-angle-right: "\f105"; -$fa-var-angle-up: "\f106"; -$fa-var-apple: "\f179"; -$fa-var-archive: "\f187"; -$fa-var-area-chart: "\f1fe"; -$fa-var-arrow-circle-down: "\f0ab"; -$fa-var-arrow-circle-left: "\f0a8"; -$fa-var-arrow-circle-o-down: "\f01a"; -$fa-var-arrow-circle-o-left: "\f190"; -$fa-var-arrow-circle-o-right: "\f18e"; -$fa-var-arrow-circle-o-up: "\f01b"; -$fa-var-arrow-circle-right: "\f0a9"; -$fa-var-arrow-circle-up: "\f0aa"; -$fa-var-arrow-down: "\f063"; -$fa-var-arrow-left: "\f060"; -$fa-var-arrow-right: "\f061"; -$fa-var-arrow-up: "\f062"; -$fa-var-arrows: "\f047"; -$fa-var-arrows-alt: "\f0b2"; -$fa-var-arrows-h: "\f07e"; -$fa-var-arrows-v: "\f07d"; -$fa-var-asterisk: "\f069"; -$fa-var-at: "\f1fa"; -$fa-var-automobile: "\f1b9"; -$fa-var-backward: "\f04a"; -$fa-var-ban: "\f05e"; -$fa-var-bank: "\f19c"; -$fa-var-bar-chart: "\f080"; -$fa-var-bar-chart-o: "\f080"; -$fa-var-barcode: "\f02a"; -$fa-var-bars: "\f0c9"; -$fa-var-beer: "\f0fc"; -$fa-var-behance: "\f1b4"; -$fa-var-behance-square: "\f1b5"; -$fa-var-bell: "\f0f3"; -$fa-var-bell-o: "\f0a2"; -$fa-var-bell-slash: "\f1f6"; -$fa-var-bell-slash-o: "\f1f7"; -$fa-var-bicycle: "\f206"; -$fa-var-binoculars: "\f1e5"; -$fa-var-birthday-cake: "\f1fd"; -$fa-var-bitbucket: "\f171"; -$fa-var-bitbucket-square: "\f172"; -$fa-var-bitcoin: "\f15a"; -$fa-var-bold: "\f032"; -$fa-var-bolt: "\f0e7"; -$fa-var-bomb: "\f1e2"; -$fa-var-book: "\f02d"; -$fa-var-bookmark: "\f02e"; -$fa-var-bookmark-o: "\f097"; -$fa-var-briefcase: "\f0b1"; -$fa-var-btc: "\f15a"; -$fa-var-bug: "\f188"; -$fa-var-building: "\f1ad"; -$fa-var-building-o: "\f0f7"; -$fa-var-bullhorn: "\f0a1"; -$fa-var-bullseye: "\f140"; -$fa-var-bus: "\f207"; -$fa-var-cab: "\f1ba"; -$fa-var-calculator: "\f1ec"; -$fa-var-calendar: "\f073"; -$fa-var-calendar-o: "\f133"; -$fa-var-camera: "\f030"; -$fa-var-camera-retro: "\f083"; -$fa-var-car: "\f1b9"; -$fa-var-caret-down: "\f0d7"; -$fa-var-caret-left: "\f0d9"; -$fa-var-caret-right: "\f0da"; -$fa-var-caret-square-o-down: "\f150"; -$fa-var-caret-square-o-left: "\f191"; -$fa-var-caret-square-o-right: "\f152"; -$fa-var-caret-square-o-up: "\f151"; -$fa-var-caret-up: "\f0d8"; -$fa-var-cc: "\f20a"; -$fa-var-cc-amex: "\f1f3"; -$fa-var-cc-discover: "\f1f2"; -$fa-var-cc-mastercard: "\f1f1"; -$fa-var-cc-paypal: "\f1f4"; -$fa-var-cc-stripe: "\f1f5"; -$fa-var-cc-visa: "\f1f0"; -$fa-var-certificate: "\f0a3"; -$fa-var-chain: "\f0c1"; -$fa-var-chain-broken: "\f127"; -$fa-var-check: "\f00c"; -$fa-var-check-circle: "\f058"; -$fa-var-check-circle-o: "\f05d"; -$fa-var-check-square: "\f14a"; -$fa-var-check-square-o: "\f046"; -$fa-var-chevron-circle-down: "\f13a"; -$fa-var-chevron-circle-left: "\f137"; -$fa-var-chevron-circle-right: "\f138"; -$fa-var-chevron-circle-up: "\f139"; -$fa-var-chevron-down: "\f078"; -$fa-var-chevron-left: "\f053"; -$fa-var-chevron-right: "\f054"; -$fa-var-chevron-up: "\f077"; -$fa-var-child: "\f1ae"; -$fa-var-circle: "\f111"; -$fa-var-circle-o: "\f10c"; -$fa-var-circle-o-notch: "\f1ce"; -$fa-var-circle-thin: "\f1db"; -$fa-var-clipboard: "\f0ea"; -$fa-var-clock-o: "\f017"; -$fa-var-close: "\f00d"; -$fa-var-cloud: "\f0c2"; -$fa-var-cloud-download: "\f0ed"; -$fa-var-cloud-upload: "\f0ee"; -$fa-var-cny: "\f157"; -$fa-var-code: "\f121"; -$fa-var-code-fork: "\f126"; -$fa-var-codepen: "\f1cb"; -$fa-var-coffee: "\f0f4"; -$fa-var-cog: "\f013"; -$fa-var-cogs: "\f085"; -$fa-var-columns: "\f0db"; -$fa-var-comment: "\f075"; -$fa-var-comment-o: "\f0e5"; -$fa-var-comments: "\f086"; -$fa-var-comments-o: "\f0e6"; -$fa-var-compass: "\f14e"; -$fa-var-compress: "\f066"; -$fa-var-copy: "\f0c5"; -$fa-var-copyright: "\f1f9"; -$fa-var-credit-card: "\f09d"; -$fa-var-crop: "\f125"; -$fa-var-crosshairs: "\f05b"; -$fa-var-css3: "\f13c"; -$fa-var-cube: "\f1b2"; -$fa-var-cubes: "\f1b3"; -$fa-var-cut: "\f0c4"; -$fa-var-cutlery: "\f0f5"; -$fa-var-dashboard: "\f0e4"; -$fa-var-database: "\f1c0"; -$fa-var-dedent: "\f03b"; -$fa-var-delicious: "\f1a5"; -$fa-var-desktop: "\f108"; -$fa-var-deviantart: "\f1bd"; -$fa-var-digg: "\f1a6"; -$fa-var-dollar: "\f155"; -$fa-var-dot-circle-o: "\f192"; -$fa-var-download: "\f019"; -$fa-var-dribbble: "\f17d"; -$fa-var-dropbox: "\f16b"; -$fa-var-drupal: "\f1a9"; -$fa-var-edit: "\f044"; -$fa-var-eject: "\f052"; -$fa-var-ellipsis-h: "\f141"; -$fa-var-ellipsis-v: "\f142"; -$fa-var-empire: "\f1d1"; -$fa-var-envelope: "\f0e0"; -$fa-var-envelope-o: "\f003"; -$fa-var-envelope-square: "\f199"; -$fa-var-eraser: "\f12d"; -$fa-var-eur: "\f153"; -$fa-var-euro: "\f153"; -$fa-var-exchange: "\f0ec"; -$fa-var-exclamation: "\f12a"; -$fa-var-exclamation-circle: "\f06a"; -$fa-var-exclamation-triangle: "\f071"; -$fa-var-expand: "\f065"; -$fa-var-external-link: "\f08e"; -$fa-var-external-link-square: "\f14c"; -$fa-var-eye: "\f06e"; -$fa-var-eye-slash: "\f070"; -$fa-var-eyedropper: "\f1fb"; -$fa-var-facebook: "\f09a"; -$fa-var-facebook-square: "\f082"; -$fa-var-fast-backward: "\f049"; -$fa-var-fast-forward: "\f050"; -$fa-var-fax: "\f1ac"; -$fa-var-female: "\f182"; -$fa-var-fighter-jet: "\f0fb"; -$fa-var-file: "\f15b"; -$fa-var-file-archive-o: "\f1c6"; -$fa-var-file-audio-o: "\f1c7"; -$fa-var-file-code-o: "\f1c9"; -$fa-var-file-excel-o: "\f1c3"; -$fa-var-file-image-o: "\f1c5"; -$fa-var-file-movie-o: "\f1c8"; -$fa-var-file-o: "\f016"; -$fa-var-file-pdf-o: "\f1c1"; -$fa-var-file-photo-o: "\f1c5"; -$fa-var-file-picture-o: "\f1c5"; -$fa-var-file-powerpoint-o: "\f1c4"; -$fa-var-file-sound-o: "\f1c7"; -$fa-var-file-text: "\f15c"; -$fa-var-file-text-o: "\f0f6"; -$fa-var-file-video-o: "\f1c8"; -$fa-var-file-word-o: "\f1c2"; -$fa-var-file-zip-o: "\f1c6"; -$fa-var-files-o: "\f0c5"; -$fa-var-film: "\f008"; -$fa-var-filter: "\f0b0"; -$fa-var-fire: "\f06d"; -$fa-var-fire-extinguisher: "\f134"; -$fa-var-flag: "\f024"; -$fa-var-flag-checkered: "\f11e"; -$fa-var-flag-o: "\f11d"; -$fa-var-flash: "\f0e7"; -$fa-var-flask: "\f0c3"; -$fa-var-flickr: "\f16e"; -$fa-var-floppy-o: "\f0c7"; -$fa-var-folder: "\f07b"; -$fa-var-folder-o: "\f114"; -$fa-var-folder-open: "\f07c"; -$fa-var-folder-open-o: "\f115"; -$fa-var-font: "\f031"; -$fa-var-forward: "\f04e"; -$fa-var-foursquare: "\f180"; -$fa-var-frown-o: "\f119"; -$fa-var-futbol-o: "\f1e3"; -$fa-var-gamepad: "\f11b"; -$fa-var-gavel: "\f0e3"; -$fa-var-gbp: "\f154"; -$fa-var-ge: "\f1d1"; -$fa-var-gear: "\f013"; -$fa-var-gears: "\f085"; -$fa-var-gift: "\f06b"; -$fa-var-git: "\f1d3"; -$fa-var-git-square: "\f1d2"; -$fa-var-github: "\f09b"; -$fa-var-github-alt: "\f113"; -$fa-var-github-square: "\f092"; -$fa-var-gittip: "\f184"; -$fa-var-glass: "\f000"; -$fa-var-globe: "\f0ac"; -$fa-var-google: "\f1a0"; -$fa-var-google-plus: "\f0d5"; -$fa-var-google-plus-square: "\f0d4"; -$fa-var-google-wallet: "\f1ee"; -$fa-var-graduation-cap: "\f19d"; -$fa-var-group: "\f0c0"; -$fa-var-h-square: "\f0fd"; -$fa-var-hacker-news: "\f1d4"; -$fa-var-hand-o-down: "\f0a7"; -$fa-var-hand-o-left: "\f0a5"; -$fa-var-hand-o-right: "\f0a4"; -$fa-var-hand-o-up: "\f0a6"; -$fa-var-hdd-o: "\f0a0"; -$fa-var-header: "\f1dc"; -$fa-var-headphones: "\f025"; -$fa-var-heart: "\f004"; -$fa-var-heart-o: "\f08a"; -$fa-var-history: "\f1da"; -$fa-var-home: "\f015"; -$fa-var-hospital-o: "\f0f8"; -$fa-var-html5: "\f13b"; -$fa-var-ils: "\f20b"; -$fa-var-image: "\f03e"; -$fa-var-inbox: "\f01c"; -$fa-var-indent: "\f03c"; -$fa-var-info: "\f129"; -$fa-var-info-circle: "\f05a"; -$fa-var-inr: "\f156"; -$fa-var-instagram: "\f16d"; -$fa-var-institution: "\f19c"; -$fa-var-ioxhost: "\f208"; -$fa-var-italic: "\f033"; -$fa-var-joomla: "\f1aa"; -$fa-var-jpy: "\f157"; -$fa-var-jsfiddle: "\f1cc"; -$fa-var-key: "\f084"; -$fa-var-keyboard-o: "\f11c"; -$fa-var-krw: "\f159"; -$fa-var-language: "\f1ab"; -$fa-var-laptop: "\f109"; -$fa-var-lastfm: "\f202"; -$fa-var-lastfm-square: "\f203"; -$fa-var-leaf: "\f06c"; -$fa-var-legal: "\f0e3"; -$fa-var-lemon-o: "\f094"; -$fa-var-level-down: "\f149"; -$fa-var-level-up: "\f148"; -$fa-var-life-bouy: "\f1cd"; -$fa-var-life-buoy: "\f1cd"; -$fa-var-life-ring: "\f1cd"; -$fa-var-life-saver: "\f1cd"; -$fa-var-lightbulb-o: "\f0eb"; -$fa-var-line-chart: "\f201"; -$fa-var-link: "\f0c1"; -$fa-var-linkedin: "\f0e1"; -$fa-var-linkedin-square: "\f08c"; -$fa-var-linux: "\f17c"; -$fa-var-list: "\f03a"; -$fa-var-list-alt: "\f022"; -$fa-var-list-ol: "\f0cb"; -$fa-var-list-ul: "\f0ca"; -$fa-var-location-arrow: "\f124"; -$fa-var-lock: "\f023"; -$fa-var-long-arrow-down: "\f175"; -$fa-var-long-arrow-left: "\f177"; -$fa-var-long-arrow-right: "\f178"; -$fa-var-long-arrow-up: "\f176"; -$fa-var-magic: "\f0d0"; -$fa-var-magnet: "\f076"; -$fa-var-mail-forward: "\f064"; -$fa-var-mail-reply: "\f112"; -$fa-var-mail-reply-all: "\f122"; -$fa-var-male: "\f183"; -$fa-var-map-marker: "\f041"; -$fa-var-maxcdn: "\f136"; -$fa-var-meanpath: "\f20c"; -$fa-var-medkit: "\f0fa"; -$fa-var-meh-o: "\f11a"; -$fa-var-microphone: "\f130"; -$fa-var-microphone-slash: "\f131"; -$fa-var-minus: "\f068"; -$fa-var-minus-circle: "\f056"; -$fa-var-minus-square: "\f146"; -$fa-var-minus-square-o: "\f147"; -$fa-var-mobile: "\f10b"; -$fa-var-mobile-phone: "\f10b"; -$fa-var-money: "\f0d6"; -$fa-var-moon-o: "\f186"; -$fa-var-mortar-board: "\f19d"; -$fa-var-music: "\f001"; -$fa-var-navicon: "\f0c9"; -$fa-var-newspaper-o: "\f1ea"; -$fa-var-openid: "\f19b"; -$fa-var-outdent: "\f03b"; -$fa-var-pagelines: "\f18c"; -$fa-var-paint-brush: "\f1fc"; -$fa-var-paper-plane: "\f1d8"; -$fa-var-paper-plane-o: "\f1d9"; -$fa-var-paperclip: "\f0c6"; -$fa-var-paragraph: "\f1dd"; -$fa-var-paste: "\f0ea"; -$fa-var-pause: "\f04c"; -$fa-var-paw: "\f1b0"; -$fa-var-paypal: "\f1ed"; -$fa-var-pencil: "\f040"; -$fa-var-pencil-square: "\f14b"; -$fa-var-pencil-square-o: "\f044"; -$fa-var-phone: "\f095"; -$fa-var-phone-square: "\f098"; -$fa-var-photo: "\f03e"; -$fa-var-picture-o: "\f03e"; -$fa-var-pie-chart: "\f200"; -$fa-var-pied-piper: "\f1a7"; -$fa-var-pied-piper-alt: "\f1a8"; -$fa-var-pinterest: "\f0d2"; -$fa-var-pinterest-square: "\f0d3"; -$fa-var-plane: "\f072"; -$fa-var-play: "\f04b"; -$fa-var-play-circle: "\f144"; -$fa-var-play-circle-o: "\f01d"; -$fa-var-plug: "\f1e6"; -$fa-var-plus: "\f067"; -$fa-var-plus-circle: "\f055"; -$fa-var-plus-square: "\f0fe"; -$fa-var-plus-square-o: "\f196"; -$fa-var-power-off: "\f011"; -$fa-var-print: "\f02f"; -$fa-var-puzzle-piece: "\f12e"; -$fa-var-qq: "\f1d6"; -$fa-var-qrcode: "\f029"; -$fa-var-question: "\f128"; -$fa-var-question-circle: "\f059"; -$fa-var-quote-left: "\f10d"; -$fa-var-quote-right: "\f10e"; -$fa-var-ra: "\f1d0"; -$fa-var-random: "\f074"; -$fa-var-rebel: "\f1d0"; -$fa-var-recycle: "\f1b8"; -$fa-var-reddit: "\f1a1"; -$fa-var-reddit-square: "\f1a2"; -$fa-var-refresh: "\f021"; -$fa-var-remove: "\f00d"; -$fa-var-renren: "\f18b"; -$fa-var-reorder: "\f0c9"; -$fa-var-repeat: "\f01e"; -$fa-var-reply: "\f112"; -$fa-var-reply-all: "\f122"; -$fa-var-retweet: "\f079"; -$fa-var-rmb: "\f157"; -$fa-var-road: "\f018"; -$fa-var-rocket: "\f135"; -$fa-var-rotate-left: "\f0e2"; -$fa-var-rotate-right: "\f01e"; -$fa-var-rouble: "\f158"; -$fa-var-rss: "\f09e"; -$fa-var-rss-square: "\f143"; -$fa-var-rub: "\f158"; -$fa-var-ruble: "\f158"; -$fa-var-rupee: "\f156"; -$fa-var-save: "\f0c7"; -$fa-var-scissors: "\f0c4"; -$fa-var-search: "\f002"; -$fa-var-search-minus: "\f010"; -$fa-var-search-plus: "\f00e"; -$fa-var-send: "\f1d8"; -$fa-var-send-o: "\f1d9"; -$fa-var-share: "\f064"; -$fa-var-share-alt: "\f1e0"; -$fa-var-share-alt-square: "\f1e1"; -$fa-var-share-square: "\f14d"; -$fa-var-share-square-o: "\f045"; -$fa-var-shekel: "\f20b"; -$fa-var-sheqel: "\f20b"; -$fa-var-shield: "\f132"; -$fa-var-shopping-cart: "\f07a"; -$fa-var-sign-in: "\f090"; -$fa-var-sign-out: "\f08b"; -$fa-var-signal: "\f012"; -$fa-var-sitemap: "\f0e8"; -$fa-var-skype: "\f17e"; -$fa-var-slack: "\f198"; -$fa-var-sliders: "\f1de"; -$fa-var-slideshare: "\f1e7"; -$fa-var-smile-o: "\f118"; -$fa-var-soccer-ball-o: "\f1e3"; -$fa-var-sort: "\f0dc"; -$fa-var-sort-alpha-asc: "\f15d"; -$fa-var-sort-alpha-desc: "\f15e"; -$fa-var-sort-amount-asc: "\f160"; -$fa-var-sort-amount-desc: "\f161"; -$fa-var-sort-asc: "\f0de"; -$fa-var-sort-desc: "\f0dd"; -$fa-var-sort-down: "\f0dd"; -$fa-var-sort-numeric-asc: "\f162"; -$fa-var-sort-numeric-desc: "\f163"; -$fa-var-sort-up: "\f0de"; -$fa-var-soundcloud: "\f1be"; -$fa-var-space-shuttle: "\f197"; -$fa-var-spinner: "\f110"; -$fa-var-spoon: "\f1b1"; -$fa-var-spotify: "\f1bc"; -$fa-var-square: "\f0c8"; -$fa-var-square-o: "\f096"; -$fa-var-stack-exchange: "\f18d"; -$fa-var-stack-overflow: "\f16c"; -$fa-var-star: "\f005"; -$fa-var-star-half: "\f089"; -$fa-var-star-half-empty: "\f123"; -$fa-var-star-half-full: "\f123"; -$fa-var-star-half-o: "\f123"; -$fa-var-star-o: "\f006"; -$fa-var-steam: "\f1b6"; -$fa-var-steam-square: "\f1b7"; -$fa-var-step-backward: "\f048"; -$fa-var-step-forward: "\f051"; -$fa-var-stethoscope: "\f0f1"; -$fa-var-stop: "\f04d"; -$fa-var-strikethrough: "\f0cc"; -$fa-var-stumbleupon: "\f1a4"; -$fa-var-stumbleupon-circle: "\f1a3"; -$fa-var-subscript: "\f12c"; -$fa-var-suitcase: "\f0f2"; -$fa-var-sun-o: "\f185"; -$fa-var-superscript: "\f12b"; -$fa-var-support: "\f1cd"; -$fa-var-table: "\f0ce"; -$fa-var-tablet: "\f10a"; -$fa-var-tachometer: "\f0e4"; -$fa-var-tag: "\f02b"; -$fa-var-tags: "\f02c"; -$fa-var-tasks: "\f0ae"; -$fa-var-taxi: "\f1ba"; -$fa-var-tencent-weibo: "\f1d5"; -$fa-var-terminal: "\f120"; -$fa-var-text-height: "\f034"; -$fa-var-text-width: "\f035"; -$fa-var-th: "\f00a"; -$fa-var-th-large: "\f009"; -$fa-var-th-list: "\f00b"; -$fa-var-thumb-tack: "\f08d"; -$fa-var-thumbs-down: "\f165"; -$fa-var-thumbs-o-down: "\f088"; -$fa-var-thumbs-o-up: "\f087"; -$fa-var-thumbs-up: "\f164"; -$fa-var-ticket: "\f145"; -$fa-var-times: "\f00d"; -$fa-var-times-circle: "\f057"; -$fa-var-times-circle-o: "\f05c"; -$fa-var-tint: "\f043"; -$fa-var-toggle-down: "\f150"; -$fa-var-toggle-left: "\f191"; -$fa-var-toggle-off: "\f204"; -$fa-var-toggle-on: "\f205"; -$fa-var-toggle-right: "\f152"; -$fa-var-toggle-up: "\f151"; -$fa-var-trash: "\f1f8"; -$fa-var-trash-o: "\f014"; -$fa-var-tree: "\f1bb"; -$fa-var-trello: "\f181"; -$fa-var-trophy: "\f091"; -$fa-var-truck: "\f0d1"; -$fa-var-try: "\f195"; -$fa-var-tty: "\f1e4"; -$fa-var-tumblr: "\f173"; -$fa-var-tumblr-square: "\f174"; -$fa-var-turkish-lira: "\f195"; -$fa-var-twitch: "\f1e8"; -$fa-var-twitter: "\f099"; -$fa-var-twitter-square: "\f081"; -$fa-var-umbrella: "\f0e9"; -$fa-var-underline: "\f0cd"; -$fa-var-undo: "\f0e2"; -$fa-var-university: "\f19c"; -$fa-var-unlink: "\f127"; -$fa-var-unlock: "\f09c"; -$fa-var-unlock-alt: "\f13e"; -$fa-var-unsorted: "\f0dc"; -$fa-var-upload: "\f093"; -$fa-var-usd: "\f155"; -$fa-var-user: "\f007"; -$fa-var-user-md: "\f0f0"; -$fa-var-users: "\f0c0"; -$fa-var-video-camera: "\f03d"; -$fa-var-vimeo-square: "\f194"; -$fa-var-vine: "\f1ca"; -$fa-var-vk: "\f189"; -$fa-var-volume-down: "\f027"; -$fa-var-volume-off: "\f026"; -$fa-var-volume-up: "\f028"; -$fa-var-warning: "\f071"; -$fa-var-wechat: "\f1d7"; -$fa-var-weibo: "\f18a"; -$fa-var-weixin: "\f1d7"; -$fa-var-wheelchair: "\f193"; -$fa-var-wifi: "\f1eb"; -$fa-var-windows: "\f17a"; -$fa-var-won: "\f159"; -$fa-var-wordpress: "\f19a"; -$fa-var-wrench: "\f0ad"; -$fa-var-xing: "\f168"; -$fa-var-xing-square: "\f169"; -$fa-var-yahoo: "\f19e"; -$fa-var-yelp: "\f1e9"; -$fa-var-yen: "\f157"; -$fa-var-youtube: "\f167"; -$fa-var-youtube-play: "\f16a"; -$fa-var-youtube-square: "\f166"; - diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/font-awesome.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/font-awesome.scss deleted file mode 100644 index 3ca46735..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/font-awesome.scss +++ /dev/null @@ -1,17 +0,0 @@ -/*! - * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ - -@import "variables"; -@import "mixins"; -@import "path"; -@import "core"; -@import "larger"; -@import "fixed-width"; -@import "list"; -@import "bordered-pulled"; -@import "spinning"; -@import "rotated-flipped"; -@import "stacked"; -@import "icons"; diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/freewall/freewall.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/freewall/freewall.js deleted file mode 100644 index 91daa39d..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/freewall/freewall.js +++ /dev/null @@ -1,1306 +0,0 @@ -// created by Minh Nguyen; -// version 1.05; - -(function($) { - - // for zeptojs; - $.isNumeric == null && ($.isNumeric = function(src) { - return src != null && src.constructor === Number; - }); - - $.isFunction == null && ($.isFunction = function(src) { - return src != null && src instanceof Function; - }); - - var $W = $(window); - var $D = $(document); - - var layoutManager = { - // default setting; - defaultConfig: { - animate: false, - cellW: 100, // function(container) {return 100;} - cellH: 100, // function(container) {return 100;} - delay: 0, // slowdown active block; - engine: 'giot', // 'giot' is a person name; - fixSize: null, // resize + adjust = fill gap; - //fixSize: 0, resize but keep ratio = no fill gap; - //fixSize: 1, no resize + no adjust = no fill gap; - gutterX: 15, // width spacing between blocks; - gutterY: 15, // height spacing between blocks; - keepOrder: false, - selector: '> div', - draggable: false, - cacheSize: true, // caches the original size of block; - rightToLeft: false, - bottomToTop: false, - onGapFound: function() {}, - onComplete: function() {}, - onResize: function() {}, - onBlockDrag: function() {}, - onBlockMove: function() {}, - onBlockDrop: function() {}, - onBlockReady: function() {}, - onBlockFinish: function() {}, - onBlockActive: function() {}, - onBlockResize: function() {} - }, - plugin: {}, - totalGrid: 1, - transition: false, - loadBlock: function(item, setting) { - var runtime = setting.runtime; - var gutterX = runtime.gutterX; - var gutterY = runtime.gutterY; - var cellH = runtime.cellH; - var cellW = runtime.cellW; - var block = null; - var $item = $(item); - var active = $item.data("active"); - var fixPos = $item.attr('data-position'); - var fixSize = parseInt($item.attr('data-fixSize')); - var blockId = runtime.lastId++ + '-' + runtime.totalGrid; - - //ignore dragging block; - if ($item.hasClass('fw-float')) return; - $item.attr({id: blockId, 'data-delay': item.index}); - - //remove animation for speed render; - if (setting.animate && this.transition) { - this.setTransition(item, ""); - } - - isNaN(fixSize) && (fixSize = null); - (fixSize == null) && (fixSize = setting.fixSize); - var makeRound = (fixSize >= 1) ? "ceil" : "round"; - // store original size; - - $item.attr('data-height') == null && $item.attr('data-height', $item.height()); - $item.attr('data-width') == null && $item.attr('data-width', $item.width()); - var height = 1 * $item.attr('data-height'); - var width = 1 * $item.attr('data-width'); - - if (!setting.cacheSize) { - item.style.width = ""; - width = $item.width(); - - item.style.height = ""; - height = $item.height(); - } - - var col = !width ? 0 : Math[makeRound]((width + gutterX) / cellW); - var row = !height ? 0 : Math[makeRound]((height + gutterY) / cellH); - - // estimate size; - if (!fixSize && setting.cellH == 'auto') { - $item.width(cellW * col - gutterX); - item.style.height = ""; - height = $item.height(); - row = !height ? 0 : Math.round((height + gutterY) / cellH); - } - - if (!fixSize && setting.cellW == 'auto') { - $item.height(cellH * row - gutterY); - item.style.width = ""; - width = $item.width(); - col = !width ? 0 : Math.round((width + gutterX) / cellW); - } - - // for none resize block; - if ((fixSize != null) && (col > runtime.limitCol || row > runtime.limitRow)) { - block = null; - } else { - // get smallest width and smallest height of block; - // using for image runtime; - row && row < runtime.minHoB && (runtime.minHoB = row); - col && col < runtime.minWoB && (runtime.minWoB = col); - - // get biggest width and biggest height of block; - row > runtime.maxHoB && (runtime.maxHoB = row); - col > runtime.maxWoB && (runtime.maxWoB = col); - - width == 0 && (col = 0); - height == 0 && (row = 0); - - block = { - resize: false, - id: blockId, - width: col, - height: row, - fixSize: fixSize - }; - - // for fix position; - if (fixPos) { - fixPos = fixPos.split("-"); - block.y = 1 * fixPos[0]; - block.x = 1 * fixPos[1]; - block.width = fixSize != null ? col : Math.min(col, runtime.limitCol - block.x); - block.height = fixSize != null ? row : Math.min(row, runtime.limitRow - block.y); - var holeId = block.y + "-" + block.x + "-" + block.width + "-" + block.height; - if (active) { - runtime.holes[holeId] = { - id: block.id, - top: block.y, - left: block.x, - width: block.width, - height: block.height - }; - this.setBlock(block, setting); - } else { - delete runtime.holes[holeId]; - } - - } - } - - // for css animation; - if ($item.attr("data-state") == null) { - $item.attr("data-state", "init"); - } else { - $item.attr("data-state", "move"); - } - - setting.onBlockReady.call(item, block, setting); - - return (fixPos && active) ? null : block; - }, - setBlock: function(block, setting) { - var runtime = setting.runtime; - var gutterX = runtime.gutterX; - var gutterY = runtime.gutterY; - var height = block.height; - var width = block.width; - var cellH = runtime.cellH; - var cellW = runtime.cellW; - var x = block.x; - var y = block.y; - - if (setting.rightToLeft) { - x = runtime.limitCol - x - width; - } - if (setting.bottomToTop) { - y = runtime.limitRow - y - height; - } - - var realBlock = { - fixSize: block.fixSize, - resize: block.resize, - top: y * cellH, - left: x * cellW, - width: cellW * width - gutterX, - height: cellH * height - gutterY - }; - - realBlock.top = 1 * realBlock.top.toFixed(2); - realBlock.left = 1 * realBlock.left.toFixed(2); - realBlock.width = 1 * realBlock.width.toFixed(2); - realBlock.height = 1 * realBlock.height.toFixed(2); - - //runtime.length += 1; - block.id && (runtime.blocks[block.id] = realBlock); - - // for append feature; - return realBlock; - }, - showBlock: function(item, setting) { - var runtime = setting.runtime; - var method = setting.animate && !this.transition ? 'animate' : 'css'; - var block = runtime.blocks[item.id]; - var $item = $(item); - var self = this; - var start = $item.attr("data-state") != "move"; - var trans = start ? "width 0.5s, height 0.5s" : "top 0.5s, left 0.5s, width 0.5s, height 0.5s, opacity 0.5s"; - - item.delay && clearTimeout(item.delay); - //ignore dragging block; - if ($item.hasClass('fw-float')) return; - - // kill the old transition; - self.setTransition(item, ""); - item.style.position = "absolute"; - setting.onBlockActive.call(item, block, setting); - - function action() { - // start to arrange; - start && $item.attr("data-state", "start"); - // add animation by using css3 transition; - if (setting.animate && self.transition) { - self.setTransition(item, trans); - } - - // for hidden block; - if (!block) { - //var position = $item.position(); <= make speed so slow; - var height = parseInt(item.style.height) || 0; - var width = parseInt(item.style.width) || 0; - var left = parseInt(item.style.left) || 0; - var top = parseInt(item.style.top) || 0; - $item[method]({ - left: left + width / 2, - top: top + height / 2, - width: 0, - height: 0, - opacity: 0 - }); - } else { - if (block.fixSize) { - block.height = 1 * $item.attr("data-height"); - block.width = 1 * $item.attr("data-width"); - } - - $item["css"]({ - opacity: 1, - width: block.width, - height: block.height - }); - - // for animating by javascript; - $item[method]({ - top: block.top, - left: block.left - }); - - if ($item.attr('data-nested') != null) { - self.nestedGrid(item, setting); - } - } - - runtime.length -= 1; - - setting.onBlockFinish.call(item, block, setting); - - runtime.length == 0 && setting.onComplete.call(item, block, setting); - } - - block && block.resize && setting.onBlockResize.call(item, block, setting); - - setting.delay > 0 ? (item.delay = setTimeout(action, setting.delay * $item.attr("data-delay"))) : action(); - }, - nestedGrid: function(item, setting) { - var innerWall, $item = $(item), runtime = setting.runtime; - var gutterX = $item.attr("data-gutterX") || setting.gutterX; - var gutterY = $item.attr("data-gutterY") || setting.gutterY; - var method = $item.attr("data-method") || "fitZone"; - var nested = $item.attr('data-nested') || "> div"; - var cellH = $item.attr("data-cellH") || setting.cellH; - var cellW = $item.attr("data-cellW") || setting.cellW; - var block = runtime.blocks[item.id]; - - if (block) { - innerWall = new freewall($item); - innerWall.reset({ - cellH: cellH, - cellW: cellW, - gutterX: 1 * gutterX, - gutterY: 1 * gutterY, - selector: nested, - cacheSize: false - }); - - switch (method) { - case "fitHeight": - innerWall[method](block.height); - break; - case "fitWidth": - innerWall[method](block.width); - break; - case "fitZone": - innerWall[method](block.width, block.height); - break; - } - } - }, - adjustBlock: function(block, setting) { - var runtime = setting.runtime; - var gutterX = runtime.gutterX; - var gutterY = runtime.gutterY; - var $item = $("#" + block.id); - var cellH = runtime.cellH; - var cellW = runtime.cellW; - - if (setting.cellH == 'auto') { - $item.width(block.width * cellW - gutterX); - $item[0].style.height = ""; - block.height = Math.round(($item.height() + gutterY) / cellH); - } - }, - adjustUnit: function(width, height, setting) { - var gutterX = setting.gutterX; - var gutterY = setting.gutterY; - var runtime = setting.runtime; - var cellW = setting.cellW; - var cellH = setting.cellH; - - $.isFunction(cellW) && (cellW = cellW(width)); - cellW = 1 * cellW; - !$.isNumeric(cellW) && (cellW = 1); - - $.isFunction(cellH) && (cellH = cellH(height)); - cellH = 1 * cellH; - !$.isNumeric(cellH) && (cellH = 1); - - if ($.isNumeric(width)) { - // adjust cell width via container; - cellW < 1 && (cellW = cellW * width); - - // estimate total columns; - var limitCol = Math.max(1, Math.floor(width / cellW)); - - // adjust unit size for fit width; - if (!$.isNumeric(gutterX)) { - gutterX = (width - limitCol * cellW) / Math.max(1, (limitCol - 1)); - gutterX = Math.max(0, gutterX); - } - - limitCol = Math.floor((width + gutterX) / cellW); - runtime.cellW = (width + gutterX) / Math.max(limitCol, 1); - runtime.cellS = runtime.cellW / cellW; - runtime.gutterX = gutterX; - runtime.limitCol = limitCol; - } - - if ($.isNumeric(height)) { - // adjust cell height via container; - cellH < 1 && (cellH = cellH * height); - - // estimate total rows; - var limitRow = Math.max(1, Math.floor(height / cellH)); - - // adjust size unit for fit height; - if (!$.isNumeric(gutterY)) { - gutterY = (height - limitRow * cellH) / Math.max(1, (limitRow - 1)); - gutterY = Math.max(0, gutterY); - } - - limitRow = Math.floor((height + gutterY) / cellH); - runtime.cellH = (height + gutterY) / Math.max(limitRow, 1); - runtime.cellS = runtime.cellH / cellH; - runtime.gutterY = gutterY; - runtime.limitRow = limitRow; - } - - if (!$.isNumeric(width)) { - // adjust cell width via cell height; - cellW < 1 && (cellW = runtime.cellH); - runtime.cellW = cellW != 1 ? cellW * runtime.cellS : 1; - runtime.gutterX = gutterX; - runtime.limitCol = 666666; - } - - if (!$.isNumeric(height)) { - // adjust cell height via cell width; - cellH < 1 && (cellH = runtime.cellW); - runtime.cellH = cellH != 1 ? cellH * runtime.cellS : 1; - runtime.gutterY = gutterY; - runtime.limitRow = 666666; - } - }, - resetGrid: function(runtime) { - runtime.blocks = {}; - runtime.length = 0; - runtime.cellH = 0; - runtime.cellW = 0; - runtime.lastId = 1; - runtime.matrix = {}; - runtime.totalCol = 0; - runtime.totalRow = 0; - }, - setDraggable: function(item, option) { - var isTouch = false; - var config = { - startX: 0, //start clientX; - startY: 0, - top: 0, - left: 0, - handle: null, - onDrop: function() {}, - onDrag: function() {}, - onStart: function() {} - }; - - $(item).each(function() { - var setting = $.extend({}, config, option); - var handle = setting.handle || this; - var ele = this; - var $E = $(ele); - var $H = $(handle); - - var posStyle = $E.css("position"); - posStyle != "absolute" && $E.css("position", "relative"); - - - function mouseDown(evt) { - evt.stopPropagation(); - evt = evt.originalEvent; - - if (evt.touches) { - isTouch = true; - evt = evt.changedTouches[0]; - } - - if (evt.button != 2 && evt.which != 3) { - setting.onStart.call(ele, evt); - - setting.startX = evt.clientX; - setting.startY = evt.clientY; - setting.top = parseInt($E.css("top")) || 0; - setting.left = parseInt($E.css("left")) || 0; - - $D.bind("mouseup touchend", mouseUp); - $D.bind("mousemove touchmove", mouseMove); - } - - return false; - }; - - - function mouseMove(evt) { - evt = evt.originalEvent; - isTouch && (evt = evt.changedTouches[0]); - - $E.css({ - top: setting.top - (setting.startY - evt.clientY), - left: setting.left - (setting.startX - evt.clientX) - }); - - setting.onDrag.call(ele, evt); - }; - - function mouseUp(evt) { - evt = evt.originalEvent; - isTouch && (evt = evt.changedTouches[0]); - - setting.onDrop.call(ele, evt); - - $D.unbind("mouseup touchend", mouseUp); - $D.unbind("mousemove touchmove", mouseMove); - }; - - // ignore drag drop on text field; - $E.find("iframe, form, input, textarea, .ignore-drag") - .each(function() { - $(this).on("touchstart mousedown", function(evt) { - evt.stopPropagation(); - }); - }); - - $D.unbind("mouseup touchend", mouseUp); - $D.unbind("mousemove touchmove", mouseMove); - $H.unbind("mousedown touchstart").bind("mousedown touchstart", mouseDown); - - }); - }, - setTransition: function(item, trans) { - var style = item.style; - var $item = $(item); - - // remove animation; - if (!this.transition && $item.stop) { - $item.stop(); - } else if (style.webkitTransition != null) { - style.webkitTransition = trans; - } else if (style.MozTransition != null) { - style.MozTransition = trans; - } else if (style.msTransition != null) { - style.msTransition = trans; - } else if (style.OTransition != null) { - style.OTransition = trans; - } else { - style.transition = trans; - } - }, - getFreeArea: function(t, l, runtime) { - var maxY = Math.min(t + runtime.maxHoB, runtime.limitRow); - var maxX = Math.min(l + runtime.maxWoB, runtime.limitCol); - var minX = maxX; - var minY = maxY; - var matrix = runtime.matrix; - - // find limit zone by horizon; - for (var y = t; y < minY; ++y) { - for (var x = l; x < maxX; ++x) { - if (matrix[y + '-' + x]) { - (l < x && x < minX) && (minX = x); - } - } - } - - // find limit zone by vertical; - for (var y = t; y < maxY; ++y) { - for (var x = l; x < minX; ++x) { - if (matrix[y + '-' + x]) { - (t < y && y < minY) && (minY = y); - } - } - } - - return { - top: t, - left: l, - width: minX - l, - height: minY - t - }; - - }, - setWallSize: function(runtime, container) { - var totalRow = runtime.totalRow; - var totalCol = runtime.totalCol; - var gutterY = runtime.gutterY; - var gutterX = runtime.gutterX; - var cellH = runtime.cellH; - var cellW = runtime.cellW; - var totalWidth = Math.max(0, cellW * totalCol - gutterX); - var totalHeight = Math.max(0, cellH * totalRow - gutterY); - - container.attr({ - 'data-total-col': totalCol, - 'data-total-row': totalRow, - 'data-wall-width': Math.ceil(totalWidth), - 'data-wall-height': Math.ceil(totalHeight) - }); - - if (runtime.limitCol < runtime.limitRow) { - // do not set height with nesting grid; - !container.attr("data-height") && container.height(Math.ceil(totalHeight)); - } - } - }; - - - - var engine = { - // Giot just a person name; - giot: function(items, setting) { - var runtime = setting.runtime, - row = runtime.limitRow, - col = runtime.limitCol, - x = 0, - y = 0, - maxX = runtime.totalCol, - maxY = runtime.totalRow, - wall = {}, - holes = runtime.holes, - block = null, - matrix = runtime.matrix, - bigLoop = Math.max(col, row), - freeArea = null, - misBlock = null, - fitWidth = col < row ? 1 : 0, - lastBlock = null, - smallLoop = Math.min(col, row); - - // fill area with top, left, width, height; - function fillMatrix(id, t, l, w, h) { - for (var y = t; y < t + h;) { - for (var x = l; x < l + w;) { - matrix[y + '-' + x] = id; - ++x > maxX && (maxX = x); - } - ++y > maxY && (maxY = y); - } - } - - // set holes on the wall; - for (var i in holes) { - if (holes.hasOwnProperty(i)) { - fillMatrix(holes[i]["id"] || true, holes[i]['top'], holes[i]['left'], holes[i]['width'], holes[i]['height']); - } - } - - - for (var b = 0; b < bigLoop; ++b) { - if (!items.length) break; - fitWidth ? (y = b) : (x = b); - lastBlock = null; - - for (var s = 0; s < smallLoop; ++s) { - if (!items.length) break; - block = null; - fitWidth ? (x = s) : (y = s); - if (runtime.matrix[y + '-' + x]) continue; - freeArea = layoutManager.getFreeArea(y, x, runtime); - - // trying resize last block to fit free area; - if (setting.fixSize == null) { - // resize near block to fill gap; - if (lastBlock && !fitWidth && runtime.minHoB > freeArea.height) { - lastBlock.height += freeArea.height; - lastBlock.resize = true; - fillMatrix(lastBlock.id, lastBlock.y, lastBlock.x, lastBlock.width, lastBlock.height); - layoutManager.setBlock(lastBlock, setting); - continue; - } else if (lastBlock && fitWidth && runtime.minWoB > freeArea.width) { - lastBlock.width += freeArea.width; - lastBlock.resize = true; - fillMatrix(lastBlock.id, lastBlock.y, lastBlock.x, lastBlock.width, lastBlock.height); - layoutManager.setBlock(lastBlock, setting); - continue; - } - } - - // get the next block to keep order; - if (setting.keepOrder) { - block = items.shift(); - block.resize = true; - } else { - // find a suitable block to fit gap; - for (var i = 0; i < items.length; ++i) { - if (items[i].height > freeArea.height) continue; - if (items[i].width > freeArea.width) continue; - block = items.splice(i, 1)[0]; - break; - } - - // trying resize the other block to fit gap; - if (block == null && setting.fixSize == null) { - // get other block fill to gap; - for (var i = 0; i < items.length; ++i) { - if (items[i]['fixSize'] != null) continue; - block = items.splice(i, 1)[0]; - block.resize = true; - break; - } - - } - } - - - if (block != null) { - // resize block with free area; - if (block.resize) { - if (fitWidth) { - block.width = freeArea.width; - if (setting.cellH == 'auto') { - layoutManager.adjustBlock(block, setting); - } - // for fitZone; - block.height = Math.min(block.height, freeArea.height); - } else { - block.height = freeArea.height; - // for fitZone; - block.width = Math.min(block.width, freeArea.width); - } - } - - wall[block.id] = { - id: block.id, - x: x, - y: y, - width: block.width, - height: block.height, - resize: block.resize, - fixSize: block.fixSize - }; - - // keep success block for next round; - lastBlock = wall[block.id]; - - fillMatrix(lastBlock.id, lastBlock.y, lastBlock.x, lastBlock.width, lastBlock.height); - layoutManager.setBlock(lastBlock, setting); - } else { - // get expect area; - var misBlock = { - x: x, - y: y, - fixSize: 0 - }; - if (fitWidth) { - misBlock.width = freeArea.width; - misBlock.height = 0; - var lastX = x - 1; - var lastY = y; - - while (matrix[lastY + '-' + lastX]) { - matrix[lastY + '-' + x] = true; - misBlock.height += 1; - lastY += 1; - } - } else { - misBlock.height = freeArea.height; - misBlock.width = 0; - var lastY = y - 1; - var lastX = x; - - while (matrix[lastY + '-' + lastX]) { - matrix[y + '-' + lastX] = true; - misBlock.width += 1; - lastX += 1; - } - } - setting.onGapFound(layoutManager.setBlock(misBlock, setting), setting); - } - } - - } - - runtime.matrix = matrix; - runtime.totalRow = maxY; - runtime.totalCol = maxX; - } - }; - - - - window.freewall = function(selector) { - - var container = $(selector); - if (container.css('position') == 'static') { - container.css('position', 'relative'); - } - var MAX = Number.MAX_VALUE; - var klass = this; - // increase the instance index; - layoutManager.totalGrid += 1; - - var setting = $.extend({}, layoutManager.defaultConfig); - var runtime = { - blocks: {}, // store all items; - events: {}, // store custome events; - matrix: {}, - holes: {}, // forbidden zone; - - cellW: 0, - cellH: 0, // unit adjust; - cellS: 1, // unit scale; - - filter: '', // filter selector; - - lastId: 0, - length: 0, - - maxWoB: 0, // max width of block; - maxHoB: 0, - minWoB: MAX, - minHoB: MAX, // min height of block; - - running: 0, // flag to check layout arranging; - - gutterX: 15, - gutterY: 15, - - totalCol: 0, - totalRow: 0, - - limitCol: 666666, // maximum column; - limitRow: 666666, - - currentMethod: null, - currentArguments: [] - }; - setting.runtime = runtime; - runtime.totalGrid = layoutManager.totalGrid; - - // check browser support transition; - var bodyStyle = document.body.style; - if (!layoutManager.transition) { - (bodyStyle.webkitTransition != null || - bodyStyle.MozTransition != null || - bodyStyle.msTransition != null || - bodyStyle.OTransition != null || - bodyStyle.transition != null) && - (layoutManager.transition = true); - } - - - function setDraggable(item) { - - var gutterX = runtime.gutterX; - var gutterY = runtime.gutterY; - var cellH = runtime.cellH; - var cellW = runtime.cellW; - var $item = $(item); - var handle = $item.find($item.attr("data-handle")); - layoutManager.setDraggable(item, { - handle: handle[0], - onStart: function(event) { - if (setting.animate && layoutManager.transition) { - layoutManager.setTransition(this, ""); - } - $item.css('z-index', 9999).addClass('fw-float'); - - setting.onBlockDrag.call(item, event); - }, - onDrag: function(event, tracker) { - var position = $item.position(); - var top = Math.round(position.top / cellH); - var left = Math.round(position.left / cellW); - var width = Math.round($item.width() / cellW); - var height = Math.round($item.height() / cellH); - top = Math.min(Math.max(0, top), runtime.limitRow - height); - left = Math.min(Math.max(0, left), runtime.limitCol - width); - klass.setHoles({top: top, left: left, width: width, height: height}); - klass.refresh(); - - setting.onBlockMove.call(item, event); - }, - onDrop: function(event) { - var position = $item.position(); - var top = Math.round(position.top / cellH); - var left = Math.round(position.left / cellW); - var width = Math.round($item.width() / cellW); - var height = Math.round($item.height() / cellH); - top = Math.min(Math.max(0, top), runtime.limitRow - height); - left = Math.min(Math.max(0, left), runtime.limitCol - width); - - $item.removeClass('fw-float'); - $item.css({ - zIndex: "auto", - top: top * cellH, - left: left * cellW - }); - - //check old drag element; - var x, y, key, oldDropId; - for (y = 0; y < height; ++y) { - for (x = 0; x < width; ++x) { - key = (y + top) + "-" + (x + left); - oldDropId = runtime.matrix[key]; - if (oldDropId && oldDropId != true) { - $("#" + oldDropId).removeAttr("data-position"); - } - } - } - - runtime.holes = {}; - - $item.attr({ - "data-width": $item.width(), - "data-height": $item.height(), - "data-position": top + "-" + left - }); - - klass.refresh(); - - setting.onBlockDrop.call(item, event); - } - }); - } - - - $.extend(klass, { - - addCustomEvent: function(name, func) { - var events = runtime.events; - name = name.toLowerCase(); - !events[name] && (events[name] = []); - func.eid = events[name].length; - events[name].push(func); - return this; - }, - - appendBlock: function(items) { - var allBlock = $(items).appendTo(container); - var block = null; - var activeBlock = []; - - if (runtime.currentMethod) { - allBlock.each(function(index, item) { - item.index = ++index; - block = layoutManager.loadBlock(item, setting); - block && activeBlock.push(block); - }); - - engine[setting.engine](activeBlock, setting); - - layoutManager.setWallSize(runtime, container); - - runtime.length = allBlock.length; - - allBlock.each(function(index, item) { - layoutManager.showBlock(item, setting); - if (setting.draggable || item.getAttribute('data-draggable')) { - setDraggable(item); - } - }); - } - }, - /* - add one or more blank area (hole) on layout; - example: - - wall.appendHoles({ - top: 10, - left: 36, - width: 2, - height: 6 - }); - - wall.appendHoles([ - { - top: 16, - left: 16, - width: 8, - height: 2 - }, - { - top: 10, - left: 36, - width: 2, - height: 6 - } - ]); - - */ - appendHoles: function(holes) { - var newHoles = [].concat(holes), h = {}, i; - for (i = 0; i < newHoles.length; ++i) { - h = newHoles[i]; - runtime.holes[h.top + "-" + h.left + "-" + h.width + "-" + h.height] = h; - } - return this; - }, - - container: container, - - destroy: function() { - var allBlock = container.find(setting.selector).removeAttr('id'), - block = null, - activeBlock = []; - - allBlock.each(function(index, item) { - $item = $(item); - var width = 1 * $item.attr('data-width') || ""; - var height = 1 * $item.attr('data-height') || ""; - $item.width(width).height(height).css({ - position: 'static' - }); - }); - }, - - fillHoles: function(holes) { - if (arguments.length == 0) { - runtime.holes = {}; - } else { - var newHoles = [].concat(holes), h = {}, i; - for (i = 0; i < newHoles.length; ++i) { - h = newHoles[i]; - delete runtime.holes[h.top + "-" + h.left + "-" + h.width + "-" + h.height]; - } - } - return this; - }, - - filter: function(filter) { - runtime.filter = filter; - runtime.currentMethod && this.refresh(); - return this; - }, - - fireEvent: function(name, object, setting) { - var events = runtime.events; - name = name.toLowerCase(); - if (events[name] && events[name].length) { - for (var i = 0; i < events[name].length; ++i) { - events[name][i].call(this, object, setting); - } - } - return this; - }, - - fitHeight: function(height) { - var allBlock = container.find(setting.selector).removeAttr('id'), - block = null, - activeBlock = []; - - height = height ? height : container.height() || $W.height(); - - runtime.currentMethod = arguments.callee; - runtime.currentArguments = arguments; - - layoutManager.resetGrid(runtime); - layoutManager.adjustUnit('auto', height, setting); - - if (runtime.filter) { - allBlock.data('active', 0); - allBlock.filter(runtime.filter).data('active', 1); - } else { - allBlock.data('active', 1); - } - - allBlock.each(function(index, item) { - var $item = $(item); - item.index = ++index; - block = layoutManager.loadBlock(item, setting); - block && $item.data("active") && activeBlock.push(block); - }); - - klass.fireEvent('onGridReady', container, setting); - - engine[setting.engine](activeBlock, setting); - - layoutManager.setWallSize(runtime, container); - - klass.fireEvent('onGridArrange', container, setting); - - runtime.length = allBlock.length; - - allBlock.each(function(index, item) { - layoutManager.showBlock(item, setting); - if (setting.draggable || item.getAttribute('data-draggable')) { - setDraggable(item); - } - }); - }, - - fitWidth: function(width) { - var allBlock = container.find(setting.selector).removeAttr('id'), - block = null, - activeBlock = []; - - width = width ? width : container.width() || $W.width(); - - runtime.currentMethod = arguments.callee; - runtime.currentArguments = arguments; - - layoutManager.resetGrid(runtime); - layoutManager.adjustUnit(width, 'auto', setting); - - if (runtime.filter) { - allBlock.data('active', 0); - allBlock.filter(runtime.filter).data('active', 1); - } else { - allBlock.data('active', 1); - } - - allBlock.each(function(index, item) { - var $item = $(item); - item.index = ++index; - block = layoutManager.loadBlock(item, setting); - block && $item.data("active") && activeBlock.push(block); - }); - - klass.fireEvent('onGridReady', container, setting); - - engine[setting.engine](activeBlock, setting); - - layoutManager.setWallSize(runtime, container); - - klass.fireEvent('onGridArrange', container, setting); - - runtime.length = allBlock.length; - - allBlock.each(function(index, item) { - layoutManager.showBlock(item, setting); - if (setting.draggable || item.getAttribute('data-draggable')) { - setDraggable(item); - } - }); - }, - - fitZone: function(width, height) { - var allBlock = container.find(setting.selector).removeAttr('id'), - block = null, - activeBlock = []; - - height = height ? height : container.height() || $W.height(); - width = width ? width : container.width() || $W.width(); - - runtime.currentMethod = arguments.callee; - runtime.currentArguments = arguments; - - layoutManager.resetGrid(runtime); - layoutManager.adjustUnit(width, height, setting); - - if (runtime.filter) { - allBlock.data('active', 0); - allBlock.filter(runtime.filter).data('active', 1); - } else { - allBlock.data('active', 1); - } - - allBlock.each(function(index, item) { - var $item = $(item); - item.index = ++index; - block = layoutManager.loadBlock(item, setting); - block && $item.data("active") && activeBlock.push(block); - }); - - klass.fireEvent('onGridReady', container, setting); - - engine[setting.engine](activeBlock, setting); - - layoutManager.setWallSize(runtime, container); - - klass.fireEvent('onGridArrange', container, setting); - - runtime.length = allBlock.length; - - allBlock.each(function(index, item) { - layoutManager.showBlock(item, setting); - if (setting.draggable || item.getAttribute('data-draggable')) { - setDraggable(item); - } - }); - }, - - /* - set block with special position, the top and left are multiple of unit width/height; - example: - - wall.fixPos({ - top: 0, - left: 0, - block: $('.free') - }); - */ - fixPos: function(option) { - $(option.block).attr({'data-position': option.top + "-" + option.left}); - return this; - }, - - /* - set block with special size, the width and height are multiple of unit width/height; - example: - - wall.fixSize({ - height: 5, - width: 2, - block: $('.free') - }); - */ - fixSize: function(option) { - option.height != null && $(option.block).attr({'data-height': option.height}); - option.width != null && $(option.block).attr({'data-width': option.width}); - return this; - }, - - prepend: function(items) { - container.prepend(items); - runtime.currentMethod && this.refresh(); - return this; - }, - - refresh: function() { - var params = arguments.length ? arguments : runtime.currentArguments; - runtime.currentMethod == null && (runtime.currentMethod = this.fitWidth); - runtime.currentMethod.apply(this, Array.prototype.slice.call(params, 0)); - return this; - }, - - /* - custom layout setting; - example: - - wall.reset({ - selector: '.brick', - animate: true, - cellW: 160, - cellH: 160, - delay: 50, - onResize: function() { - wall.fitWidth(); - } - }); - */ - reset: function(option) { - $.extend(setting, option); - return this; - }, - - /* - create one or more blank area (hole) on layout; - example: - - wall.setHoles({ - top: 2, - left: 2, - width: 2, - height: 2 - }); - */ - - setHoles: function(holes) { - var newHoles = [].concat(holes), h = {}, i; - runtime.holes = {}; - for (i = 0; i < newHoles.length; ++i) { - h = newHoles[i]; - runtime.holes[h.top + "-" + h.left + "-" + h.width + "-" + h.height] = h; - } - return this; - }, - - unFilter: function() { - delete runtime.filter; - this.refresh(); - return this; - } - }); - - container.attr('data-min-width', Math.floor($W.width() / 80) * 80); - // execute plugins; - for (var i in layoutManager.plugin) { - if (layoutManager.plugin.hasOwnProperty(i)) { - layoutManager.plugin[i].call(klass, setting, container); - } - } - - // setup resize event; - $W.resize(function() { - if (runtime.running) return; - runtime.running = 1; - setTimeout(function() { - runtime.running = 0; - setting.onResize.call(klass, container); - }, 122); - container.attr('data-min-width', Math.floor($W.width() / 80) * 80); - }); - }; - - /* - add default setting; - example: - - freewall.addConfig({ - offsetLeft: 0 - }); - */ - freewall.addConfig = function(newConfig) { - // add default setting; - $.extend(layoutManager.defaultConfig, newConfig); - }; - - - /* - support create new arrange algorithm; - example: - - freewall.createEngine({ - slice: function(items, setting) { - // slice engine; - } - }); - */ - freewall.createEngine = function(engineData) { - // create new engine; - $.extend(engine, engineData); - }; - - /* - support create new plugin; - example: - - freewall.createPlugin({ - centering: function(setting, container) { - console.log(this); - console.log(setting); - } - })l - */ - freewall.createPlugin = function(pluginData) { - // register new plugin; - $.extend(layoutManager.plugin, pluginData); - }; - - /* - support access helper function; - example: - - freewall.getMethod('setBlock')(block, setting); - */ - freewall.getMethod = function(method) { - // get helper method; - return layoutManager[method]; - }; - -})(window.Zepto || window.jQuery); diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-blockui/jquery.blockui.min.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-blockui/jquery.blockui.min.js deleted file mode 100644 index 6fa44096..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-blockui/jquery.blockui.min.js +++ /dev/null @@ -1,15 +0,0 @@ -/*! - * jQuery blockUI plugin - * Version 2.66.0-2013.10.09 - * Requires jQuery v1.7 or later - * - * Examples at: http://malsup.com/jquery/block/ - * Copyright (c) 2007-2013 M. Alsup - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - * - * Thanks to Amir-Hossein Sobhi for some excellent contributions! - */ - -!function(){"use strict";function e(e){function t(t,n){var s,h,k=t==window,y=n&&void 0!==n.message?n.message:void 0;if(n=e.extend({},e.blockUI.defaults,n||{}),!n.ignoreIfBlocked||!e(t).data("blockUI.isBlocked")){if(n.overlayCSS=e.extend({},e.blockUI.defaults.overlayCSS,n.overlayCSS||{}),s=e.extend({},e.blockUI.defaults.css,n.css||{}),n.onOverlayClick&&(n.overlayCSS.cursor="pointer"),h=e.extend({},e.blockUI.defaults.themedCSS,n.themedCSS||{}),y=void 0===y?n.message:y,k&&p&&o(window,{fadeOut:0}),y&&"string"!=typeof y&&(y.parentNode||y.jquery)){var m=y.jquery?y[0]:y,v={};e(t).data("blockUI.history",v),v.el=m,v.parent=m.parentNode,v.display=m.style.display,v.position=m.style.position,v.parent&&v.parent.removeChild(m)}e(t).data("blockUI.onUnblock",n.onUnblock);var g,I,w,U,x=n.baseZ;g=r||n.forceIframe?e(''):e(''),I=n.theme?e(''):e(''),n.theme&&k?(U='"):n.theme?(U='"):U=k?'':'',w=e(U),y&&(n.theme?(w.css(h),w.addClass("ui-widget-content")):w.css(s)),n.theme||I.css(n.overlayCSS),I.css("position",k?"fixed":"absolute"),(r||n.forceIframe)&&g.css("opacity",0);var C=[g,I,w],S=k?e("body"):e(t);e.each(C,function(){this.appendTo(S)}),n.theme&&n.draggable&&e.fn.draggable&&w.draggable({handle:".ui-dialog-titlebar",cancel:"li"});var O=f&&(!e.support.boxModel||e("object,embed",k?null:t).length>0);if(u||O){if(k&&n.allowBodyStretch&&e.support.boxModel&&e("html,body").css("height","100%"),(u||!e.support.boxModel)&&!k)var E=d(t,"borderTopWidth"),T=d(t,"borderLeftWidth"),M=E?"(0 - "+E+")":0,B=T?"(0 - "+T+")":0;e.each(C,function(e,t){var o=t[0].style;if(o.position="absolute",2>e)k?o.setExpression("height","Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:"+n.quirksmodeOffsetHack+') + "px"'):o.setExpression("height",'this.parentNode.offsetHeight + "px"'),k?o.setExpression("width",'jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"'):o.setExpression("width",'this.parentNode.offsetWidth + "px"'),B&&o.setExpression("left",B),M&&o.setExpression("top",M);else if(n.centerY)k&&o.setExpression("top",'(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"'),o.marginTop=0;else if(!n.centerY&&k){var i=n.css&&n.css.top?parseInt(n.css.top,10):0,s="((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "+i+') + "px"';o.setExpression("top",s)}})}if(y&&(n.theme?w.find(".ui-widget-content").append(y):w.append(y),(y.jquery||y.nodeType)&&e(y).show()),(r||n.forceIframe)&&n.showOverlay&&g.show(),n.fadeIn){var j=n.onBlock?n.onBlock:c,H=n.showOverlay&&!y?j:c,z=y?j:c;n.showOverlay&&I._fadeIn(n.fadeIn,H),y&&w._fadeIn(n.fadeIn,z)}else n.showOverlay&&I.show(),y&&w.show(),n.onBlock&&n.onBlock();if(i(1,t,n),k?(p=w[0],b=e(n.focusableElements,p),n.focusInput&&setTimeout(l,20)):a(w[0],n.centerX,n.centerY),n.timeout){var W=setTimeout(function(){k?e.unblockUI(n):e(t).unblock(n)},n.timeout);e(t).data("blockUI.timeout",W)}}}function o(t,o){var s,l=t==window,a=e(t),d=a.data("blockUI.history"),c=a.data("blockUI.timeout");c&&(clearTimeout(c),a.removeData("blockUI.timeout")),o=e.extend({},e.blockUI.defaults,o||{}),i(0,t,o),null===o.onUnblock&&(o.onUnblock=a.data("blockUI.onUnblock"),a.removeData("blockUI.onUnblock"));var r;r=l?e("body").children().filter(".blockUI").add("body > .blockUI"):a.find(">.blockUI"),o.cursorReset&&(r.length>1&&(r[1].style.cursor=o.cursorReset),r.length>2&&(r[2].style.cursor=o.cursorReset)),l&&(p=b=null),o.fadeOut?(s=r.length,r.stop().fadeOut(o.fadeOut,function(){0===--s&&n(r,d,o,t)})):n(r,d,o,t)}function n(t,o,n,i){var s=e(i);if(!s.data("blockUI.isBlocked")){t.each(function(){this.parentNode&&this.parentNode.removeChild(this)}),o&&o.el&&(o.el.style.display=o.display,o.el.style.position=o.position,o.parent&&o.parent.appendChild(o.el),s.removeData("blockUI.history")),s.data("blockUI.static")&&s.css("position","static"),"function"==typeof n.onUnblock&&n.onUnblock(i,n);var l=e(document.body),a=l.width(),d=l[0].style.width;l.width(a-1).width(a),l[0].style.width=d}}function i(t,o,n){var i=o==window,l=e(o);if((t||(!i||p)&&(i||l.data("blockUI.isBlocked")))&&(l.data("blockUI.isBlocked",t),i&&n.bindEvents&&(!t||n.showOverlay))){var a="mousedown mouseup keydown keypress keyup touchstart touchend touchmove";t?e(document).bind(a,n,s):e(document).unbind(a,s)}}function s(t){if("keydown"===t.type&&t.keyCode&&9==t.keyCode&&p&&t.data.constrainTabKey){var o=b,n=!t.shiftKey&&t.target===o[o.length-1],i=t.shiftKey&&t.target===o[0];if(n||i)return setTimeout(function(){l(i)},10),!1}var s=t.data,a=e(t.target);return a.hasClass("blockOverlay")&&s.onOverlayClick&&s.onOverlayClick(t),a.parents("div."+s.blockMsgClass).length>0?!0:0===a.parents().children().filter("div.blockUI").length}function l(e){if(b){var t=b[e===!0?b.length-1:0];t&&t.focus()}}function a(e,t,o){var n=e.parentNode,i=e.style,s=(n.offsetWidth-e.offsetWidth)/2-d(n,"borderLeftWidth"),l=(n.offsetHeight-e.offsetHeight)/2-d(n,"borderTopWidth");t&&(i.left=s>0?s+"px":"0"),o&&(i.top=l>0?l+"px":"0")}function d(t,o){return parseInt(e.css(t,o),10)||0}e.fn._fadeIn=e.fn.fadeIn;var c=e.noop||function(){},r=/MSIE/.test(navigator.userAgent),u=/MSIE 6.0/.test(navigator.userAgent)&&!/MSIE 8.0/.test(navigator.userAgent),f=(document.documentMode||0,e.isFunction(document.createElement("div").style.setExpression));e.blockUI=function(e){t(window,e)},e.unblockUI=function(e){o(window,e)},e.growlUI=function(t,o,n,i){var s=e('
    ');t&&s.append("

    "+t+"

    "),o&&s.append("

    "+o+"

    "),void 0===n&&(n=3e3);var l=function(t){t=t||{},e.blockUI({message:s,fadeIn:"undefined"!=typeof t.fadeIn?t.fadeIn:700,fadeOut:"undefined"!=typeof t.fadeOut?t.fadeOut:1e3,timeout:"undefined"!=typeof t.timeout?t.timeout:n,centerY:!1,showOverlay:!1,onUnblock:i,css:e.blockUI.defaults.growlCSS})};l();s.css("opacity");s.mouseover(function(){l({fadeIn:0,timeout:3e4});var t=e(".blockMsg");t.stop(),t.fadeTo(300,1)}).mouseout(function(){e(".blockMsg").fadeOut(1e3)})},e.fn.block=function(o){if(this[0]===window)return e.blockUI(o),this;var n=e.extend({},e.blockUI.defaults,o||{});return this.each(function(){var t=e(this);n.ignoreIfBlocked&&t.data("blockUI.isBlocked")||t.unblock({fadeOut:0})}),this.each(function(){"static"==e.css(this,"position")&&(this.style.position="relative",e(this).data("blockUI.static",!0)),this.style.zoom=1,t(this,o)})},e.fn.unblock=function(t){return this[0]===window?(e.unblockUI(t),this):this.each(function(){o(this,t)})},e.blockUI.version=2.66,e.blockUI.defaults={message:"

    Please wait...

    ",title:null,draggable:!0,theme:!1,css:{padding:0,margin:0,width:"30%",top:"40%",left:"35%",textAlign:"center",color:"#000",border:"3px solid #aaa",backgroundColor:"#fff",cursor:"wait"},themedCSS:{width:"30%",top:"40%",left:"35%"},overlayCSS:{backgroundColor:"#000",opacity:.6,cursor:"wait"},cursorReset:"default",growlCSS:{width:"350px",top:"10px",left:"",right:"10px",border:"none",padding:"5px",opacity:.6,cursor:"default",color:"#fff",backgroundColor:"#000","-webkit-border-radius":"10px","-moz-border-radius":"10px","border-radius":"10px"},iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank",forceIframe:!1,baseZ:1e3,centerX:!0,centerY:!0,allowBodyStretch:!0,bindEvents:!0,constrainTabKey:!0,fadeIn:200,fadeOut:400,timeout:0,showOverlay:!0,focusInput:!0,focusableElements:":input:enabled:visible",onBlock:null,onUnblock:null,onOverlayClick:null,quirksmodeOffsetHack:4,blockMsgClass:"blockMsg",ignoreIfBlocked:!1};var p=null,b=[]}"function"==typeof define&&define.amd&&define.amd.jQuery?define(["jquery"],e):e(jQuery)}(); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-cokie/jquery.cokie.min.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-cokie/jquery.cokie.min.js deleted file mode 100644 index 512203bf..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-cokie/jquery.cokie.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * jQuery Cookie Plugin v1.3.1 - * https://github.com/carhartl/jquery-cookie - * Plugin file name changed to jquery.cokie.min to prevent blocking by ModSecurity module - * - * Copyright 2013 Klaus Hartl - * Released under the MIT license - */ -(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{a(jQuery)}}(function(e){var a=/\+/g;function d(g){return g}function b(g){return decodeURIComponent(g.replace(a," "))}function f(g){if(g.indexOf('"')===0){g=g.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\")}try{return c.json?JSON.parse(g):g}catch(h){}}var c=e.cookie=function(p,o,u){if(o!==undefined){u=e.extend({},c.defaults,u);if(typeof u.expires==="number"){var q=u.expires,s=u.expires=new Date();s.setDate(s.getDate()+q)}o=c.json?JSON.stringify(o):String(o);return(document.cookie=[c.raw?p:encodeURIComponent(p),"=",c.raw?o:encodeURIComponent(o),u.expires?"; expires="+u.expires.toUTCString():"",u.path?"; path="+u.path:"",u.domain?"; domain="+u.domain:"",u.secure?"; secure":""].join(""))}var g=c.raw?d:b;var r=document.cookie.split("; ");var v=p?undefined:{};for(var n=0,k=r.length;n - - - - - -``` - -Alternatively include jQuery and the plugin via requirejs in your module. - -```js -define(["jquery", "jquery.validate"], function( $ ) { - $("form").validate(); -}); -``` - -For more information on how to setup a rules and customizations, [check the documentation](http://jqueryvalidation.org/documentation/). - -## Reporting an Issue - -**IMPORTANT NOTE ABOUT EMAIL VALIDATION**. As of version 1.12.0 this plugin is using the same regular expression that the [HTML5 specification suggests for browsers to use](http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#e-mail-state-%28type=email%29). We will follow their lead and use the same check. If you think the specification is wrong, please report the issue to them. - -1. Make sure the problem you're addressing is reproducible. -2. Use http://jsbin.com or http://jsfiddle.net to provide a test page. -3. Indicate what browsers the issue can be reproduced in. **Note: IE Compatibilty modes issues will not be addressed.** -4. What version of the plug-in is the issue reproducible in. Is it reproducible after updating to the latest version. - -## Contributing - -See the [Contributing Guide](CONTRIBUTING.md) - -## License -Copyright (c) 2013 Jörn Zaefferer -Licensed under the MIT license. diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/dist/additional-methods.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/dist/additional-methods.js deleted file mode 100644 index 5862dcd4..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/dist/additional-methods.js +++ /dev/null @@ -1,617 +0,0 @@ -/*! - * jQuery Validation Plugin 1.11.1 - * - * http://bassistance.de/jquery-plugins/jquery-plugin-validation/ - * http://docs.jquery.com/Plugins/Validation - * - * Copyright 2013 Jörn Zaefferer - * Released under the MIT license: - * http://www.opensource.org/licenses/mit-license.php - */ - -(function() { - - function stripHtml(value) { - // remove html tags and space chars - return value.replace(/<.[^<>]*?>/g, ' ').replace(/ | /gi, ' ') - // remove punctuation - .replace(/[.(),;:!?%#$'"_+=\/\-]*/g,''); - } - jQuery.validator.addMethod("maxWords", function(value, element, params) { - return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length <= params; - }, jQuery.validator.format("Please enter {0} words or less.")); - - jQuery.validator.addMethod("minWords", function(value, element, params) { - return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length >= params; - }, jQuery.validator.format("Please enter at least {0} words.")); - - jQuery.validator.addMethod("rangeWords", function(value, element, params) { - var valueStripped = stripHtml(value); - var regex = /\b\w+\b/g; - return this.optional(element) || valueStripped.match(regex).length >= params[0] && valueStripped.match(regex).length <= params[1]; - }, jQuery.validator.format("Please enter between {0} and {1} words.")); - -}()); - -jQuery.validator.addMethod("letterswithbasicpunc", function(value, element) { - return this.optional(element) || /^[a-z\-.,()'"\s]+$/i.test(value); -}, "Letters or punctuation only please"); - -jQuery.validator.addMethod("alphanumeric", function(value, element) { - return this.optional(element) || /^\w+$/i.test(value); -}, "Letters, numbers, and underscores only please"); - -jQuery.validator.addMethod("lettersonly", function(value, element) { - return this.optional(element) || /^[a-z]+$/i.test(value); -}, "Letters only please"); - -jQuery.validator.addMethod("nowhitespace", function(value, element) { - return this.optional(element) || /^\S+$/i.test(value); -}, "No white space please"); - -jQuery.validator.addMethod("ziprange", function(value, element) { - return this.optional(element) || /^90[2-5]\d\{2\}-\d{4}$/.test(value); -}, "Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx"); - -jQuery.validator.addMethod("zipcodeUS", function(value, element) { - return this.optional(element) || /\d{5}-\d{4}$|^\d{5}$/.test(value); -}, "The specified US ZIP Code is invalid"); - -jQuery.validator.addMethod("integer", function(value, element) { - return this.optional(element) || /^-?\d+$/.test(value); -}, "A positive or negative non-decimal number please"); - -/** - * Return true, if the value is a valid vehicle identification number (VIN). - * - * Works with all kind of text inputs. - * - * @example - * @desc Declares a required input element whose value must be a valid vehicle identification number. - * - * @name jQuery.validator.methods.vinUS - * @type Boolean - * @cat Plugins/Validate/Methods - */ -jQuery.validator.addMethod("vinUS", function(v) { - if (v.length !== 17) { - return false; - } - var i, n, d, f, cd, cdv; - var LL = ["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"]; - var VL = [1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9]; - var FL = [8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2]; - var rs = 0; - for(i = 0; i < 17; i++){ - f = FL[i]; - d = v.slice(i,i+1); - if (i === 8) { - cdv = d; - } - if (!isNaN(d)) { - d *= f; - } else { - for (n = 0; n < LL.length; n++) { - if (d.toUpperCase() === LL[n]) { - d = VL[n]; - d *= f; - if (isNaN(cdv) && n === 8) { - cdv = LL[n]; - } - break; - } - } - } - rs += d; - } - cd = rs % 11; - if (cd === 10) { - cd = "X"; - } - if (cd === cdv) { - return true; - } - return false; -}, "The specified vehicle identification number (VIN) is invalid."); - -/** - * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy. - * - * @example jQuery.validator.methods.date("01/01/1900") - * @result true - * - * @example jQuery.validator.methods.date("01/13/1990") - * @result false - * - * @example jQuery.validator.methods.date("01.01.1900") - * @result false - * - * @example - * @desc Declares an optional input element whose value must be a valid date. - * - * @name jQuery.validator.methods.dateITA - * @type Boolean - * @cat Plugins/Validate/Methods - */ -jQuery.validator.addMethod("dateITA", function(value, element) { - var check = false; - var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/; - if( re.test(value)) { - var adata = value.split('/'); - var gg = parseInt(adata[0],10); - var mm = parseInt(adata[1],10); - var aaaa = parseInt(adata[2],10); - var xdata = new Date(aaaa,mm-1,gg); - if ( ( xdata.getFullYear() === aaaa ) && ( xdata.getMonth() === mm - 1 ) && ( xdata.getDate() === gg ) ){ - check = true; - } else { - check = false; - } - } else { - check = false; - } - return this.optional(element) || check; -}, "Please enter a correct date"); - -/** - * IBAN is the international bank account number. - * It has a country - specific format, that is checked here too - */ -jQuery.validator.addMethod("iban", function(value, element) { - // some quick simple tests to prevent needless work - if (this.optional(element)) { - return true; - } - if (!(/^([a-zA-Z0-9]{4} ){2,8}[a-zA-Z0-9]{1,4}|[a-zA-Z0-9]{12,34}$/.test(value))) { - return false; - } - - // check the country code and find the country specific format - var iban = value.replace(/ /g,'').toUpperCase(); // remove spaces and to upper case - var countrycode = iban.substring(0,2); - var bbancountrypatterns = { - 'AL': "\\d{8}[\\dA-Z]{16}", - 'AD': "\\d{8}[\\dA-Z]{12}", - 'AT': "\\d{16}", - 'AZ': "[\\dA-Z]{4}\\d{20}", - 'BE': "\\d{12}", - 'BH': "[A-Z]{4}[\\dA-Z]{14}", - 'BA': "\\d{16}", - 'BR': "\\d{23}[A-Z][\\dA-Z]", - 'BG': "[A-Z]{4}\\d{6}[\\dA-Z]{8}", - 'CR': "\\d{17}", - 'HR': "\\d{17}", - 'CY': "\\d{8}[\\dA-Z]{16}", - 'CZ': "\\d{20}", - 'DK': "\\d{14}", - 'DO': "[A-Z]{4}\\d{20}", - 'EE': "\\d{16}", - 'FO': "\\d{14}", - 'FI': "\\d{14}", - 'FR': "\\d{10}[\\dA-Z]{11}\\d{2}", - 'GE': "[\\dA-Z]{2}\\d{16}", - 'DE': "\\d{18}", - 'GI': "[A-Z]{4}[\\dA-Z]{15}", - 'GR': "\\d{7}[\\dA-Z]{16}", - 'GL': "\\d{14}", - 'GT': "[\\dA-Z]{4}[\\dA-Z]{20}", - 'HU': "\\d{24}", - 'IS': "\\d{22}", - 'IE': "[\\dA-Z]{4}\\d{14}", - 'IL': "\\d{19}", - 'IT': "[A-Z]\\d{10}[\\dA-Z]{12}", - 'KZ': "\\d{3}[\\dA-Z]{13}", - 'KW': "[A-Z]{4}[\\dA-Z]{22}", - 'LV': "[A-Z]{4}[\\dA-Z]{13}", - 'LB': "\\d{4}[\\dA-Z]{20}", - 'LI': "\\d{5}[\\dA-Z]{12}", - 'LT': "\\d{16}", - 'LU': "\\d{3}[\\dA-Z]{13}", - 'MK': "\\d{3}[\\dA-Z]{10}\\d{2}", - 'MT': "[A-Z]{4}\\d{5}[\\dA-Z]{18}", - 'MR': "\\d{23}", - 'MU': "[A-Z]{4}\\d{19}[A-Z]{3}", - 'MC': "\\d{10}[\\dA-Z]{11}\\d{2}", - 'MD': "[\\dA-Z]{2}\\d{18}", - 'ME': "\\d{18}", - 'NL': "[A-Z]{4}\\d{10}", - 'NO': "\\d{11}", - 'PK': "[\\dA-Z]{4}\\d{16}", - 'PS': "[\\dA-Z]{4}\\d{21}", - 'PL': "\\d{24}", - 'PT': "\\d{21}", - 'RO': "[A-Z]{4}[\\dA-Z]{16}", - 'SM': "[A-Z]\\d{10}[\\dA-Z]{12}", - 'SA': "\\d{2}[\\dA-Z]{18}", - 'RS': "\\d{18}", - 'SK': "\\d{20}", - 'SI': "\\d{15}", - 'ES': "\\d{20}", - 'SE': "\\d{20}", - 'CH': "\\d{5}[\\dA-Z]{12}", - 'TN': "\\d{20}", - 'TR': "\\d{5}[\\dA-Z]{17}", - 'AE': "\\d{3}\\d{16}", - 'GB': "[A-Z]{4}\\d{14}", - 'VG': "[\\dA-Z]{4}\\d{16}" - }; - var bbanpattern = bbancountrypatterns[countrycode]; - // As new countries will start using IBAN in the - // future, we only check if the countrycode is known. - // This prevents false negatives, while almost all - // false positives introduced by this, will be caught - // by the checksum validation below anyway. - // Strict checking should return FALSE for unknown - // countries. - if (typeof bbanpattern !== 'undefined') { - var ibanregexp = new RegExp("^[A-Z]{2}\\d{2}" + bbanpattern + "$", ""); - if (!(ibanregexp.test(iban))) { - return false; // invalid country specific format - } - } - - // now check the checksum, first convert to digits - var ibancheck = iban.substring(4,iban.length) + iban.substring(0,4); - var ibancheckdigits = ""; - var leadingZeroes = true; - var charAt; - for (var i =0; i 9 && - phone_number.match(/^(\+?1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/); -}, "Please specify a valid phone number"); - -jQuery.validator.addMethod('phoneUK', function(phone_number, element) { - phone_number = phone_number.replace(/\(|\)|\s+|-/g,''); - return this.optional(element) || phone_number.length > 9 && - phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/); -}, 'Please specify a valid phone number'); - -jQuery.validator.addMethod('mobileUK', function(phone_number, element) { - phone_number = phone_number.replace(/\(|\)|\s+|-/g,''); - return this.optional(element) || phone_number.length > 9 && - phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[45789]\d{2}|624)\s?\d{3}\s?\d{3})$/); -}, 'Please specify a valid mobile number'); - -//Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers -jQuery.validator.addMethod('phonesUK', function(phone_number, element) { - phone_number = phone_number.replace(/\(|\)|\s+|-/g,''); - return this.optional(element) || phone_number.length > 9 && - phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[45789]\d{8}|624\d{6})))$/); -}, 'Please specify a valid uk phone number'); -// On the above three UK functions, do the following server side processing: -// Compare original input with this RegEx pattern: -// ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$ -// Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0' -// Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2. -// A number of very detailed GB telephone number RegEx patterns can also be found at: -// http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers - -// Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK) -jQuery.validator.addMethod('postcodeUK', function(value, element) { - return this.optional(element) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test(value); -}, 'Please specify a valid UK postcode'); - -// TODO check if value starts with <, otherwise don't try stripping anything -jQuery.validator.addMethod("strippedminlength", function(value, element, param) { - return jQuery(value).text().length >= param; -}, jQuery.validator.format("Please enter at least {0} characters")); - -// same as email, but TLD is optional -jQuery.validator.addMethod("email2", function(value, element, param) { - return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value); -}, jQuery.validator.messages.email); - -// same as url, but TLD is optional -jQuery.validator.addMethod("url2", function(value, element, param) { - return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value); -}, jQuery.validator.messages.url); - -// NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator -// Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0 -// Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings) -jQuery.validator.addMethod("creditcardtypes", function(value, element, param) { - if (/[^0-9\-]+/.test(value)) { - return false; - } - - value = value.replace(/\D/g, ""); - - var validTypes = 0x0000; - - if (param.mastercard) { - validTypes |= 0x0001; - } - if (param.visa) { - validTypes |= 0x0002; - } - if (param.amex) { - validTypes |= 0x0004; - } - if (param.dinersclub) { - validTypes |= 0x0008; - } - if (param.enroute) { - validTypes |= 0x0010; - } - if (param.discover) { - validTypes |= 0x0020; - } - if (param.jcb) { - validTypes |= 0x0040; - } - if (param.unknown) { - validTypes |= 0x0080; - } - if (param.all) { - validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080; - } - if (validTypes & 0x0001 && /^(5[12345])/.test(value)) { //mastercard - return value.length === 16; - } - if (validTypes & 0x0002 && /^(4)/.test(value)) { //visa - return value.length === 16; - } - if (validTypes & 0x0004 && /^(3[47])/.test(value)) { //amex - return value.length === 15; - } - if (validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test(value)) { //dinersclub - return value.length === 14; - } - if (validTypes & 0x0010 && /^(2(014|149))/.test(value)) { //enroute - return value.length === 15; - } - if (validTypes & 0x0020 && /^(6011)/.test(value)) { //discover - return value.length === 16; - } - if (validTypes & 0x0040 && /^(3)/.test(value)) { //jcb - return value.length === 16; - } - if (validTypes & 0x0040 && /^(2131|1800)/.test(value)) { //jcb - return value.length === 15; - } - if (validTypes & 0x0080) { //unknown - return true; - } - return false; -}, "Please enter a valid credit card number."); - -jQuery.validator.addMethod("ipv4", function(value, element, param) { - return this.optional(element) || /^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test(value); -}, "Please enter a valid IP v4 address."); - -jQuery.validator.addMethod("ipv6", function(value, element, param) { - return this.optional(element) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(value); -}, "Please enter a valid IP v6 address."); - -/** -* Return true if the field value matches the given format RegExp -* -* @example jQuery.validator.methods.pattern("AR1004",element,/^AR\d{4}$/) -* @result true -* -* @example jQuery.validator.methods.pattern("BR1004",element,/^AR\d{4}$/) -* @result false -* -* @name jQuery.validator.methods.pattern -* @type Boolean -* @cat Plugins/Validate/Methods -*/ -jQuery.validator.addMethod("pattern", function(value, element, param) { - if (this.optional(element)) { - return true; - } - if (typeof param === 'string') { - param = new RegExp('^(?:' + param + ')$'); - } - return param.test(value); -}, "Invalid format."); - - -/* - * Lets you say "at least X inputs that match selector Y must be filled." - * - * The end result is that neither of these inputs: - * - * - * - * - * ...will validate unless at least one of them is filled. - * - * partnumber: {require_from_group: [1,".productinfo"]}, - * description: {require_from_group: [1,".productinfo"]} - * - */ -jQuery.validator.addMethod("require_from_group", function(value, element, options) { - var validator = this; - var selector = options[1]; - var validOrNot = $(selector, element.form).filter(function() { - return validator.elementValue(this); - }).length >= options[0]; - - if(!$(element).data('being_validated')) { - var fields = $(selector, element.form); - fields.data('being_validated', true); - fields.valid(); - fields.data('being_validated', false); - } - return validOrNot; -}, jQuery.format("Please fill at least {0} of these fields.")); - -/* - * Lets you say "either at least X inputs that match selector Y must be filled, - * OR they must all be skipped (left blank)." - * - * The end result, is that none of these inputs: - * - * - * - * - * - * ...will validate unless either at least two of them are filled, - * OR none of them are. - * - * partnumber: {skip_or_fill_minimum: [2,".productinfo"]}, - * description: {skip_or_fill_minimum: [2,".productinfo"]}, - * color: {skip_or_fill_minimum: [2,".productinfo"]} - * - */ -jQuery.validator.addMethod("skip_or_fill_minimum", function(value, element, options) { - var validator = this, - numberRequired = options[0], - selector = options[1]; - var numberFilled = $(selector, element.form).filter(function() { - return validator.elementValue(this); - }).length; - var valid = numberFilled >= numberRequired || numberFilled === 0; - - if(!$(element).data('being_validated')) { - var fields = $(selector, element.form); - fields.data('being_validated', true); - fields.valid(); - fields.data('being_validated', false); - } - return valid; -}, jQuery.format("Please either skip these fields or fill at least {0} of them.")); - -// Accept a value from a file input based on a required mimetype -jQuery.validator.addMethod("accept", function(value, element, param) { - // Split mime on commas in case we have multiple types we can accept - var typeParam = typeof param === "string" ? param.replace(/\s/g, '').replace(/,/g, '|') : "image/*", - optionalValue = this.optional(element), - i, file; - - // Element is optional - if (optionalValue) { - return optionalValue; - } - - if ($(element).attr("type") === "file") { - // If we are using a wildcard, make it regex friendly - typeParam = typeParam.replace(/\*/g, ".*"); - - // Check if the element has a FileList before checking each file - if (element.files && element.files.length) { - for (i = 0; i < element.files.length; i++) { - file = element.files[i]; - - // Grab the mimetype from the loaded file, verify it matches - if (!file.type.match(new RegExp( ".?(" + typeParam + ")$", "i"))) { - return false; - } - } - } - } - - // Either return true because we've validated each file, or because the - // browser does not support element.files and the FileList feature - return true; -}, jQuery.format("Please enter a value with a valid mimetype.")); - -// Older "accept" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept -jQuery.validator.addMethod("extension", function(value, element, param) { - param = typeof param === "string" ? param.replace(/,/g, '|') : "png|jpe?g|gif"; - return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i")); -}, jQuery.format("Please enter a value with a valid extension.")); diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/dist/additional-methods.min.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/dist/additional-methods.min.js deleted file mode 100644 index 2a0e4669..00000000 --- a/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/dist/additional-methods.min.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * jQuery Validation Plugin 1.11.1 - * - * http://bassistance.de/jquery-plugins/jquery-plugin-validation/ - * http://docs.jquery.com/Plugins/Validation - * - * Copyright 2013 Jörn Zaefferer - * Released under the MIT license: - * http://www.opensource.org/licenses/mit-license.php - */ -(function(){function a(b){return b.replace(/<.[^<>]*?>/g," ").replace(/ | /gi," ").replace(/[.(),;:!?%#$'"_+=\/\-]*/g,"")}jQuery.validator.addMethod("maxWords",function(c,b,d){return this.optional(b)||a(c).match(/\b\w+\b/g).length<=d},jQuery.validator.format("Please enter {0} words or less."));jQuery.validator.addMethod("minWords",function(c,b,d){return this.optional(b)||a(c).match(/\b\w+\b/g).length>=d},jQuery.validator.format("Please enter at least {0} words."));jQuery.validator.addMethod("rangeWords",function(e,b,f){var d=a(e);var c=/\b\w+\b/g;return this.optional(b)||d.match(c).length>=f[0]&&d.match(c).length<=f[1]},jQuery.validator.format("Please enter between {0} and {1} words."))}());jQuery.validator.addMethod("letterswithbasicpunc",function(b,a){return this.optional(a)||/^[a-z\-.,()'"\s]+$/i.test(b)},"Letters or punctuation only please");jQuery.validator.addMethod("alphanumeric",function(b,a){return this.optional(a)||/^\w+$/i.test(b)},"Letters, numbers, and underscores only please");jQuery.validator.addMethod("lettersonly",function(b,a){return this.optional(a)||/^[a-z]+$/i.test(b)},"Letters only please");jQuery.validator.addMethod("nowhitespace",function(b,a){return this.optional(a)||/^\S+$/i.test(b)},"No white space please");jQuery.validator.addMethod("ziprange",function(b,a){return this.optional(a)||/^90[2-5]\d\{2\}-\d{4}$/.test(b)},"Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx");jQuery.validator.addMethod("zipcodeUS",function(b,a){return this.optional(a)||/\d{5}-\d{4}$|^\d{5}$/.test(b)},"The specified US ZIP Code is invalid");jQuery.validator.addMethod("integer",function(b,a){return this.optional(a)||/^-?\d+$/.test(b)},"A positive or negative non-decimal number please");jQuery.validator.addMethod("vinUS",function(o){if(o.length!==17){return false}var h,a,l,j,b,k;var c=["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"];var m=[1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9];var g=[8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2];var e=0;for(h=0;h<17;h++){j=g[h];l=o.slice(h,h+1);if(h===8){k=l}if(!isNaN(l)){l*=j}else{for(a=0;a9&&a.match(/^(\+?1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/)},"Please specify a valid phone number");jQuery.validator.addMethod("phoneUK",function(a,b){a=a.replace(/\(|\)|\s+|-/g,"");return this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/)},"Please specify a valid phone number");jQuery.validator.addMethod("mobileUK",function(a,b){a=a.replace(/\(|\)|\s+|-/g,"");return this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[45789]\d{2}|624)\s?\d{3}\s?\d{3})$/)},"Please specify a valid mobile number");jQuery.validator.addMethod("phonesUK",function(a,b){a=a.replace(/\(|\)|\s+|-/g,"");return this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[45789]\d{8}|624\d{6})))$/)},"Please specify a valid uk phone number");jQuery.validator.addMethod("postcodeUK",function(b,a){return this.optional(a)||/^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test(b)},"Please specify a valid UK postcode");jQuery.validator.addMethod("strippedminlength",function(b,a,c){return jQuery(b).text().length>=c},jQuery.validator.format("Please enter at least {0} characters"));jQuery.validator.addMethod("email2",function(b,a,c){return this.optional(a)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(b)},jQuery.validator.messages.email);jQuery.validator.addMethod("url2",function(b,a,c){return this.optional(a)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(b)},jQuery.validator.messages.url);jQuery.validator.addMethod("creditcardtypes",function(b,a,c){if(/[^0-9\-]+/.test(b)){return false}b=b.replace(/\D/g,"");var d=0;if(c.mastercard){d|=1}if(c.visa){d|=2}if(c.amex){d|=4}if(c.dinersclub){d|=8}if(c.enroute){d|=16}if(c.discover){d|=32}if(c.jcb){d|=64}if(c.unknown){d|=128}if(c.all){d=1|2|4|8|16|32|64|128}if(d&1&&/^(5[12345])/.test(b)){return b.length===16}if(d&2&&/^(4)/.test(b)){return b.length===16}if(d&4&&/^(3[47])/.test(b)){return b.length===15}if(d&8&&/^(3(0[012345]|[68]))/.test(b)){return b.length===14}if(d&16&&/^(2(014|149))/.test(b)){return b.length===15}if(d&32&&/^(6011)/.test(b)){return b.length===16}if(d&64&&/^(3)/.test(b)){return b.length===16}if(d&64&&/^(2131|1800)/.test(b)){return b.length===15}if(d&128){return true}return false},"Please enter a valid credit card number.");jQuery.validator.addMethod("ipv4",function(b,a,c){return this.optional(a)||/^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test(b)},"Please enter a valid IP v4 address.");jQuery.validator.addMethod("ipv6",function(b,a,c){return this.optional(a)||/^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(b)},"Please enter a valid IP v6 address.");jQuery.validator.addMethod("pattern",function(b,a,c){if(this.optional(a)){return true}if(typeof c==="string"){c=new RegExp("^(?:"+c+")$")}return c.test(b)},"Invalid format.");jQuery.validator.addMethod("require_from_group",function(g,f,d){var e=this;var b=d[1];var c=$(b,f.form).filter(function(){return e.elementValue(this)}).length>=d[0];if(!$(f).data("being_validated")){var a=$(b,f.form);a.data("being_validated",true);a.valid();a.data("being_validated",false)}return c},jQuery.format("Please fill at least {0} of these fields."));jQuery.validator.addMethod("skip_or_fill_minimum",function(h,e,i){var b=this,c=i[0],d=i[1];var g=$(d,e.form).filter(function(){return b.elementValue(this)}).length;var a=g>=c||g===0;if(!$(e).data("being_validated")){var f=$(d,e.form);f.data("being_validated",true);f.valid();f.data("being_validated",false)}return a},jQuery.format("Please either skip these fields or fill at least {0} of them."));jQuery.validator.addMethod("accept",function(e,c,g){var f=typeof g==="string"?g.replace(/\s/g,"").replace(/,/g,"|"):"image/*",d=this.optional(c),b,a;if(d){return d}if($(c).attr("type")==="file"){f=f.replace(/\*/g,".*");if(c.files&&c.files.length){for(b=0;b
    ","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f -}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML="
    a",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/\s*$/g,sb={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:l.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?""!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("'); - var _ifm=$('#ifm_Proxy'); - _ifm.hide(); - var pageContentBody=$('.page-content .page-content-body'); - var linksrcs=new Array(); - var linksids=new Array(); - var linktyps=new Array(); - var _src=""; - for (i=0;i0){ - _src=ifmHeadlins[i].link.src; - linktyps.push("javascriptfile"); - }else{ - _src=ifmHeadlins[i].link.text; - linktyps.push("javascripttext"); - } - }else{ - linktyps.push("undefined"); - } - linksrcs.push(_src); - linksids.push({"pos":ifmHeadlins[i].pos,"scope":ifmHeadlins[i].scope,"id":ifmHeadlins[i].link.id}); - } - var parm={iFrame:ifrm,cssLinktyps:linktyps,cssLinksrcs:linksrcs,cssLinkids:linksids,origin:crossproxysrc,flag:flag}; - if(_ifm&&_ifm.length<=0){//没有添加过 - _ifmProxy.appendTo(pageContentBody); - _ifmProxy.one('load',parm,function(e){ - var data={iFrame:e.data.iFrame,cssLinktyps:e.data.cssLinktyps,cssLinksrcs:e.data.cssLinksrcs,cssLinkids:e.data.cssLinkids,flag:flag}; - $('#ifm_Proxy')[0].contentWindow.postMessage(data,e.data.origin);//window.location.origin - }); - }else if(_ifm.attr("oldproxyorigin")!=crossproxysrc){//代理已经添加过了,看是否是同一个网站的代理,如果不是需要重新加载 - _ifm.attr("src",""); - _ifm.attr("oldproxyorigin",crossproxysrc); - _ifm.one('load',parm,function(e){ - var data={iFrame:e.data.iFrame,cssLinktyps:e.data.cssLinktyps,cssLinksrcs:e.data.cssLinksrcs,cssLinkids:e.data.cssLinkids,flag:flag}; - $('#ifm_Proxy')[0].contentWindow.postMessage(data,e.data.origin);//window.location.origin - }); - _ifm.attr("src",_ifmProxy.attr("src")); - }else{//已经添加过,直接触发消息发送即可 - var data={iFrame:parm.iFrame,cssLinktyps:parm.cssLinktyps,cssLinksrcs:parm.cssLinksrcs,cssLinkids:parm.cssLinkids,flag:flag}; - _ifm[0].contentWindow.postMessage(data,parm.origin);//window.location.origin - } - } - return { - init: function () { - if(zte_http_headers){ - store("zte_http_headers",zte_http_headers); - } - dealInit(); - dealResponsiveOnResize(); - dealResponsiveOnInit(); - dealClearCachedIframes(true); ////清理当前正在显示的iframe之外缓存的iframe, - breadcrumbBtnMenus.clear(); - dealFixedSidebar(); // deals fixed sidebar menu - dealFixedSidebarHoverable(); // deals fixed sidebar on hover effect - dealSidebarMenu(); // deals main menu - dealHorizontalMenu(); // deals horizontal menu - dealSidebarToggler(); // deals sidebar hide/show - dealTheme(); // deals style customer tool - dealSetLayout(); - $(function() { - $(window).on('hashchange',function(){ - loadCurrentHash(); - }); - }); - dealFullScreenMode(); // deals full screen - $("#header_dropdown_user").css('display','block'); - $("#com_zte_ums_ict_framework_img_netnumenLogo").css('display','inline'); - $("#com_zte_ums_ict_framework_ui_main_title").css('display','inline'); - handeCtxMenuitem(); - }, - //公开清理缓存的所有Iframe的方法:isALL==true则清理所有,否则清理当前正在显示的iframe之外缓存的iframe,。 - clearCachedIframes:function(isAll){ - dealClearCachedIframes(isAll); - }, - - setBaseURLRoot:function(ipportStr){//菜单url的跟ip和端口例如:http://10.74.151.122:21180 - if (store) { - store('baseURLRoot', ipportStr); - } - var url = $.url(ipportStr); - location.hash=url.attr('fragment'); - var auth=url.attr('query'); - if (store) { - store('baseURLRootAuth', auth); - } - }, - getBaseURLRoot:function(ipportStr){//菜单url的跟ip和端口例如:http://10.74.151.122:21180 - var rooturl=""; - if (store) { - rooturl=store('baseURLRoot'); - } - return !rooturl?"":rooturl; - }, - clearBaseURLRoot:function(){//菜单url的跟ip和端口例如:http://10.74.151.122:21180 - if (store) { - store('baseURLRoot', "",-1); - } - }, - setPageTitle:function(title){//设置页面标题 - $('title').html(title+" - "+gdocTitle); - }, - getLanguage:function(){//获取语言 - return ZteFrameWork_conf.acceptLanguage; - }, - - getLocationHash:function(){ - return _getLocationHash(); - }, - setSceneURLRootPath:function(sceneURLRootPath){ - if(sceneURLRootPath&&sceneURLRootPath.trim().length>0){//如果定义了场景的全局参数 - _sceneURLRootPath=sceneURLRootPath.trim(); - if(_sceneURLRootPath.charAt(_sceneURLRootPath.length-1)!='/') - { - _sceneURLRootPath=_sceneURLRootPath+'/'; - } - } - }, - //public function to add callback a function which will be called on window resize - addResponsiveHandler: function (func) { - responsiveHandlers.push(func); - }, - - hiddenAlarmLight:function(){ - hideAlarmLight(); - }, - - hiddenMenu:function(){ - hidemenu(); - }, - setBreadcrumbByMenuID:function(id){ - //var breaditem=$('#'+id); - var menuitem=undefined; - // var items=$("a[id='"+id+"']"); - var items = undefined; - var panel = $('.zte-theme-panel'); - var navPosOption = $('.nav-pos-direction', panel).val(); - if (navPosOption === "vertical"){ //从垂直菜单里面找 - items=$("#page-sidebar-menu a[id='"+id+"']"); - if (!items || items.length < 1) { - items=$(".page-content a[id='"+id+"']"); - } - }else if(navPosOption === zteframework_menu_horizontal){//从水平菜单里面找 - items=$("#main_hormenu a[id='"+id+"']"); - if(items.length == 0){ - //横菜单没有找到,再在横菜单的子菜单找一次 - items=$("#page-megachild-sidebar-menu a[id='"+id+"']"); - } - }else if(navPosOption === zteframework_menu_fmenu){ - items=$("#f_hormenu a[id='"+id+"']"); - if(items.length == 0){ - //横菜单没有找到,再在竖菜单找一次。 - items=$("#page-f-sidebar-menu a[id='"+id+"']"); - } - } - var isbreadcrumbMenuItem=false; - if(items.length>0){ - for(var i=0;i0){ - if(isbreadcrumbMenuItem){ - dealBreadcrumbBtnGroupMenus(menuitem,false); - }else{ - dealBreadcrumb(menuitem,true,null); - } - }else{ - var breadcrumbBtnMenuItemParent=""; - if(!menuitem||menuitem.length<=0){//没有找到该菜单,可能是面包削中的,需要额外处理 - var menuItemID=id; - if (breadcrumbBtnMenus.contains(menuItemID)) {//有缓存 - breadcrumbBtnMenuItemParent="#"+breadcrumbBtnMenus.items(menuItemID); - menuitem=$(breadcrumbBtnMenuItemParent); - //_breadcrumbSource=true; - } - } - var parm=undefined; - if(breadcrumbBtnMenuItemParent&&breadcrumbBtnMenuItemParent.length>0){ - parm={breadcrumbBtnMenuItem:menuItemID}; - } - if(parm&&menuitem&&menuitem.length>0) { - dealBreadcrumb(menuitem,true,parm); - } - } - }, - setSiderbarCollapseWidth:function(width){ - _sidebarCollapsedWidth = width; - }, - getSiderbarCollapseWidth:function(){ - return _sidebarCollapsedWidth; - }, - setSidebarWidth:function(width){ - _sidebarWidth = width; - }, - getSidebarWidth:function(){ - return _sidebarWidth; - }, - //2015年10月26日新增动态切换菜单的功能,这里的菜单还需要再次更换菜单项访问的ip端口信息 - handlBaseURL:function(url){ - var baseURLRoot=ZteFrameWork.getBaseURLRoot(); - if (baseURLRoot.length>0) {//2015年10月26日新增动态切换菜单的功能,这里的菜单还需要再次更换菜单项访问的ip端口信息 - baseURLRoot=ZteFrameWork.getDomainURL(baseURLRoot);//去掉ip和port后多余的部分 - console.log("old a link href url:"+url); - url=baseURLRoot+url.replace(ZteFrameWork.getDomainURL(url),""); - console.log("baseURLRoot:"+baseURLRoot+" newURL:"+url); - }; - return url; - }, - - startPageLoading: function(message) { - dealstartPageLoading(message); - }, - stopPageLoading: function() { - dealstopPageLoading(); - }, - //public function to get a paremeter by name from URL - getLocationURLParameter: function (paramName,separator) { - var searchString = decodeURIComponent(window.location.search.substring(1)).toLowerCase(), - i, val, params = searchString.split(separator?separator:"&"); - paramName=paramName.toLowerCase(); - for (i = 0; i < params.length; i++) { - val = params[i].split("="); - if (val[0] == paramName) { - return unescape(val[1]); - } - } - return null; - }, - //public function to get a paremeter by name from URL - getURLParameter: function (paramName,url) { - var searchString = decodeURIComponent(url).toLowerCase(), - i, val, params = searchString.split("&"); - paramName=paramName.toLowerCase(); - for (i = 0; i < params.length; i++) { - val = params[i].split("="); - if (val[0] == paramName) { - return unescape(val[1]); - } - } - return null; - }, - // check for device touch support - isTouchDevice: function () { - return isTouch; - }, - getUniqueID: function(prefix) { - return prefix+'_' + Math.floor(Math.random() * (new Date()).getTime()); - }, - // check IE8 mode - isIE8: function () { - return isIE8; - }, - // check IE9 mode - isIE9: function () { - return isIE9; - }, - //check RTL mode - isRTL: function () { - return isRTL; - }, - getViewPort:function(){ - return _getViewPort(); - }, - // get layout color code by color name - getLayoutColorCode: function (name) { - if (layoutColorCodes[name]) { - return layoutColorCodes[name]; - } else { - return ''; - } - } , - fixContentHeight: function () { - dealSidebarAndContentHeight(); - }, - dealAtoIframe:function(aObj,event){ - var containerStr=aObj.parentsUntil('.page-container').hasClass('page-sidebar')?'page-sidebar':"";// - containerStr=aObj.parentsUntil('.header-inner').hasClass('hor-menu')?'header':containerStr; - dealMenuItemClick(aObj,event,containerStr); - _isClicked=false; - }, - getDomainURL:function(urlAddress){ - var url = $.url(urlAddress); - var protocol=url.attr('protocol'); - var host=url.attr('host'); - var port=url.attr('port'); - var crossOrign=protocol+"://"+host+(port.length>0?":"+port:""); - return crossOrign; - }, - getCurrentScript:function(doc) {//doc为 document对象 - /* 注意该功能在其他脚本中调用时出safari获取到的脚本路径为本方法所在脚本的路径, - 其他浏览器获取到的为调用该方法的脚本所在路径 - 取得正在解析的script节点 - */ - if(doc&&doc.currentScript) { //firefox 4+ - console.log("0、 "+doc.currentScript.src); - return doc.currentScript.src; - } - // 参考 https://github.com/samyk/jiagra/blob/master/jiagra.js - var stack; - try { - a.b.c(); //强制报错,以便捕获e.stack - } catch(e) {//safari的错误对象只有line,sourceId 或者高版本还有sourceURL - stack = e.stack; - if(e.sourceURL){//safari 浏览器没有e.stack但有e.sourceURL - stack=e.sourceURL; - }else if(!stack && window.opera){ - //opera 9没有e.stack,但有e.Backtrace,但不能直接取得,需要对e对象转字符串进行抽取 - stack = (String(e).match(/of linked script \S+/g) || []).join(" "); - } - console.log("1、 "+stack); - } - if(stack) { - /*e.stack最后一行在所有支持的浏览器大致如下: - *chrome23: - * at http://113.93.50.63/data.js:4:1 - *firefox17: - *@http://113.93.50.63/query.js:4 - *opera12: - *@http://113.93.50.63/data.js:4 - *IE10: - * at Global code (http://113.93.50.63/data.js:4:1) - */ - console.log("2、 "+stack); - stack = stack.split( /[@ ]/g).pop();//取得最后一行,最后一个空格或@之后的部分 - stack = stack[0] == "(" ? stack.slice(1,-1) : stack; - console.log("3、 "+stack); - return stack.replace(/(:\d+)?:\d+$/i, "");//去掉行号与或许存在的出错字符起始位置 - } - if(doc){ - var nodes = doc.getElementsByTagName("script"); //只在head标签中寻找 - for(var i = 0, node; node = nodes[i++];) { - if(node.readyState === "interactive") { - console.log("4、 "+(node.className = node.src)); - return node.className = node.src; - } - } - } - }, - /*下面的flag为0表示默认不触发孙子iframe中的onload事件,为1表示要触发,flag为10则对cssSrc重复执行,其他不做重复执行*/ - SyncCSS:function(ifrm,flag,cssSrc){//将主框架中的皮肤css应用到打开的iframe页面中 - if(!ifrm)return; - var ifmHeadlins = new Array(); - if(cssSrc&&cssSrc.length>0&&cssSrc.endWith(".css")){ - var _div = $(''); - var csslink=document.createElement("link"); - csslink.href=_div[0].href;//这里同步菜单定义中cssSrc属性指定的css文件到iframe - _div = null; - csslink.rel="stylesheet"; - csslink.type="text/css"; - csslink.id="ifram_csssrc"; - ifmHeadlins.push({"pos":"head","scope":"all","link":csslink});//pos是添加到子iframe中的位置,scope是子窗体作用返回,one表示直接子窗体,all表示嵌套所有子窗体 - } - if(flag!=10){//当flag为10时下面的css和js都不执行 - if($('#style_color').length>0){ - var csslink=document.createElement("link"); - csslink.href=$('#style_color')[0].href.replace(".css","_ifrm.css");//这里同步的皮肤页面修改为原皮肤页面文件名后缀添加ifrm的css皮肤文件 - csslink.rel="stylesheet"; - csslink.type="text/css"; - csslink.id="style_color"; - ifmHeadlins.push({"pos":"head","scope":"all","link":csslink});//pos是添加到子iframe中的位置,scope是子窗体作用返回,one表示直接子窗体,all表示嵌套所有子窗体 - } - // 将 font-awesome字体图标应用到模块iframe - if($('#font_awesome').length>0){ - var awesomelink=document.createElement("link"); - awesomelink.href=$('#font_awesome')[0].href; - awesomelink.rel="stylesheet"; - awesomelink.type="text/css"; - awesomelink.id="font_awesome"; - ifmHeadlins.push({"pos":"head","scope":"all","link":awesomelink}); - } - // 将pym.js or pym.min.js应用到模块iframe - var pymjsObj=$("script[src*='/pym.']");//模糊查找 - pymjsObj=pymjsObj.length>0?pymjsObj:$("script[src*='/pym1.']"); - if(pymjsObj.length>0){ - var pymjs=document.createElement("script"); - pymjs.src=pymjsObj[0].src; - pymjs.type="text/javascript"; - pymjs.id=!!pymjsObj[0].id?pymjsObj[0].id:"pymjs"; - ifmHeadlins.push({"pos":"head","scope":"one","link":pymjs}); - pymjs=document.createElement("script"); //pym脚本文件加载后要执行new pym.Child()进行iframe子窗体实例化,便于子窗体和父窗体通讯new pym.Child({ id: '"+_iframe+"' ,polling: 1000}) - var frameid=(_iframe.split('-').length>0?_iframe.split('-')[1]:"1"); - pymjs.text="var t1;function pmchd(){console.log('In the frame "+_iframe+",pym code call is begining; '+(typeof pym!= 'undefined'));if(typeof pym != 'undefined'){pymChild"+frameid+" = new pym.Child({ id: 'pdiv_"+_iframe+"' ,polling: 500});window.clearInterval(t1); }};t1 = window.setInterval(pmchd,5);"; - pymjs.type="text/javascript"; - pymjs.id="pymChild"; - ifmHeadlins.push({"pos":"htmlend","scope":"one","link":pymjs}); - } - // 将hk.js or hk.min.js应用到模块iframe - var hkjsObj=$("script[src*='/hk.']");//模糊查找 - hkjsObj=hkjsObj.length>0?hkjsObj:$("script[src*='/hk1.']"); - if(hkjsObj.length>0){ - var hkjs=document.createElement("script"); - hkjs.src=hkjsObj[0].src; - hkjs.type="text/javascript"; - hkjs.id=!!hkjsObj[0].id?hkjsObj[0].id:"hkjs"; - ifmHeadlins.push({"pos":"head","scope":"one","link":hkjs}); - hkjs=document.createElement("script"); ////hk.js 加载后拦截ajax请求进行转发 - } - } - var crossOrign=ZteFrameWork.getDomainURL(ifrm.src); - if( window.location.origin==crossOrign){ //第一层同域处理 - for (i=0;i0){ - var ifmHeadlins2 = new Array(); - for (i=0;i0){ - console.log('跨域访问: 系统将进入跨域访问代理处理流程 '); - dealCrossProxy(childifrms[j].name,childOrign,ifmHeadlins2,flag); - } - } - } - } - }else{ - if(ifmHeadlins.length>0){ - console.log('跨域访问: 系统将进入跨域访问代理处理流程 '); - dealCrossProxy(ifrm.name,crossOrign,ifmHeadlins,flag); - } - } - }, - goToURL:function(url){ - dhByBreadcrumb = true;//全局变量,声明此次事件是由点击面包屑发起的 - var showNav=ZteFrameWork.getLocationURLParameter('showNav'); - if(showNav=="false"){//如果不显示菜单,就强制刷新本页 - location.reload(); - }else{ - url="a[name='"+url+"']"; - $(url).click(); - } - }, - goToURLByName:function(name){ - var showNav=ZteFrameWork.getLocationURLParameter('showNav'); - if(showNav=="false"){//如果不显示菜单,就强制刷新本页 - location.reload(); - }else{ - url="a[name='"+name+"']"; - $(url).click(); - } - }, - goToURLByID:function(id){ - if(!id){ - return; - } - var showNav=ZteFrameWork.getLocationURLParameter('showNav'); - if(showNav=="false"){//如果不显示菜单,就强制刷新本页 - location.reload(); - }else{ - if(id.indexOf("#")<0){ - id="#"+id; - } - $(id).click(); - } - }, - goToPortal:function(id){ - var _url=top.location.href; - console.log(_url); - //_url="/ngict/iui/framework/"; - var url=$.url(_url); - top.location=url.attr("directory")+"uifportal.html#"+id+"/"; - }, - //Category - goToURLByIDAndNewIPPort:function(id,newIPPort,newActionStr){ - //先把NewIPPort对象:newIPPort={menuCategoryID:'vim',ipPortStr:'htpp://10.74.151.123:31180',newTitle:''}缓存到Category数组中, - //menuCategoryID属性是更多菜单上配置的菜单的分类id,; - //ipPortStr属性是该id的菜单要替换的新的ip和端口地址字符串,包括协议部分,比如http://10.74.151.64:21169 - //newTitle属性用于放置新开ip的页面对应到面包屑上的名字,可以为“”,空标识不关注 - _menuCategorys.replace(newIPPort.menuCategoryID,{ipPort:newIPPort.ipPortStr,ipTitle:newIPPort.newTitle});//把当前面包削中的菜单id和该子菜单对应的父菜单关联缓存起来 - if (store) { - store('menuCategoryID', newIPPort.menuCategoryID+"[menuCategoryID]"+newIPPort.ipPortStr+"[menuCategoryID]"+(!!newIPPort.newTitle?newIPPort.newTitle:"")); - } - //这里增加按照newIPPort.menuCategoryID分类加载more菜单的处理逻辑 - //首先根据id找到对应的主菜单菜单项 - var menuitem = this.findMenuItemByMenuId(id); - if(!menuitem||menuitem.length<=0){//主菜单中没有找到,就找more菜单,找到id对应的more菜单项所属的主菜单项 - var mainMenuId = this.getMenuItemId_From_MoreMenuRelation(id); - if( !!mainMenuId&&mainMenuId.length>0 ){//more菜单中找到了id对应的主菜单项id,根据id返回主菜单项 - menuitem = this.findMenuItemByMenuId(mainMenuId); - if(!!menuitem&&menuitem.length>0){ - var more=$("#"+id,$('#pageableDiv')).parent(); - $(".box.boxOperation", $(".carousel-inner")).removeClass("moreButtonSelected"); - more=$('a>div.box',more); - if (more.hasClass('moreButtonSelected') == false){ - more.addClass('moreButtonSelected'); - } - var pagesTags=$('.item.moreButtonsTag'); - if(pagesTags.length>0){ - for(var i=0;i0){ - tags.addClass('active'); - } - } - } - } - } - } - //其次找到的菜单项中newIPPort.menuCategoryID对应的src覆盖breadcrumgroupbuttonsrc属性值, - if(!!menuitem&&menuitem.length>0){ - var mulsrc=menuitem.attr(newIPPort.menuCategoryID+"-multiInsrc"); - if(!!mulsrc){ - menuitem.attr("breadcrumgroupbuttonsrc" ,mulsrc); - getBreadcrumbRightButtons(mulsrc,true); - } - } - if (waittime) { - clearInterval(waittime); - } - waittime = setInterval(function () { - if(moreMenusisLoaded==true){ - clearInterval(waittime); - ZteFrameWork.goToURLByIDAndNewAction(id,newActionStr,null); - } - }, 10); - }, - goToURLByIDAndNewAction:function(id,newActionStr,newBrowserPageOption){ - if(!id){ - return; - } - - /*if(id.indexOf("#")<0){ - id="#"+id; - }*/ - var menuitem = this.findMenuItemByMenuId(id); - //处理新开页面情况 - if(newBrowserPageOption){ - var href = ICTFRAME_CONST_DEFAULTPAGE_PATH; - var hash = getLocationHashByMenuId(id); - var newin=window.open(href + newBrowserPageOption.paramStr + hash,newBrowserPageOption.windowTitle); - newin.name=newActionStr;//注意这种传递参数的方法,被打开的页面中需要通过top.name中获取该传递的参数。 - return; - } - //$(window).off('hashchange', loadCurrentHash); - var menuItemID=menuitem?menuitem.attr("id"):""; - if(!!menuItemID&&menuItemID.length>0){ - //menuItemID="#" + menuItemID; - //menuItemID=!!newActionStr?menuItemID:menuItemID+"/no"; - _setLocationHash(menuItemID); - } - var breadcrumbBtnMenuItemParent=""; - if(!menuitem||menuitem.length<=0){//没有找到该菜单,可能是面包削中的,需要额外处理 - menuItemID=id; - if (breadcrumbBtnMenus.contains(menuItemID)) {//有缓存 - breadcrumbBtnMenuItemParent=breadcrumbBtnMenus.items(menuItemID); - menuitem=this.findMenuItemByMenuId(breadcrumbBtnMenuItemParent); - //_breadcrumbSource=true; - } - // else{//在新增的可翻页的更多菜单里面找 - // var pageDiv = $('#pageableDiv'); - // menuitem=$('#' + menuItemID , pageDiv); - // } - if( menuitem && menuitem.length > 0){ - isMoreMenuItemClick = true; - } - } - if(!menuitem||menuitem.length<=0){ - //面包屑和主菜单都没有找到,情况可能是:更多菜单点击打开后,刷新,hash已经更改,但是对应的更多菜单的html没有加载,需要找到更多菜单和主菜单的对应关系 - var mainMenuId = this.getMenuItemId_From_MoreMenuRelation( id ); - if( mainMenuId ){ - menuitem = this.findMenuItemByMenuId(mainMenuId); - } - - } - if (store&&store("globleCurrentBreadcrumb")){ - globleCurrentBreadcrumb=store("globleCurrentBreadcrumb"); - //下面处理下刷新整个页面后从cookie中获取来的最后一次操作的面包屑对应的对应菜单的name属性回写,便于面包屑事件响应能够找到对应的菜单 - var al=$("a",$("
    "+globleCurrentBreadcrumb+"
    ")); - var alink,gal; - for(i=0;i0){ - var panel = $('.zte-theme-panel'); - var navPosOption = $('.nav-pos-direction', panel).val(); - if(navPosOption === zteframework_menu_fmenu){ - var hparentid=menuitem.attr("hparentid"); - var id=menuitem.attr("id"); - var i=0,menuItemH=menuitem; - while (id!=hparentid&&i<20){ - menuItemH=ZteFrameWork.findMenuItemByMenuId(hparentid); - hparentid=menuItemH.attr("hparentid"); - id=menuItemH.attr("id"); - i++; - }; - if(!menuItemH.hasClass('active')) - menuItemH.parent().addClass("active"); - } - }else{ - console.log("goToURLByIDAndNewAction():Can't find the menuitem.The menu ID is:"+id+".Please check if the ID or ID cache is correct."); - } - //try{ - var parm=undefined; - if(!!newActionStr&&breadcrumbBtnMenuItemParent&&breadcrumbBtnMenuItemParent.length>0){ - parm={action:newActionStr,breadcrumbBtnMenuItem:menuItemID}; - }else if(!!newActionStr){ - parm={action:newActionStr}; - }else if(breadcrumbBtnMenuItemParent&&breadcrumbBtnMenuItemParent.length>0){ - parm={breadcrumbBtnMenuItem:menuItemID}; - }else if(mainMenuId){ - isMoreMenuItemClick = true; - parm={breadcrumbBtnMenuItem:menuItemID}; - } - //if(breadChangeType){ - // if(!parm){ - // parm = {}; - // } - // parm.breadChangeType = breadChangeType; - //} - if(parm&&parm.action || parm&&parm.breadChangeType) { - _hashSource="dhByInterface"; - } - - if(menuitem&&menuitem.length>0){ - menuitem.one('click',parm,function(e){ //临时一次性的注册一次click事件处理函数,执行完毕会自动删除 - ZteFrameWork.dealAtoIframe($(this),e); - //$(window).one('hashchange', loadCurrentHash); - return false; - }); - menuitem.click();//后执行 - } - /*}catch(e){} - finally{ - //$(window).on('hashchange', loadCurrentHash); - }*/ - }, - - getBreadcrumbEle:function(){ - return $('.breadcrumbUl')[0]; - }, - - - findMenuItemByMenuId:function( id ){ - var menuitem=undefined; - var panel = $('.zte-theme-panel'); - var navPosOption = $('.nav-pos-direction', panel).val(); - - var items = undefined; - if (navPosOption === "vertical"){ //从垂直菜单里面找 - items=$("#page-sidebar-menu a[id='"+id+"']"); - }else if(navPosOption === zteframework_menu_horizontal){//从水平菜单里面找 - items=$("#main_hormenu a[id='"+id+"']"); - if(items.length == 0){ - //横菜单没有找到,再在横菜单的子菜单找一次 - items=$("#page-megachild-sidebar-menu a[id='"+id+"']"); - } - }else if(navPosOption === zteframework_menu_fmenu){ - items=$("#f_hormenu a[id='"+id+"']"); - if(items.length == 0){ - //横菜单没有找到,再在竖菜单找一次。 - items=$("#page-f-sidebar-menu a[id='"+id+"']"); - - } - - } - if( items&&items.length == 0 ){ - console.log( 'fmenu alink length is :' + $("#page-f-sidebar-menu a").length ); - console.log( 'cant find menu in sidemenu、megamenu and fmenu , the menu id is ' + id ); - } - if(items&&items.length>0){ - for(var i=0;i0){ - for(var i=0;i 0) { - parm = { - breadcrumbBtnMenuItem : menuItemID - }; - } - if (menuitem && menuitem.length > 0) { - menuitem.one('click', parm, function (e) { //临时一次性的注册一次click事件处理函数,执行完毕会自动删除 - var containerStr = $(this).parentsUntil('.page-container').hasClass('page-sidebar') ? 'page-sidebar' : ""; // - containerStr = $(this).parentsUntil('.header-inner').hasClass('hor-menu') ? 'header' : containerStr; - _isClicked = false; - dealMenuItemGetFocus($(this),e,containerStr); - return false; - }); - menuitem.click(); //后执行 - } - }, - // 处理面包削中的按钮菜单增加的导航连接,显示在iframe中 - openbreadcrumbLink:function(aObject,e) { - var url = aObject.attr("href"); - if(!url||url.length<2) - return; - e.preventDefault(); - dealScrollTo(); - var menuItemID=aObject.attr("id"); - if(!!menuItemID&&menuItemID.length>0){ - _setLocationHash(menuItemID); - _hashSource="dhByInterface"; - } - dealstartPageLoading(); - dealIframe(aObject,e); - }, - getURLParam:function(name){ - var reg = new RegExp("(^|&)" + name.toLowerCase() + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象 - var search =decodeURIComponent(location.search.substring(1)).toLowerCase(); - var r =search.match(reg); //匹配目标参数 - if (r != null) return unescape(r[2]); - return null; //返回参数值 - } - }; - -}(); - -var currentRunningScriptSrcPath = {}; -//抽取html片段中任意位置的script标签(包括代码是内嵌的情况)逐个运行(不会在单个script加载不到的时候停下来) -function runHtmlScripts(s) { - var div = document.createElement('div'); - div.innerHTML = s; - var scripts = div.getElementsByTagName('script'); - $(scripts).each(function(){ - var src = this.src; - src=ZteFrameWork.handlBaseURL(src); - if(src){ - //存储当前Script标签的绝对路径以适应该js被其他系统跨域引用的情况 - currentRunningScriptSrcPath[src.substring(src.lastIndexOf("/") + 1)] = src.substring(0, src.lastIndexOf("/")+1); - $.getScript(src); - }else{ - $.globalEval(this.text || this.textContent || this.innerHTML || ''); - } - }); -} -function stripHtmlScripts(s) { - var div = document.createElement('div'); - div.innerHTML = s; - var scripts = div.getElementsByTagName('script'); - $(scripts).each(function(){ - /* if(this.src){ - $.getScript(this.src); - }else{ - $.globalEval(this.text || this.textContent || this.innerHTML || ''); - } */ - this.src=ZteFrameWork.handlBaseURL(this.src); - this.parentNode.removeChild(this); - }); - return div.innerHTML; -} -function getsiderBarMenu(url){ - if (url.length<2){ - return; - } - url=ZteFrameWork.handlBaseURL(url); - ZteFrameWork.startPageLoading();//菜单加载中请稍候.... - var pagesidebar=$('#page-sidebar-menu'); - pagesidebar.empty(); - pagesidebar.append(""); - $.ajax({ - type: "GET", - cache: false, - url: url, - dataType: "html", - success: function (res) { - //去除script标签以后添加到主框架以防止append方法因为加载script标签失败导致后面的代码无法运行 - //res = stripHtmlScripts(res); - var resScriptsSriped = stripHtmlScripts(res); - pagesidebar.append(resScriptsSriped); - runHtmlScripts(res); - - siderBarMenuAuthentication(); - dealMysqlBackupMenu(); - //loadi18n_WebFramework_sideMenu(); - setTimeout(function () { - ZteFrameWork.stopPageLoading(); - goToHomePage(); - }, 1000); - }, - error: function (xhr, ajaxOptions, thrownError) { - //$('#page-sidebar-menu').append('');//加载系统菜单失败!;//加载系统菜单失败! - } - }); -}; -var setLayoutValueByCookie = function () { - var panel = $('.zte-theme-panel'); - if (store('layout-option') != undefined) { - $('.layout-option', panel).val(store('layout-option')); - } - if (store('language-option') != undefined) { - $('.language-option', panel).val(store('language-option')); - } - if (store('sidebar-option') != undefined) { - $('.sidebar-option', panel).val(store('sidebar-option')); - } - if (store('header-option') != undefined) { - $('.header-option', panel).val(store('header-option')); - } - if (store('sidebar-pos-option') != undefined) { - $('.sidebar-pos-option', panel).val(store('sidebar-pos-option')); - } - var horMenuLoadTip = $("[class='nav-load-error']", $(".hormenu")); - var sideMenuLoadTip = $("[class='nav-load-error']", $("[class='page-sidebar-menu']")); - // 横竖菜单都无错误提示,都正确加载 - // if ((!horMenuLoadTip || horMenuLoadTip.length <= 0) && (!sideMenuLoadTip || sideMenuLoadTip.length <= 0)) { - // if (store('nav-pos-direction') != undefined) { - // var navPosOption = store('nav-pos-direction'); - // $('.nav-pos-direction', panel).val(navPosOption); - // } else { - $('.nav-pos-direction', panel).val('fmenu'); - // $.ajax({ - // "dataType" : 'json', - // "type" : "GET", - // "async" : false, - // url : FrameConst.REST_GET_FRAME_MENUDIRECTION + "&tmpstamp=" + new Date().getTime(), - // "success" : function (obj) { - // if (obj.value && (obj.value != "")) { - // $('.nav-pos-direction', panel).val(obj.value); - // } - // } - // }); - //} - // } else { - // $('.nav-pos-direction', panel).attr("disabled", true); - // } -} -function getHorMenu(url){ - setLayoutValueByCookie(); - if (url.length<2){ - return; - } - url=ZteFrameWork.handlBaseURL(url); - ZteFrameWork.startPageLoading();//菜单加载中请稍候.... - var pagehorbar=$('#main_hormenu') - pagehorbar.empty(); - $.ajax({ - type: "GET", - async : false, - cache: false, - url: url, - dataType: "html", - success: function (res) { - //去除script标签以后添加到主框架以防止append方法因为加载script标签失败导致后面的代码无法运行 - //res = stripHtmlScripts(res); - var resScriptsSriped = stripHtmlScripts(res); - $('#main_hormenu').append(resScriptsSriped); - runHtmlScripts(res); - // 增加mysql判断,如果数据库为mysql,去掉基础数据备份功能菜单项 - var dbType = ZteFrameWork_conf.dbType; - if (dbType == "mysql") { - var item=$(".hor-menu a[id='uep-ict-backup-baseDataBack']"); - item.parent().remove(); - } - horMenuAuthentication('main_hormenu'); - ZteFrameWork.stopPageLoading(); - if($('.nav-pos-direction', panel).val() === "horizontal"){ - setTimeout(function () { - //goToHomePage();//注意这里由于水平和左边栏菜单都在一个页面中出现,所以这里只调用一次 - }, 150); - } - }, - error: function (xhr, ajaxOptions, thrownError) { - //$('#main_hormenu').append('');//加载系统菜单失败! - var pcontent = $("[class='page-content']"); - //pcontent.css("marginLeft",225); - $('.nav-pos-direction', panel).attr("disabled", true); - } - }); -}; -//加载横菜单的子菜单,加到左边的siderbar里面 -function getMegaFMenu( url ){ - if (url.length<2){ - return; - } - url=ZteFrameWork.handlBaseURL(url); - ZteFrameWork.startPageLoading();//菜单加载中请稍候.... - var siderDiv =$( '#' + megaSiderDivId ); - siderDiv.empty(); - siderDiv.append(""); - $.ajax({ - type: "GET", - async : false, - cache: false, - url: url, - dataType: "html", - success: function (res) { - //去除script标签以后添加到主框架以防止append方法因为加载script标签失败导致后面的代码无法运行 - var resScriptsSriped = stripHtmlScripts(res); - siderDiv.append(resScriptsSriped); - runHtmlScripts(res); - FMenuAuthentication( megaDivId ,megaSiderDivId ); - rebuildHorMenu(); - ajustFMenu( megaDivId ,megaSiderDivId ); - ZteFrameWork.stopPageLoading(); - }, - error: function (xhr, ajaxOptions, thrownError) { - //siderDiv.append('');//加载系统菜单失败! - //var pcontent = $("[class='page-content']"); - //pcontent.css("marginLeft",225); - } - }); -} - -function iniHorMenu(){ - var hormenu=$('#main_hormenu'); - if(!hormenu) return; - var url=hormenu.attr("menuSrc"); - if(url&&url.length>0){ - getHorMenu(url); - } - // - var megaFMenu = $('#'+megaSiderDivId); - if(!megaFMenu) return; - var url = megaFMenu.attr("menuSrc"); - if(url&&url.length>0){ - getMegaFMenu(url); - } -}; -function iniFMenu(){ - var fhormenu=$('#f_hormenu'); - var fsidemenu=$('#page-f-sidebar-menu'); - if(!fhormenu || !fsidemenu) return; - var urlmega=fhormenu.attr("menuSrc"); - var urlsider=fsidemenu.attr("menuSrc"); - if(urlmega&&urlmega.length>0 && urlsider && urlsider.length > 0){ - getFMenu(urlmega , urlsider); - } -}; -function getFMenu( urlMega , urlSider ){ - if (urlMega.length<2 || urlSider.length<2){ - return; - } - urlMega=ZteFrameWork.handlBaseURL(urlMega); - urlSider=ZteFrameWork.handlBaseURL(urlSider); - ZteFrameWork.startPageLoading();//菜单加载中请稍候.... - var fhorbar=$('#f_hormenu'); - fhorbar.empty(); - var fSideBar= $("#page-f-sidebar-menu"); - fSideBar.empty(); - $.ajax({ - type: "GET", - async : false, - cache: false, - url: urlMega, - dataType: "html", - success: function (res) { - var resScriptsSriped = stripHtmlScripts(res); - $('#f_hormenu').append(resScriptsSriped); - horMenuAuthentication('f_hormenu'); - runHtmlScripts(res); - dealMysqlBackupMenu(); - ZteFrameWork.stopPageLoading(); - }, - error: function (xhr, ajaxOptions, thrownError) { - $('#f_hormenu').append('');//加载系统菜单失败! - var pcontent = $("[class='page-content']"); - $('.nav-pos-direction', panel).attr("disabled", true); - } - }); - var fpagesidebar=$('#' + fMenuSiderDivId); - fpagesidebar.empty(); - fpagesidebar.append(""); - $.ajax({ - type: "GET", - cache: false, - url: urlSider, - dataType: "html", - success: function (res) { - var resScriptsSriped = stripHtmlScripts(res); - fpagesidebar.append(resScriptsSriped); - //先全部隐藏,后面根据与hash的匹配情况来显示 - fpagesidebar.children().css('display','none'); - runHtmlScripts(res); - dealMysqlBackupMenu(); - FMenuAuthentication( fMenuMegaDivId ,fMenuSiderDivId ); - ajustFMenu( fMenuMegaDivId ,fMenuSiderDivId ); - ZteFrameWork.stopPageLoading(); - loadi18n_WebFramework_sideMenu(); - }, - error: function (xhr, ajaxOptions, thrownError) { - $('.page-f-sidebar-menu').append('');//加载系统菜单失败!;//加载系统菜单失败! - } - }); -}; -function iniSidebarMenu(){ - var sidermenu=$('#page-sidebar-menu'); - if(!sidermenu) return; - var url=sidermenu.attr("menuSrc"); - if(url&&url.length>0){ - getsiderBarMenu(url); - } -}; -function getChangePWDDlg(url){ - if (url.length<2){ - return; - } - ZteFrameWork.startPageLoading();//加载中.... - var pageChangepasswd=$('.modal-dialog .Changepasswd'); - pageChangepasswd.empty(); - $.ajax({ - type: "GET", - cache: false, - url: url, - dataType: "html", - success: function (res) { - $('.modal-dialog .Changepasswd').append(res); - ChangePWD.init(); - ZteFrameWork.stopPageLoading(); - }, - error: function (xhr, ajaxOptions, thrownError) { - $('.modal-dialog .Changepasswd').append('

    '+$.i18n.prop('com_zte_ums_ict_framework_ui_loadchgpwdpageError')+'

    ');//加载修改密码页面失败! - } - }); -}; -function iniChangePWDDlg(){ - var url=$('.modal-dialog .Changepasswd').attr("dlgsrc"); - if(url&&url.length>0){ - getChangePWDDlg(url); - } -}; -function getHeaderMenu(url){ - if (url.length<2){ - return; - } - ZteFrameWork.startPageLoading();//加载中请稍候.... - var headerMenu=$('#headerMenu'); - headerMenu.empty(); - $.ajax({ - type: "GET", - cache: false, - async: false, - url: url, - dataType: "html", - success: function (res) { - $('#headerMenu').append(res); - ZteFrameWork.stopPageLoading(); - }, - error: function (xhr, ajaxOptions, thrownError) { - //$('#headerMenu').append('

    '+$.i18n.prop('com_zte_ums_ict_framework_ui_loadmenuerror')+'

    ');//加载系统菜单失败! - } - }); -}; -function goToHomePage(){ - locationhash = ZteFrameWork.getLocationHash(); - if(!!locationhash&&locationhash.length>0){//有锚点,直接触发 - var newIPPort=null; - if (store&&store('menuCategoryID')) { - var s=store('menuCategoryID').split('[menuCategoryID]'); - if(s.length>2){ - newIPPort={menuCategoryID:s[0],ipPortStr:s[1],newTitle:s[2]}; - } - } - if(!!newIPPort){ - ZteFrameWork.goToURLByIDAndNewIPPort(locationhash,newIPPort,null); - }else{ - ZteFrameWork.goToURLByIDAndNewAction(locationhash,null,null); - } - }else{//否则还是模拟点击配置了start类的菜单 - var containerStr = ""; - //var sidermenu = $("[class='page-sidebar-menu']", $("[class='page-sidebar navbar-collapse collapse']")); - var sidermenu = $("#page-sidebar-menu"); - var hormenu = $("#main_hormenu"); - var fhormenu = $('#' + fMenuMegaDivId); - var fhormenusider = $('#page-f-sidebar-menu'); - var startmenu = null; - var navPosOption = $('.nav-pos-direction', panel).val(); - // 侧边栏显示,根据侧边栏CSS选择 - if (navPosOption === "vertical") { - //containerStr=$('.page-sidebar').length>0?'.page-sidebar':""; - startmenu = $('.iframe.start' , sidermenu); - dealStartMenu( startmenu, sidermenu ); - } - // 水平菜单显示,根据水平菜单CSS选择 - else if (navPosOption === "horizontal") { - //containerStr=$('.hor-menu').length>0?'.header':containerStr; - startmenu = $('.iframe.start' , hormenu); - dealStartMenu( startmenu, hormenu ); - - } - //F菜单的恒菜单显示 - else if (navPosOption === zteframework_menu_fmenu) { - //containerStr=$('.hor-menu').length>0?'.header':containerStr; - startmenu = $('.iframe.start' ,fhormenu); - if (startmenu && startmenu.length < 1) { - startmenu = $('.iframe.start' ,fhormenusider); - } - dealStartMenu( startmenu, fhormenu,fhormenusider ); - } - } -}; -var dealStartMenu = function(startmenu , menuContainer,menuContainer2 ){ - var timer =setInterval(function () { - if(startmenu&&startmenu.length>0){ - startmenu.click(); - clearInterval(timer); - }else{ - console.log('the start menu click event is not be triggerd ,so do it repeat!!'); - $('a[operation]', menuContainer).each(function () { - startmenu = $(this); - return false; - }); - if (menuContainer2&&startmenu && startmenu.length < 1) { - $('a[operation]', menuContainer2).each(function () { - startmenu = $(this); - return false; - }); - } - } - }, 100); - handeCtxMenuitem(); - } -// 屏蔽横竖菜单项的右键功能 -function handeCtxMenuitem() { - $(".page-sidebar ul li a").each(function() { - if ($(this).attr("href") && $(this).attr("href") != "javascript:;" && $(this).attr("href") != "#") { - $(this).attr("oncontextmenu", "return false"); - } - }); - $(".hormenu li a").each(function() { - if ($(this).attr("href") && $(this).attr("href") != "javascript:;" && $(this).attr("href") != "#") { - $(this).attr("oncontextmenu", "return false"); - } - }); -} -function initBaseInfo(){ - $("#logout_label").text($.i18n.prop('com_zte_ums_ict_framework_ui_group_logout')); - $("#fullscreen_label").text($.i18n.prop('com_zte_ums_ict_framework_ui_group_fullscreen')); - $("#changePwd_label").text($.i18n.prop('com_zte_ums_ict_framework_ui_changePwd')); - $("#com_zte_ums_ict_framework_moudle_about").text($.i18n.prop('com_zte_ums_ict_framework_moudle_about')); - $("#com_zte_ums_ict_framework_moudle_help").text($.i18n.prop('com_zte_ums_ict_framework_moudle_help')); - $("#zte_menu-toggler").attr("title",$.i18n.prop('com_zte_ums_ict_framework_moudle_menutoggler')); -}; -window.closeModal = function(modalid) { - if(!modalid){ - return; - } - if(modalid.indexOf("#")<0){ - modalid="#"+modalid; - } - $(modalid).modal('hide'); -}; -function getLcsRight(lcsoperations) { - var lcsrights = new Array(); - if (lcsoperations && (lcsoperations.length > 0)) { - // 请求后台license value - //----test data---- - // var testjson = '{"data":[{"id":"mylcs","name":"xxx","value":"false"}]}'; - // var testopt = eval('(' + testjson + ')'); - // var testarray = testopt.data; - //-----end test data--- - var keys = { - "keys" : lcsoperations - }; - var jsonvalues = JSON.stringify(keys); - var data = { - "data" : jsonvalues - }; - var url=FrameConst.REST_GETLICENSEINFO + "?tmpstamp=" + new Date().getTime(); - url=ZteFrameWork.handlBaseURL(url); - $.ajax({ - "dataType" : 'json', - "type" : "GET", - "async" : false, - "url" : url, - "data" : data, - //"contentType" : 'application/json; charset=utf-8', - "success" : function (response) { - if (response) { - lcsrights = response.data; - } - }, - "error" : function (XMLHttpRequest, textStatus, errorThrown) { - lcsrights = null; - } - }); - return lcsrights; - } - return lcsrights; -} -// 侧边栏菜单鉴权 -function siderBarMenuAuthentication() { - // license 鉴权 - var menuids = new Array(); - var lcsoperations = new Array(); - //从页面DOM取得菜单license项。 - $('a[licenseid]', $('.page-sidebar-menu')).each(function () { - var licenseid = $(this).attr("licenseid"); - if (licenseid) { - lcsoperations.push(licenseid); - var id = $(this).attr("id"); - menuids.push(id); - } - }); - var lcsrights = getLcsRight(lcsoperations);// 取得license数据。 - if (lcsrights && (lcsrights.length == menuids.length)) { - // 根据后台license值判断所在菜单项是否显示 - for (var i = 0; i < menuids.length; i++) { - var id = menuids[i]; - var lcskey = lcsoperations[i]; - var lcsitem = lcsrights[i]; - // 菜单项如果配了licenseid, 并且不是true字符串, 则移除菜单项 - if (lcsitem.value != "True") { - $('#'+id, $('.page-sidebar-menu')).parent().remove(); - } - } - } - var operations = new Array(); - $('a[operation]', $('.page-sidebar-menu')).each(function () { - var operation = $(this).attr("operation"); - if (operation) { - operations.push(operation); - } - }); // 遍历菜单项,提取所有的操作码 - var rightObj = getAllOperCodeRights(operations); // 对操作码进行鉴权判断 - $('a[operation]', $('.page-sidebar-menu')).each(function () { - var operation = $(this).attr("operation"); - if (operation) { - if (!hasRight(operation, rightObj)) { - $(this).parent("li").remove(); // 删除没有权限的菜单项 - } - } - }); - rebuildSiderBarMenu(); -}; -// 横向菜单栏鉴权 -function horMenuAuthentication( horMenuId ) { - // license 鉴权 - var menuids = new Array(); - var lcsoperations = new Array(); - //从页面DOM取得菜单license项。 - $('a[licenseid]', $('#'+ horMenuId)).each(function () { - var licenseid = $(this).attr("licenseid"); - if (licenseid) { - lcsoperations.push(licenseid); - var id = $(this).attr("id"); - menuids.push(id); - } - }); - var lcsrights = getLcsRight(lcsoperations);// 取得license数据。 - if (lcsrights && (lcsrights.length == menuids.length)) { - // 根据后台license值判断所在菜单项是否显示 - for (var i = 0; i < menuids.length; i++) { - var id = menuids[i]; - var lcskey = lcsoperations[i]; - var lcsitem = lcsrights[i]; - // 菜单项如果配了licenseid, 并且不是true字符串, 则移除菜单项 - if (lcsitem.value != "True") { - $('#'+id, $('#'+ horMenuId)).parent().remove(); - } - } - } - var operations = new Array(); - $('a[operation]', $('#'+ horMenuId)).each(function () { - var operation = $(this).attr("operation"); - if (operation) { - operations.push(operation); - } - }); // 遍历菜单项,提取所有的操作码 - var rightObj = getAllOperCodeRights(operations); // 对操作码进行鉴权判断 - $('a[operation]', $('#'+ horMenuId)).each(function () { - var operation = $(this).attr("operation"); - if (operation) { - if (!hasRight(operation, rightObj)) { - $(this).parent("li").remove(); // 删除没有权限的菜单项 - } - } - }); - rebuildHorMenu(); -}; -//根据F菜单的竖菜单来调整横菜单。获取hparentid相同的竖菜单中的第一个,来更新横菜单上对应父亲菜单的href、catchnum等信息 -function ajustFMenu(megaBarDivId , siderbarDivId){ - var hparentIds = {}; - $('a[hparentid]', $('#'+ siderbarDivId)).each(function () { - var hparentId = $(this).attr("hparentId"); - var parentMenu = $('a[id = ' + hparentId + ']', $('#' + megaBarDivId)); - var oldAHref = parentMenu.attr("href"); - if (oldAHref == null || oldAHref.trim() == "#" || oldAHref == "javascript") { - var hrefMenu = $(this); - //竖菜单的第一级有可能是虚菜单,则找这个虚节点下面的第一个有href的菜单 - if( $(this).attr('href') == null || $(this).attr('href') == "#" || $(this).attr('href') == "javascript:;"){ - $('a[href]', $(this).parent().children('ul')).each(function () { - hrefMenu = $(this); - if (hrefMenu != null && hrefMenu != "#" && hrefMenu != "javascript") { - return false; //跳出循环 - } - }) - } - parentMenu.attr("href", hrefMenu.attr("href")); - parentMenu.attr("shiftjs", hrefMenu.attr("shiftjs")); - parentMenu.attr("cachenum", hrefMenu.attr("cachenum")); - parentMenu.attr("iframeName", hrefMenu.attr("iframeName")); - parentMenu.attr("xdomain", hrefMenu.attr("xdomain")); - parentMenu.attr("cssSrc", hrefMenu.attr("cssSrc")); - parentMenu.attr("category", hrefMenu.attr("category")); - parentMenu.attr("breadcrumgroupbuttonsrc", hrefMenu.attr("breadcrumgroupbuttonsrc")); - parentMenu.attr("operation", hrefMenu.attr("operation")); - parentMenu.attr("iframeautoscroll", hrefMenu.attr("iframeautoscroll")); - } - }); -} -function FMenuAuthentication(megaBarDivId , siderbarDivId){ - var beforeHparentId = {}; - $('a[hparentid]', $('#'+ siderbarDivId)).each(function(){ - var parentid = $(this).attr("hparentid"); - beforeHparentId[parentid] = 1; - }); - checkFmenuRightByAttr('licenseid' , megaBarDivId , siderbarDivId , getLcsRight); - checkFmenuRightByAttr('operation' , megaBarDivId , siderbarDivId, getAllOperCodeRights); - rebuildSiderBarMenu(); - var afterHparentId={}; - $('a[hparentid]', $('#'+ siderbarDivId)).each(function(){ - var parentid = $(this).attr("hparentid"); - afterHparentId[parentid] = 1; - }); - //比较鉴权前后的父菜单差异,如果这个父菜单自己没有href属性,且鉴权后,所有的子菜单都没有权限,那么这个父菜单需要从界面上去掉 - for( var parentid in beforeHparentId ){ - if( afterHparentId[parentid] == null ){ - var parent = $('#'+ parentid , $('#'+ megaBarDivId)); - if(parent.attr('href') == null || parent.attr('href') == "javascript:;" || parent.attr('href') == "#"){ - parent.parent().remove(); - } - } - } -} -function checkFmenuRightByAttr( attrName, megaBarDivId , siderbarDivId ,callback ){ - // license 鉴权 - var menuids = new Array(); - var parentMenuId = new Array(); - var operations = new Array(); - //从页面DOM取得菜单license项。 - $('a['+ attrName+']', $('#'+ siderbarDivId)).each(function () { - var attrValue = $(this).attr(attrName); - if (attrValue) { - operations.push(attrValue); - var id = $(this).attr("id"); - menuids.push({'id':id }); - } - }); - var rights = callback(operations);// 取得license数据。 - if (rights && (rights.length == menuids.length)) { - // 根据后台license值判断所在菜单项是否显示 - for (var i = 0; i < menuids.length; i++) { - var id = menuids[i].id; - var hparentId =menuids[i].hParentId; - var key = operations[i]; - var item = rights[i]; - // 菜单项如果配了licenseid, 并且不是true字符串, 则移除菜单项 - if (item.value != "True") { - $('#'+id, $('#'+ siderbarDivId)).parent().remove(); - } - } - } -} -// “更多操作”分组按钮鉴权 -function groupButtonAuthentication() { - // license 鉴权 - var menuids = new Array(); - var lcsoperations = new Array(); - //从页面DOM取得菜单license项。 - $('a[licenseid]', $('.more-botton-zone > li.btn-group')).each(function () { - var licenseid = $(this).attr("licenseid"); - if (licenseid) { - lcsoperations.push(licenseid); - var id = $(this).attr("id"); - menuids.push(id); - } - }); - var lcsrights = getLcsRight(lcsoperations);// 取得license数据。 - if (lcsrights && (lcsrights.length == menuids.length)) { - // 根据后台license值判断所在菜单项是否显示 - for (var i = 0; i < menuids.length; i++) { - var id = menuids[i]; - var lcskey = lcsoperations[i]; - var lcsitem = lcsrights[i]; - // 菜单项如果配了licenseid, 并且不是true字符串, 则移除菜单项 - if (lcsitem.value != "True") { - $('#'+id, $('.more-botton-zone > li.btn-group')).parent().remove(); - } - } - } - // 增加mysql判断,如果数据库为mysql,去掉基础数据备份功能菜单项 - var dbType = ZteFrameWork_conf.dbType; - if (dbType == "mysql") { - $("#uep-ict-backup-baseDataBack",$('.more-botton-zone > li.btn-group')).parent().remove(); - } - var operations = new Array(); - $('a[operation]', $('.more-botton-zone > li.btn-group')).each(function () { - var operation = $(this).attr("operation"); - if (operation) { - operations.push(operation); - } - }); // 遍历菜单项,提取所有的操作码 - var rightObj = getAllOperCodeRights(operations); // 对操作码进行鉴权判断 - $('a[operation]', $('.more-botton-zone > li.btn-group')).each(function () { - var operation = $(this).attr("operation"); - if (operation) { - if (!hasRight(operation, rightObj)) { - $(this).parent("li").remove(); // 删除没有权限的菜单项 - } - } - }); - // 如果“更多菜单”下没有子菜单了,则删除整个“更多菜单”下拉框。 - if ($('li > a', $('.more-botton-zone > li.btn-group')).length == 0) { - $('.more-botton-zone > li.btn-group').remove(); - } -}; -// 删除没有子菜单的一级菜单,查看新菜单是否配了登录默认页面,如没有则指定第一个有权限的菜单作为登录后默认页面 -function rebuildSiderBarMenu() { - if ($('a.start').length == 0) { - $('li > a[href!="javascript:;"]', $('.page-sidebar-menu')).eq(0).addClass("start"); - } - $('ul.sub-menu', $('.page-sidebar-menu')).each(function () { - if ($(this).has('li').length == 0) { - $(this).parent("li").remove(); - } - }); -}; -// 删除没有子菜单的一级菜单,查看新菜单是否配了登录默认页面,如没有则指定第一个有权限的菜单作为登录后默认页面 -function rebuildHorMenu() { - if ($('a.start').length == 0) { - $('li > a[href!="#"]', $('#main_hormenu')).eq(0).addClass("start"); - } - $('ul.mega-menu-submenu', $('#main_hormenu')).each(function () { - if ($(this).has('li > a').length == 0) { - $(this).remove(); // 删空的分组列 - } - }); - //删除增加的分组div - $('div.zteDivWidth', $('#main_hormenu')).each(function () { - if ($(this).has('ul').length == 0) { - $(this).remove(); // 删空的分组列 - } - }); - $('ul.dropdown-menu', $('#main_hormenu')).each(function () { - if ($(this).has('ul').length == 0) { - $(this).parent("li").remove(); // 删空的一级菜单栏 - } - }); - $('li.divider', $('#main_hormenu')).each(function () { - if ($(this).next().hasClass('divider')) { - $(this).remove(); // 连续出现分隔线则删除一个 - } - }); - $('li.divider', $('#main_hormenu')).each(function () { - if ($(this).next().length == 0) { - $(this).remove(); // 如果分隔线在最后一行,则删除之 - } - }); -} -//获取页面菜单栏所有的操作码权限 -function getAllOperCodeRights(operations) { - var rights = new Array(); - if( operations && operations.length > 0 ){ - var data = { - "operations" : operations - }; - var sendData = JSON.stringify(data); - var url=FrameConst.REST_CHECKRIGHT + "?data=" + sendData + "&tmpstamp=" + new Date().getTime(); - url=ZteFrameWork.handlBaseURL(url); - $.ajax({ - "dataType" : 'json', - "type" : "GET", - "async" : false, - "url" : url, - "data" : null, - //"contentType" : 'application/json; charset=utf-8', - "success" : function (response) { - rights = response.value; - }, - "error" : function (XMLHttpRequest, textStatus, errorThrown) { - if (XMLHttpRequest.status == 401) { - window.location.replace("login.html"); - } else { - console.log('Communication Error!'); - } - } - }); - } - return { - opCodes : operations, - rights : rights - }; -}; -// 判断操作码是否有权限 -function hasRight(opCode, rightObj) { - for (var i = 0; i < rightObj.opCodes.length; i++) { - if (rightObj.opCodes[i] == opCode) { - return (rightObj.rights[i] == true); - } - } - return false; -}; -// 处理mysql环境下备份菜单的合并问题 -function dealMysqlBackupMenu() { - var dbType = ZteFrameWork_conf.dbType; - if (dbType !== undefined && dbType !== "mysql") { - return; - } - var sidermenu = $("[class='page-sidebar-menu']"); - var hormenu = $(".hormenu"); - //这段代码先这么写,html的位置不一定正确,如果后面位置不一致,再修改。 - if (sidermenu.length > 0 && $('#uep-ict-backup-dataBackup').length > 0) { - $('#uep-ict-backup-dataBackup', sidermenu).attr("breadcrumGroupButtonSrc", ICTFRAME_CONST_DATABACKUP_PATH); - } - if (hormenu.length > 0 && $('#uep-ict-backup-dataBackup').length > 0) { - $('#uep-ict-backup-dataBackup', hormenu).attr("breadcrumGroupButtonSrc", ICTFRAME_CONST_DATABACKUP_PATH); - $('#uep-ict-backup-dataBackup').parent('li').attr('style', 'display:block'); - $('#uep-ict-backup-allDbStructBackup').parent('li').attr('style', 'display:none'); - $('#uep-ict-backup-baseDataBack').parent('li').attr('style', 'display:none'); - } -}; -// 浏览器缩小后导航栏隐藏的情况下点击navbar-toggle显示菜单的前置工作, -// 浏览器缩小后导航栏隐藏的情况下点击navbar-toggle显示菜单的前置工作, -function dealMavToggle(navtoggle) { - var sidermenu = $("#page-sidebar-menu"); - var hormenu = $("#main_hormenu"); - var panel = $(".zte-theme-panel"); - var siderbarpos = $(".nav-pos-direction", panel).val() - if ("hidden" == $(navtoggle).attr("navtoggledispattr")) { - $(navtoggle).attr("navtoggledispattr", "display"); - sidermenu.css('display','block');//侧边栏显示 - hormenu.css("display", "none");//隐藏水平菜单栏 - } else { - $(navtoggle).attr("navtoggledispattr", "hidden"); - sidermenu.css('display','none');//侧边栏隐藏 - hormenu.css("display", "none"); - } -}; diff --git a/uiframe-iui/src/main/resources/webroot/framework/js/core/ZteFrameWork.min.js b/uiframe-iui/src/main/resources/webroot/framework/js/core/ZteFrameWork.min.js deleted file mode 100644 index 3eb6a5fc..00000000 --- a/uiframe-iui/src/main/resources/webroot/framework/js/core/ZteFrameWork.min.js +++ /dev/null @@ -1,150 +0,0 @@ -String.prototype.trim=function(){return this.replace(/(^\s*)|(\s*$)/g,"")};String.prototype.format=function(){if(0==arguments.length)return this;for(var b=this,d=0;d>0;gb?this.data.seg.path.length+b:b-1;return this.data.seg.path[b]},fsegment:function(b){if("undefined"===typeof b)return this.data.seg.fragment;b=0>b?this.data.seg.fragment.length+b:b-1;return this.data.seg.fragment[b]}}} -var l={a:"href",img:"src",form:"action",base:"href",script:"src",iframe:"src",link:"href",embed:"src",object:"data"},u="source protocol authority userInfo user password host port relative path directory file query fragment".split(" "),q={anchor:"fragment"},I={strict:/^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,loose:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/}, -w=/^[0-9]+$/;m.jQuery=function(b){null!=b&&(b.fn.url=function(h){var g="";this.length&&(g=b(this).attr(d(this[0]))||"");return m(g,h)},b.url=m)};m.jQuery(window.jQuery);return m});ZteFrameWork_conf={userName:store.get("username"),changePassItem:FrameConst.change_pass?FrameConst.change_pass:!0,helpMenuItem:!1,aboutMenuItem:!1,flightMenuItem:!1,fullscreenMenuItem:!1,logoutMenuItem:!0,defaultThemeColor:"ztebluelight2",dbType:"other",acceptLanguage:"zh-CN"};$("#currentUser").html(ZteFrameWork_conf.userName); -$.ajax({url:FrameConst.REST_FRAMECOMMIFO,type:"GET",cache:!1,contentType:"application/json; charset=utf-8",success:function(b){b.helpMenuItem&&""!=b.helpMenuItem&&(ZteFrameWork_conf.helpMenuItem=b.helpMenuItem);b.aboutMenuItem&&""!=b.aboutMenuItem&&(ZteFrameWork_conf.aboutMenuItem=b.aboutMenuItem);b.flightMenuItem&&""!=b.flightMenuItem&&(ZteFrameWork_conf.flightMenuItem=b.flightMenuItem);b.fullscreenMenuItem&&""!=b.fullscreenMenuItem&&(ZteFrameWork_conf.fullscreenMenuItem=b.fullscreenMenuItem);b.logoutMenuItem&& -""!=b.logoutMenuItem&&(ZteFrameWork_conf.logoutMenuItem=b.logoutMenuItem);b.defaultThemeColor&&""!=b.defaultThemeColor&&(ZteFrameWork_conf.defaultThemeColor=b.defaultThemeColor);b.dbType&&""!=b.dbType&&(ZteFrameWork_conf.dbType=b.dbType);b.acceptLanguage&&""!=b.acceptLanguage&&(ZteFrameWork_conf.acceptLanguage=b.acceptLanguage);b.changePassItem&&""!=b.changePassItem&&(ZteFrameWork_conf.changePassItem=b.changePassItem);setFrameWorkByConf()},error:function(b){setFrameWorkByConf()}}); -function setThemeColor(b){var d=$(".zte-theme-panel");$(".theme-colors > ul > li",d).each(function(){var d=$(this).attr("data-style");d==b&&($(this).addClass("current"),$("#style_color").attr("href","css/themes/"+d+".css"),store("style_color",d))})} -function setFrameWorkByConf(){var b=ZteFrameWork_conf.helpMenuItem,d=ZteFrameWork_conf.aboutMenuItem,h=ZteFrameWork_conf.flightMenuItem,k=ZteFrameWork_conf.fullscreenMenuItem,g=ZteFrameWork_conf.logoutMenuItem,n=ZteFrameWork_conf.changePassMenuItem;b&&"false"!==b||$("#uep_ict_help_url").parent("li").remove();d&&"false"!==d||$('[data-target="#aboutDlg"]').parent("li").remove();b||d||$("#uep_ict_help_div").remove();h&&"false"!==h||$("#header_notification_bar").html("
          
    "); -k&&"false"!==k||$("#trigger_fullscreen_div").html("");g&&"false"!==g||$("#trigger_logout_div").html("");(!k&&!g||"false"===k&&"false"===g)&&$("#full_logout_divider").css("display","none");n||($("#changePwd_labellink").css("display","none"),$("#full_logout_divider").css("display","none"));b=ZteFrameWork_conf.defaultThemeColor;d=$(".zte-theme-panel");$("ul > li",d).removeClass("current");store&&!store("style_color")?setThemeColor(b):setThemeColor(store("style_color"))} -function Hashtable(){this._hash={};this._count=0;this.add=function(b,d){if(this._hash.hasOwnProperty(b))return!1;this._hash[b]=d;this._count++;return!0};this.hash=function(){return this._hash};this.remove=function(b){delete this._hash[b];this._count--};this.count=function(){return this._count};this.items=function(b){if(this.contains(b))return this._hash[b]};this.contains=function(b){return this._hash.hasOwnProperty(b)};this.clear=function(){this._hash={};this._count=0};this.replace=function(b,d){this.contains(b)&& -this.remove(b);return this.add(b,d)}} -var fMenuSiderDivId="page-f-sidebar-menu",fMenuMegaDivId="f_hormenu",megaSiderDivId="page-megachild-sidebar-menu",megaDivId="main_hormenu",zteframework_menu_horizontal="horizontal",zteframework_menu_vertical="vertical",zteframework_menu_fmenu="fmenu",zteframework_showNav="true",zteframework_smallView=960,ZteFrameWork=function(){var b=getLanguage(),d=!1,h=function(){try{return document.createEvent("TouchEvent"),!0}catch(c){return!1}},k=!h,g=!1,n=!1,m=!1,l="",u=225,q=35,I=[],w=new Hashtable,x=new Hashtable, -C=new Hashtable,V=new Hashtable,y="page-mainIframe",J="",v="",D=!1,ca={blue:"#4b8df8",red:"#e02222",green:"#35aa47",purple:"#852b99",grey:"#555555","light-grey":"#fafafa",yellow:"#ffb848",ztebluelight:"#3366cc"},G=function(){var c=window,t="inner";"innerWidth"in window||(t="client",c=document.documentElement||document.body);return{width:c[t+"Width"],height:c[t+"Height"]}},va=function(){var c=getUrlParam("menu");switch(c?c:0){case "1":l=$("#com_zte_ums_ict_framework_ui_page_title_1").text().trim(); -break;case "2":l=$("#com_zte_ums_ict_framework_ui_page_title_2").text().trim();break;case "3":l=$("#com_zte_ums_ict_framework_ui_page_title_3").text().trim();break;default:l=$("#com_zte_ums_ict_framework_ui_page_title").text().trim()}"rtl"===$("body").css("direction")&&(d=!0);g=!!navigator.userAgent.match(/MSIE 8.0/);n=!!navigator.userAgent.match(/MSIE 9.0/);(m=!!navigator.userAgent.match(/MSIE 10.0/))&&$("html").addClass("ie10");(m||n||g)&&$("html").addClass("ie");navigator.userAgent.toLowerCase().match(/(iphone|ipod|ipad)/)? -($(document).on("focus","input, textarea",function(){$(".page-header").hide();$(".page-footer")&&0<$(".page-footer").length&&$(".page-footer").hide()}),$(document).on("blur","input, textarea",function(){$(".page-header").show();$(".page-footer")&&0<$(".page-footer").length&&$(".page-footer").show()})):($(document).on("focus","input, textarea",function(){$(".page-footer")&&0<$(".page-footer").length&&$(".page-footer").hide()}),$(document).on("blur","input, textarea",function(){$(".page-footer")&&0< -$(".page-footer").length&&$(".page-footer").show()}))},F=function(c){$(".page-loading").remove();$("body").append('
      '+(c?c:$.i18n.prop("com_zte_ums_ict_framework_ui_loading"))+"
    ")},da=function(){G().widthm&&(m=c.length,l=c)});h=h+getStringWidth(l,14)+94.5}h+H>c?(console.log("ajust class dropdown-menu-right ,id = "+b.attr("id")),d.addClass("dropdown-menu-right")):d.removeClass("dropdown-menu-right")}},B=function(c){var t=$(".page-content"),f=$(".page-content-body"),b=$(".page-sidebar"),d=$("body"),g,h=G(),l=Math.min(window.screen.availHeight,h.height)-5,z=$(".footer"), -m=$(".page-breadcrumb"),n=$("#pageableDiv");console.log("pageableDiv height:"+n.outerHeight(!0));var u=$(".header");"isc"===(x.items(y)?x.items(y).childpageType:"")&&$(".sidebar-option",panel).val("fixed");var r=ZteFrameWork.getLocationURLParameter("showNav");"false"==r&&(zteframework_showNav=r,ha(),ia());r=l-(!z||0>=z.length?0:z.outerHeight(!0))-u.outerHeight(!0);n=!n||0>=n.length||!1==n.is(":visible")?0:n.outerHeight(!0);f=l-u.outerHeight(!0)-(!z||0>=z.length||!1==z.is(":visible")?0:z.outerHeight(!0))- -m.outerHeight(!0)-n-(f.outerHeight(!0)-f.height());m=""==y?"page-mainIframe":y;if((n=$(".page-content .page-content-body ."+m))&&0f?b.height():f;b.attr("style",q);if(!k){q=f;try{q=n.contents().height()}catch(Ja){}f=q>f?q:f}x.items(m).setMinHeight&& -(n=Math.min(l,f),console.log("pym:parent iframe "+m+" window.screen.availHeight:"+l+" viewport.height:"+h.height+" h:"+f+" minHeight:"+n),x.items(m).setMinHeight(n))}!0===d.hasClass("page-footer-fixed")&&!0===d.hasClass("page-sidebar-fixed")?t.height()=z.length?0:z.outerHeight(!0),1024<$(window).width()&&g+b+z=zteframework_smallView?(ga(),"none"!=$(".page-sidebar-menu li").css("display")&&$("body").hasClass("page-sidebar-closed")&&$(".sidebar-toggler").hasClass("close-by-viewportChange")&&(c||$(".sidebar-toggler")[1].click(),$(".sidebar-toggler").removeClass("close-by-viewportChange"))):ga(!0)},ya=function(c){var t;if(0      ")},Aa=function(c){var b=$(".zte-theme-panel"),b=$(".nav-pos-direction",b).val(),f=null,p=null;"vertical"===b?(f=$("#"+c.attr("id"),$("#main_hormenu")),p=$(".header ul")):"horizontal"===b?(f=za(c),ka(c,megaSiderDivId),p=f[0],f=f[1]):b===zteframework_menu_fmenu&&ka(c,fMenuSiderDivId);p&&(p.children("li.active").removeClass("active"),p.find(".arrow.open").removeClass("open"));f&&(f.parents("li").each(function(){$(this).addClass("iframe active"); -$(this).find("a > span.arrow").addClass("open")}),f.parents("li").addClass("active"),"horizontal"===b&&f.parent().parent().parent().is("li")&&$(".arrow",f.parent().parent().parent()).addClass("open"))},za=function(c){targetsource=$("#"+c.attr("id"),$("[class='page-sidebar-menu']"));targetContainer=$("#page-sidebar-menu ul");$("li.open",targetContainer).each(function(){$("ul.sub-menu",this).attr("style")&&($("ul.sub-menu",this).removeAttr("style"),$(this).removeClass("open"))});if(0<=c.parent().parent().parent().parent().attr("class").indexOf("page-sidebar-menu")){c= -$("#"+c.attr("id"),$("#main_hormenu"));var b=$(".header ul");b.children("li.active").removeClass("active");b.find(".arrow.open").removeClass("open");c.parents("li").each(function(){$(this).addClass("iframe active");$(this).find("a > span.arrow").addClass("open")});c.parents("li").addClass("active")}return[targetContainer,targetsource]},ka=function(c,b){var f=$("#"+b);if(R)R=!1;else if($(c).parents("li").hasClass("mega-menu-dropdown")){var p=c.attr("id");$("#"+b+">li").hide();var d=$("a[hparentid= "+ -p+"]",f).parent();d.show();0li.sidebar-toggler-wrapper").show();0<$("a[hparentid= "+p+"]",f).length?la(c,b):(f.css("display","none"),$("body").addClass("page-full-width"),$(".page-content").css("marginLeft",u))}else"true"==zteframework_showNav&&($("#"+b+">li").hide(),p=$(c).parents("li"),p=p.eq(p.length-1).children("a").attr("hparentid"),d=$("a[hparentid="+p+"]",f).parent(),d.show(),0li.sidebar-toggler-wrapper").show(),la(c,b))},la=function(c,b){var f=$("#"+ -b);f.css("display","block");$("ul.sub-menu",f).css("display","block");$(".arrow",f).addClass("open");$("body").removeClass("page-full-width");$("body").hasClass("page-sidebar-closed")?$(".page-content").css("marginLeft",q):$(".page-content").css("marginLeft",u);var p=c.attr("href");$("li.iframe",f).removeClass("active");f=$("a[href ='"+p+"']",f).parent();f.addClass("active");f.parent().parent().addClass("open").addClass("active");f.parent().css("display","block");f.parent().parent().children("a").children(".arrow").addClass("open")}, -Z=function(c,b,f){var p=c.attr("href");if(p&&!(2>p.length)){b.preventDefault();D||(D=!0,p=c.parents("li").last(),p.hasClass("open")||Y(p.children("a:eq(0)")));f&&0 span.arrow").addClass("open")});c.parents("li").addClass("active");Aa(c);f&&0=$(window).width()&&$("."+f).hasClass("in")&&$(".navbar-toggle").click();if(dealMultTabPage(c))return!0; -f=b.data&&b.data.breadcrumbBtnMenuItem&&0p.length||(b.preventDefault(),D||(D=!0,b=c.parents("li").last(),Y(b.children("a:eq(0)"))),f&&0 span.arrow").addClass("open")}),c.parents("li").addClass("active"),f&&0=$(window).width()&&$("."+f).hasClass("in")&&$(".navbar-toggle").click())},S=function(c,b){function f(c,b,f,t,d,p,g){c=new pym.Parent(c,b,{xdomain:p});c.iframe.id=f;c.iframe.name=t;c.iframe.setAttribute("class",d);c.iframe.setAttribute("allowfullscreen","");c.iframe.setAttribute("mozallowfullscreen","");c.iframe.setAttribute("oallowfullscreen","");c.iframe.setAttribute("msallowfullscreen",""); -c.iframe.setAttribute("webkitallowfullscreen","");c.iframe.setAttribute("onload",'ZteFrameWork.SyncCSS(this,0,"'+m+'");ZteFrameWork.stopPageLoading();');x.replace(f,c);c.onMessage("height",function(c){console.log("The frame "+f+" receive message height is "+c);var b=$(".page-content .page-content-body ."+f);c=Math.max(this.minHeight,c);b.height(c)});return c}v="";var p=c.attr("href");if(p&&!(2>p.length)){var p=ZteFrameWork.handlBaseURL(p),d=c.attr("category");if(d&&0=$("#"+g).length&&u.append("
    "),F(),pymParent=f(g,p,d,d,d,_xdomain,l),g=$(pymParent.iframe),0 a",function(c){!1==$(this).next().hasClass("sub-menu")?!1==$(".btn-navbar").hasClass("collapsed")&&$(".btn-navbar").click():$(this).next().hasClass("sub-menu always-open")||(Y($(this)),c.preventDefault())});$(".page-sidebar").on("click"," li > a.iframe",function(c){c.preventDefault();var b=$(this).attr("id");b&&0 a.iframe",function(c){2> -$(this).attr("href").length||(c.preventDefault(),L($(this),c))});$("#pageableDiv").on("click"," div > a.iframe",function(c){2>$(this).attr("href").length||(c.preventDefault(),L($(this),c))});$("#pageableDiv").on("click"," li > a.iframe",function(c){if(!(2>$(this).attr("href").length)){c.preventDefault();if(c.target){var b=$("span",c.target),b=0div>span",c.target.parentNode.parentNode.parentNode.parentNode.parentNode).replaceWith(b.outerHTML)}L($(this),c)}});$(".dropdown").on("click", -" li > a.iframe",function(c){2>$(this).attr("href").length||(c.preventDefault(),F(),S($(this),c),M($(this),!1,c))})},ma="",T=!0,U=null,aa=function(c,b){if(!(2>c.length))if(c=ZteFrameWork.handlBaseURL(c),ma==c)if(!0===b)$("#pageableDiv").show();else{if(b&&b.target&&b.currentTarget){var f=$(b.target).attr("defaultDisplay");(f=f?f:$(b.currentTarget).attr("defaultDisplay"))&&"false"==f.trim()?$("#pageableDiv").hide():$("#pageableDiv").show()}}else{ma=c;clearMoreOperations();var d=b&&b.data&&b.data.breadcrumbBtnMenuItem&& -0=d.length?b&&b.breadcrumbBtnMenuItem&&0');g.children().remove();g.append(f);var h=$(".dropdown-menu",g).attr("displayType");if(h&&"pageableDiv"!=h)$(".more-botton-zone").append(f), -$("#pageableDiv").hide();else{var k=$(".dropdown-menu",g);if(0f.length)f=$(".page-content a[id='"+d+"']");if(0"+$.i18n.prop("com_zte_ums_ict_framework_ui_loadmenuerror")+"");T=!0}})}};dealMultTabPage=function(c){var b=c.attr("href");if(b&&!(2>b.length)){var f= -c.attr("redirect");if(f&&0",b),c=E.substring(0,b)+""):c=void 0,ba="";else{for(;g&&0"+c),g.parent("ul").attr("id")==fMenuSiderDivId||g.parent("ul").attr("id")==megaSiderDivId?(g=g.children("a").attr("hparentid"),h==zteframework_menu_horizontal?magaMenu=$("#"+megaDivId):h==zteframework_menu_fmenu&&(magaMenu=$("#"+fMenuMegaDivId)),g=$("a[id="+g+"]",magaMenu).parent("li")):g=g.parents("li"));g[0]&&0"+c)}d.empty();$(".more-botton-zone").empty();E=c;store("globleCurrentBreadcrumb",E);d.append(c);k&&0"+f);d=d.parents("li")}d[0]&&0"+f);g&&0'+ -f);f=E+f;b.append(f)},R=!1,L=function(c,b){var f=c.attr("id");f&&0=$(".footer").length)?0:$(".footer").outerHeight());return c},X= -function(){var c=$(".page-sidebar-menu");1===c.parent(".slimScrollDiv").size()&&(c.removeAttr("style"),$(".page-sidebar").removeAttr("style"));0===$(".page-sidebar-fixed").size()?B():G().width>=zteframework_smallView&&(ja(),B())},pa=function(){!1!==$("body").hasClass("page-sidebar-fixed")&&($(".page-sidebar").off("mouseenter").on("mouseenter",function(){Da()}),$(".page-sidebar").off("mouseleave").on("mouseleave",function(){Ea()}))},Da=function(){var c=$("body"),b=$(".page-sidebar");!1===c.hasClass("page-sidebar-closed")|| -!1===c.hasClass("page-sidebar-fixed")||$(this).hasClass("page-sidebar-hovering")||(c.removeClass("page-sidebar-closed").addClass("page-sidebar-hover-on"),$(".sidebar-toggler"),c.hasClass("page-sidebar-reversed")?b.width(u):(b.addClass("page-sidebar-hovering"),b.animate({width:u},350,"",function(){b.removeClass("page-sidebar-hovering")})))},Ea=function(){var c=$("body");if(!1!==c.hasClass("page-sidebar-hover-on")&&!1!==c.hasClass("page-sidebar-fixed")&&!$(this).hasClass("page-sidebar-hovering")){var b= -$(".page-sidebar"),f=$(".sidebar-toggler");c.hasClass("page-sidebar-reversed")?(c.addClass("page-sidebar-closed").removeClass("page-sidebar-hover-on"),b.width(q),f&&f.removeAttr("style")):(b.addClass("page-sidebar-hovering"),b.animate({width:q},350,"",function(){c.addClass("page-sidebar-closed").removeClass("page-sidebar-hover-on");b.removeClass("page-sidebar-hovering");f&&f.removeAttr("style")}))}},K=function(c,b,f,d){var g=c.attr("style")?c.attr("style"):"";styles=g.split(";");var h="";for(i=0;i< -styles.length;i++)if(0<=styles[i].indexOf(b)){h=styles[i];break}g=0=zteframework_smallView&&$("body").addClass("page-sidebar-closed");$(".page-sidebar, .sidebar-toggler").on("click",".sidebar-toggler",function(c){c.preventDefault();c=$("body");$(".page-sidebar");c.hasClass("page-sidebar-closed")&&$(this).removeAttr("style")});$(".page-sidebar, .header").on("click", -".sidebar-toggler",function(c){var b=$("body"),d=$(".page-sidebar");b.hasClass("page-sidebar-hover-on")&&b.hasClass("page-sidebar-fixed")||d.hasClass("page-sidebar-hovering")?(b.removeClass("page-sidebar-hover-on"),d.css("width","").hide().show(),B(),A("sidebar_closed","0"),c.stopPropagation()):($(".sidebar-search",d).removeClass("open"),c=$(".zte-theme-panel"),$(".sidebar-pos-option",c).val(),c=$("[class='page-content']"),b.hasClass("page-sidebar-closed")?(b.removeClass("page-sidebar-closed"),b.hasClass("page-sidebar-fixed")&& -d.css("width",""),A("sidebar_closed","0"),c.css("marginLeft",u)):(b.addClass("page-sidebar-closed"),$(this).removeAttr("style"),A("sidebar_closed","1"),c.css("marginLeft",q)),B(!0));W()})},Ga=function(){$(".header").on("click",".hor-menu .hor-menu-search-form-toggler",function(c){$(this).hasClass("off")?($(this).removeClass("off"),$(".header .hor-menu .search-form").hide()):($(this).addClass("off"),$(".header .hor-menu .search-form").show());c.preventDefault()});$(".header").on("click"," li > a.iframe", -function(c){c.preventDefault();var b=$(this).attr("id");b&&0')})},qa=function(){var c=0;return setInterval(function(){var b;null==b&& -(b=ZteFrameWork_conf.userName);b=FrameConst.REST_HEARTBEAT+"?username="+encodeURIComponent(b);$.ajax(b,{dataType:"text",cache:!1}).done(function(b){"true"==b&&(c=0)});c++;6<=c&&(disableHeartbeat(),bootbox.alert($.i18n.prop("com_zte_ums_aos_framework_ui_heartbeat_fail"),function(){window.location.replace("login.html")}))},1E4)};if(FrameConst.do_heartbeat)var O=qa();window.enableHeartbeat=function(){return O?"Already enabled!":(heartBeatTimes=0,O=qa(),"Enabled")};window.disableHeartbeat=function(){return O? -(clearInterval(O),O=null,"Disabled"):"Already disabled!"};window.doLogout=function(){window.location=FrameConst.REST_LOGOUT};$("#trigger_logout").click(function(){bootbox.confirm($.i18n.prop("com_zte_ums_ict_framework_ui_confirmlogout"),function(c){c&&doLogout()})});var P=!1,Ha=function(){function c(){if(screenfull.supportsFullScreen)screenfull.isFullScreen?screenfull.exitFullScreen():screenfull.requestFullScreen(),P=screenfull.isFullscreen;else if(isIE&&"undefined"!==typeof window.ActiveXObject){var c= -new ActiveXObject("WScript.Shell");null!==c&&(c.SendKeys("{F11}"),P=!P)}else P=screenfull.supportsFullScreen;setTimeout(function(){P?$("#fullscreen_label").text($.i18n.prop("com_zte_ums_ict_framework_ui_group_exitfullscreen")):$("#fullscreen_label").text($.i18n.prop("com_zte_ums_ict_framework_ui_group_fullscreen"))},500)}$("#trigger_fullscreen").click(function(){c()})},ra=function(c){if(0 .theme-options").show()});$(".toggler-close",c).click(function(){$(".toggler").show();$(".toggler-close").hide();$(".zte-theme-panel > .theme-options").hide()}); -$(".theme-colors > ul > li",c).click(function(){var b=$(this).attr("data-style");d(b);$("ul > li",c).removeClass("current");$(this).addClass("current")});$(".layout-option,.header-option, .sidebar-option, .footer-option, .sidebar-pos-option, .nav-pos-direction",c).change(function(){ta()});void 0!=Q("style_color")&&d(Q("style_color"));$(".language-option",c).change(function(){var b=$(".language-option",c).val();A("language-option",b);window.location.reload()})},ta=function(){var c=$(".zte-theme-panel"), -b=$(".layout-option",c).val(),f=$(".language-option",c).val(),d=$(".header-option",c).val(),g=$(".footer-option",c).val(),h=$(".nav-pos-direction",c).val();var k=$(".zte-theme-panel");if("disabled"!=$(".nav-pos-direction",k).attr("disabled")){var l=$("#page-sidebar-menu"),m=$("#main_hormenu"),l=$("#page-sidebar-menu"),m=$("#main_hormenu"),n=$("#"+megaSiderDivId),v=$("#"+fMenuMegaDivId),w=$("#"+fMenuSiderDivId),r=$("[class='page-content']");l&&0 .header-inner").removeClass("container");1===$(".page-container").parent(".container").size()&&$(".page-container").insertAfter("body > .clearfix");1===$(".footer > .container").size()?$(".footer").html($(".footer > .container").html()):1===$(".footer").parent(".container").size()&&$(".footer").insertAfter(".page-container");$("body > .container").remove();"boxed"===b&&($("body").addClass("page-boxed"),$(".header > .header-inner").addClass("container"),$("body > .clearfix").after('
    '), -$(".page-container").appendTo("body > .container"),"fixed"===g?$(".footer").html('
    '+$(".footer").html()+"
    "):$(".footer").appendTo("body > .container"));sa!=b&&W();sa=b;"fixed"===d?($("body").addClass("page-header-fixed"),$(".header").removeClass("navbar-static-top").addClass("navbar-fixed-top")):($("body").removeClass("page-header-fixed"),$(".header").removeClass("navbar-fixed-top").addClass("navbar-static-top"));!1===$("body").hasClass("page-full-width")&&("fixed"=== -k?$("body").addClass("page-sidebar-fixed"):$("body").removeClass("page-sidebar-fixed"));"fixed"===g?$("body").addClass("page-footer-fixed"):$("body").removeClass("page-footer-fixed");ZteFrameWork.isRTL()?"left"===l?($("body").addClass("page-sidebar-reversed"),$("#frontend-link").tooltip("destroy").tooltip({placement:"right"})):(c=$("[class='page-content']"),c.css("marginLeft",0),$("body").removeClass("page-sidebar-reversed"),$("#frontend-link").tooltip("destroy").tooltip({placement:"left"})):"right"=== -l?(c=$("[class='page-content']"),c.css("marginLeft",0),$("body").addClass("page-sidebar-reversed"),$("#frontend-link").tooltip("destroy").tooltip({placement:"left"})):($("body").removeClass("page-sidebar-reversed"),$("#frontend-link").tooltip("destroy").tooltip({placement:"right"}));B();X();pa();A("layout-option",b);A("language-option",f);A("header-option",d);A("sidebar-option",k);A("sidebar-pos-option",l);A("nav-pos-direction",h)},A=function(c,b){store&&store(c,b)},Q=function(c){if(store)return store(c)}, -N=function(c){location.hash="#_"+c},ua=function(c,b,f,d){var g=$.url(ZteFrameWork.getCurrentScript(document)).attr("directory")+"proxy/proxy.html",g=$(''),h=$("#ifm_Proxy");h.hide();var k=$(".page-content .page-content-body"),l=[],m=[],n=[],q="";for(i=0;i=h.length?(g.appendTo(k),g.one("load",c,function(c){var b={iFrame:c.data.iFrame,cssLinktyps:c.data.cssLinktyps,cssLinksrcs:c.data.cssLinksrcs,cssLinkids:c.data.cssLinkids,flag:d};$("#ifm_Proxy")[0].contentWindow.postMessage(b, -c.data.origin)})):h.attr("oldproxyorigin")!=b?(h.attr("src",""),h.attr("oldproxyorigin",b),h.one("load",c,function(c){var b={iFrame:c.data.iFrame,cssLinktyps:c.data.cssLinktyps,cssLinksrcs:c.data.cssLinksrcs,cssLinkids:c.data.cssLinkids,flag:d};$("#ifm_Proxy")[0].contentWindow.postMessage(b,c.data.origin)}),h.attr("src",g.attr("src"))):h[0].contentWindow.postMessage({iFrame:c.iFrame,cssLinktyps:c.cssLinktyps,cssLinksrcs:c.cssLinksrcs,cssLinkids:c.cssLinkids,flag:d},c.origin)};return{init:function(){zte_http_headers&& -store("zte_http_headers",zte_http_headers);va();xa();wa();ra(!0);C.clear();X();pa();Ca();Ga();Fa();Ia();ta();$(function(){$(window).on("hashchange",function(){var c=location.hash.replace("#_","");if(c&&0f.length)f=$(".page-content a[id='"+c+"']")}else d=== -zteframework_menu_horizontal?(f=$("#main_hormenu a[id='"+c+"']"),0==f.length&&(f=$("#page-megachild-sidebar-menu a[id='"+c+"']"))):d===zteframework_menu_fmenu&&(f=$("#f_hormenu a[id='"+c+"']"),0==f.length&&(f=$("#page-f-sidebar-menu a[id='"+c+"']")));d=!1;if(0=b.length){var h=c;C.contains(h)&&(f="#"+C.items(h),b=$(f))}c=void 0;f&&0');var g=document.createElement("link");g.href=f[0].href;f=null;g.rel="stylesheet";g.type="text/css";g.id="ifram_csssrc";d.push({pos:"head",scope:"all",link:g})}10!=b&&(0<$("#style_color").length&&(g=document.createElement("link"),g.href=$("#style_color")[0].href.replace(".css","_ifrm.css"),g.rel="stylesheet",g.type="text/css",g.id="style_color",d.push({pos:"head",scope:"all",link:g})),0<$("#font_awesome").length&&(f=document.createElement("link"),f.href=$("#font_awesome")[0].href, -f.rel="stylesheet",f.type="text/css",f.id="font_awesome",d.push({pos:"head",scope:"all",link:f})),g=$("script[src*='/pym.']"),g=0c.indexOf("#")&&(c="#"+c),$(c).click()))},goToPortal:function(c){var b=top.location.href;console.log(b); -b=$.url(b);top.location=b.attr("directory")+"uifportal.html#"+c+"/"},goToURLByIDAndNewIPPort:function(b,d,f){V.replace(d.menuCategoryID,{ipPort:d.ipPortStr,ipTitle:d.newTitle});store&&store("menuCategoryID",d.menuCategoryID+"[menuCategoryID]"+d.ipPortStr+"[menuCategoryID]"+(d.newTitle?d.newTitle:""));var g=this.findMenuItemByMenuId(b);if(!g||0>=g.length){var h=this.getMenuItemId_From_MoreMenuRelation(b);if(h&&0div.box",h),!1==h.hasClass("moreButtonSelected")&&h.addClass("moreButtonSelected"),h=$(".item.moreButtonsTag"),0=g.length)f=b,C.contains(f)&&(h=C.items(f),g=this.findMenuItemByMenuId(h)),g&&0=g.length){var k=this.getMenuItemId_From_MoreMenuRelation(b);k&&(g=this.findMenuItemByMenuId(k))}if(store&& -store("globleCurrentBreadcrumb")){E=store("globleCurrentBreadcrumb");for(var l=$("a",$("
    "+E+"
    ")),m,n,q=0;qq;)m=ZteFrameWork.findMenuItemByMenuId(l),l=m.attr("hparentid"),b=m.attr("id"),q++;m.hasClass("active")|| -m.parent().addClass("active")}}else console.log("goToURLByIDAndNewAction():Can't find the menuitem.The menu ID is:"+b+".Please check if the ID or ID cache is correct.");b=void 0;d&&h&&0=d.length)menuItemID=b,C.contains(menuItemID)&&(f="#"+C.items(menuItemID),d=$(f));b=void 0; -f&&0f.length||(d.preventDefault(),(f=b.attr("id"))&&0b.length)){b=ZteFrameWork.handlBaseURL(b);ZteFrameWork.startPageLoading();var d=$("#page-sidebar-menu");d.empty();d.append("");$.ajax({type:"GET",cache:!1,url:b,dataType:"html",success:function(b){var k=stripHtmlScripts(b);d.append(k);runHtmlScripts(b);siderBarMenuAuthentication();dealMysqlBackupMenu();setTimeout(function(){ZteFrameWork.stopPageLoading();goToHomePage()}, -1E3)},error:function(b,d,g){}})}} -var setLayoutValueByCookie=function(){var b=$(".zte-theme-panel");void 0!=store("layout-option")&&$(".layout-option",b).val(store("layout-option"));void 0!=store("language-option")&&$(".language-option",b).val(store("language-option"));void 0!=store("sidebar-option")&&$(".sidebar-option",b).val(store("sidebar-option"));void 0!=store("header-option")&&$(".header-option",b).val(store("header-option"));void 0!=store("sidebar-pos-option")&&$(".sidebar-pos-option",b).val(store("sidebar-pos-option"));$("[class='nav-load-error']", -$(".hormenu"));$("[class='nav-load-error']",$("[class='page-sidebar-menu']"));$(".nav-pos-direction",b).val("fmenu")}; -function getHorMenu(b){setLayoutValueByCookie();2>b.length||(b=ZteFrameWork.handlBaseURL(b),ZteFrameWork.startPageLoading(),$("#main_hormenu").empty(),$.ajax({type:"GET",async:!1,cache:!1,url:b,dataType:"html",success:function(b){var h=stripHtmlScripts(b);$("#main_hormenu").append(h);runHtmlScripts(b);"mysql"==ZteFrameWork_conf.dbType&&$(".hor-menu a[id='uep-ict-backup-baseDataBack']").parent().remove();horMenuAuthentication("main_hormenu");ZteFrameWork.stopPageLoading();"horizontal"===$(".nav-pos-direction", -panel).val()&&setTimeout(function(){},150)},error:function(b,h,k){$("[class='page-content']");$(".nav-pos-direction",panel).attr("disabled",!0)}}))} -function getMegaFMenu(b){if(!(2>b.length)){b=ZteFrameWork.handlBaseURL(b);ZteFrameWork.startPageLoading();var d=$("#"+megaSiderDivId);d.empty();d.append("");$.ajax({type:"GET",async:!1,cache:!1,url:b,dataType:"html",success:function(b){var k=stripHtmlScripts(b);d.append(k);runHtmlScripts(b);FMenuAuthentication(megaDivId,megaSiderDivId);rebuildHorMenu();ajustFMenu(megaDivId,megaSiderDivId);ZteFrameWork.stopPageLoading()}, -error:function(b,d,g){}})}}function iniHorMenu(){var b=$("#main_hormenu");b&&((b=b.attr("menuSrc"))&&0b.length||2>d.length)){b=ZteFrameWork.handlBaseURL(b);d=ZteFrameWork.handlBaseURL(d);ZteFrameWork.startPageLoading();$("#f_hormenu").empty();$("#page-f-sidebar-menu").empty();$.ajax({type:"GET",async:!1,cache:!1,url:b,dataType:"html",success:function(b){var d=stripHtmlScripts(b);$("#f_hormenu").append(d);horMenuAuthentication("f_hormenu");runHtmlScripts(b);dealMysqlBackupMenu();ZteFrameWork.stopPageLoading()},error:function(b,d,h){$("#f_hormenu").append('");$("[class='page-content']");$(".nav-pos-direction",panel).attr("disabled",!0)}});var h=$("#"+fMenuSiderDivId);h.empty();h.append("");$.ajax({type:"GET",cache:!1,url:d,dataType:"html",success:function(b){var d=stripHtmlScripts(b);h.append(d);h.children().css("display","none");runHtmlScripts(b);dealMysqlBackupMenu();FMenuAuthentication(fMenuMegaDivId, -fMenuSiderDivId);ajustFMenu(fMenuMegaDivId,fMenuSiderDivId);ZteFrameWork.stopPageLoading();loadi18n_WebFramework_sideMenu()},error:function(b,d,h){$(".page-f-sidebar-menu").append('")}})}}function iniSidebarMenu(){var b=$("#page-sidebar-menu");b&&(b=b.attr("menuSrc"))&&0b.length||(ZteFrameWork.startPageLoading(),$(".modal-dialog .Changepasswd").empty(),$.ajax({type:"GET",cache:!1,url:b,dataType:"html",success:function(b){$(".modal-dialog .Changepasswd").append(b);ChangePWD.init();ZteFrameWork.stopPageLoading()},error:function(b,h,k){$(".modal-dialog .Changepasswd").append("

    "+$.i18n.prop("com_zte_ums_ict_framework_ui_loadchgpwdpageError")+"

    ")}}))} -function iniChangePWDDlg(){var b=$(".modal-dialog .Changepasswd").attr("dlgsrc");b&&0b.length||(ZteFrameWork.startPageLoading(),$("#headerMenu").empty(),$.ajax({type:"GET",cache:!1,async:!1,url:b,dataType:"html",success:function(b){$("#headerMenu").append(b);ZteFrameWork.stopPageLoading()},error:function(b,h,k){}}))} -function goToHomePage(){if((locationhash=ZteFrameWork.getLocationHash())&&0g.length&&(g=$(".iframe.start",k)),dealStartMenu(g,h,k))}} -var dealStartMenu=function(b,d,h){var k=setInterval(function(){b&&0b.length&&$("a[operation]",h).each(function(){b=$(this);return!1}))},100);handeCtxMenuitem()}; -function handeCtxMenuitem(){$(".page-sidebar ul li a").each(function(){$(this).attr("href")&&"javascript:;"!=$(this).attr("href")&&"#"!=$(this).attr("href")&&$(this).attr("oncontextmenu","return false")});$(".hormenu li a").each(function(){$(this).attr("href")&&"javascript:;"!=$(this).attr("href")&&"#"!=$(this).attr("href")&&$(this).attr("oncontextmenu","return false")})} -function initBaseInfo(){$("#logout_label").text($.i18n.prop("com_zte_ums_ict_framework_ui_group_logout"));$("#fullscreen_label").text($.i18n.prop("com_zte_ums_ict_framework_ui_group_fullscreen"));$("#changePwd_label").text($.i18n.prop("com_zte_ums_ict_framework_ui_changePwd"));$("#com_zte_ums_ict_framework_moudle_about").text($.i18n.prop("com_zte_ums_ict_framework_moudle_about"));$("#com_zte_ums_ict_framework_moudle_help").text($.i18n.prop("com_zte_ums_ict_framework_moudle_help"));$("#zte_menu-toggler").attr("title", -$.i18n.prop("com_zte_ums_ict_framework_moudle_menutoggler"))}window.closeModal=function(b){b&&(0>b.indexOf("#")&&(b="#"+b),$(b).modal("hide"))};function getLcsRight(b){var d=[];if(b&&0 li.btn-group")).each(function(){var g=$(this).attr("licenseid");g&&(d.push(g),g=$(this).attr("id"),b.push(g))});var h=getLcsRight(d);if(h&&h.length==b.length)for(var k=0;k li.btn-group")).parent().remove()}"mysql"==ZteFrameWork_conf.dbType&&$("#uep-ict-backup-baseDataBack",$(".more-botton-zone > li.btn-group")).parent().remove();var n= -[];$("a[operation]",$(".more-botton-zone > li.btn-group")).each(function(){var b=$(this).attr("operation");b&&n.push(b)});var m=getAllOperCodeRights(n);$("a[operation]",$(".more-botton-zone > li.btn-group")).each(function(){var b=$(this).attr("operation");b&&(hasRight(b,m)||$(this).parent("li").remove())});0==$("li > a",$(".more-botton-zone > li.btn-group")).length&&$(".more-botton-zone > li.btn-group").remove()} -function rebuildSiderBarMenu(){0==$("a.start").length&&$('li > a[href!="javascript:;"]',$(".page-sidebar-menu")).eq(0).addClass("start");$("ul.sub-menu",$(".page-sidebar-menu")).each(function(){0==$(this).has("li").length&&$(this).parent("li").remove()})} -function rebuildHorMenu(){0==$("a.start").length&&$('li > a[href!="#"]',$("#main_hormenu")).eq(0).addClass("start");$("ul.mega-menu-submenu",$("#main_hormenu")).each(function(){0==$(this).has("li > a").length&&$(this).remove()});$("div.zteDivWidth",$("#main_hormenu")).each(function(){0==$(this).has("ul").length&&$(this).remove()});$("ul.dropdown-menu",$("#main_hormenu")).each(function(){0==$(this).has("ul").length&&$(this).parent("li").remove()});$("li.divider",$("#main_hormenu")).each(function(){$(this).next().hasClass("divider")&& -$(this).remove()});$("li.divider",$("#main_hormenu")).each(function(){0==$(this).next().length&&$(this).remove()})} -function getAllOperCodeRights(b){var d=[];if(b&&0 _.length(this._area)) { m--; i--; }// in case of removeItem - } - return and || this; - }, - keys: function() { - return this.each(function(k, list){ list.push(k); }, []); - }, - get: function(key, alt) { - var s = _.get(this._area, this._in(key)); - return s !== null ? _.parse(s) : alt || s;// support alt for easy default mgmt - }, - getAll: function() { - return this.each(function(k, all){ all[k] = this.get(k); }, {}); - }, - set: function(key, data, overwrite) { - var d = this.get(key); - if (d != null && overwrite === false) { - return data; - } - return _.set(this._area, this._in(key), _.stringify(data), overwrite) || d; - }, - setAll: function(data, overwrite) { - var changed, val; - for (var key in data) { - val = data[key]; - if (this.set(key, val, overwrite) !== val) { - changed = true; - } - } - return changed; - }, - remove: function(key) { - var d = this.get(key); - _.remove(this._area, this._in(key)); - return d; - }, - clear: function() { - if (!this._ns) { - _.clear(this._area); - } else { - this.each(function(k){ _.remove(this._area, this._in(k)); }, 1); - } - return this; - }, - clearAll: function() { - var area = this._area; - for (var id in _.areas) { - if (_.areas.hasOwnProperty(id)) { - this._area = _.areas[id]; - this.clear(); - } - } - this._area = area; - return this; - }, - - // internal use functions - _in: function(k) { - if (typeof k !== "string"){ k = _.stringify(k); } - return this._ns ? this._ns + k : k; - }, - _out: function(k) { - return this._ns ? - k && k.indexOf(this._ns) === 0 ? - k.substring(this._ns.length) : - undefined : // so each() knows to skip it - k; - } - },// end _.storeAPI - storageAPI: { - length: 0, - has: function(k){ return this.items.hasOwnProperty(k); }, - key: function(i) { - var c = 0; - for (var k in this.items){ - if (this.has(k) && i === c++) { - return k; - } - } - }, - setItem: function(k, v) { - if (!this.has(k)) { - this.length++; - } - this.items[k] = v; - }, - removeItem: function(k) { - if (this.has(k)) { - delete this.items[k]; - this.length--; - } - }, - getItem: function(k){ return this.has(k) ? this.items[k] : null; }, - clear: function(){ for (var k in this.list){ this.removeItem(k); } }, - toString: function(){ return this.length+' items in '+this.name+'Storage'; } - }// end _.storageAPI - }; - - // setup the primary store fn - if (window.store){ _.conflict = window.store; } - var store = - // safely set this up (throws error in IE10/32bit mode for local files) - _.Store("local", (function(){try{ return localStorage; }catch(e){}})()); - store.local = store;// for completeness - store._ = _;// for extenders and debuggers... - // safely setup store.session (throws exception in FF for file:/// urls) - store.area("session", (function(){try{ return sessionStorage; }catch(e){}})()); - - //Expose store to the global object - window.store = store; - - if (typeof define === 'function' && define.amd !== undefined) { - define(function () { - return store; - }); - } else if (typeof module !== 'undefined' && module.exports) { - module.exports = store; - } - -})(this, null); - -// XHook - v1.3.3 - https://github.com/jpillora/xhook -// Jaime Pillora - MIT Copyright 2015 -(function(window,undefined) { -var AFTER, BEFORE, COMMON_EVENTS, EventEmitter, FIRE, FormData, NativeFormData, NativeXMLHttp, OFF, ON, READY_STATE, UPLOAD_EVENTS, XHookFormData, XHookHttpRequest, XMLHTTP, convertHeaders, depricatedProp, document, fakeEvent, mergeObjects, msie, proxyEvents, slice, xhook, _base, - __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; - -document = window.document; - -BEFORE = 'before'; - -AFTER = 'after'; - -READY_STATE = 'readyState'; - -ON = 'addEventListener'; - -OFF = 'removeEventListener'; - -FIRE = 'dispatchEvent'; - -XMLHTTP = 'XMLHttpRequest'; - -FormData = 'FormData'; - -UPLOAD_EVENTS = ['load', 'loadend', 'loadstart']; - -COMMON_EVENTS = ['progress', 'abort', 'error', 'timeout']; - -msie = parseInt((/msie (\d+)/.exec(navigator.userAgent.toLowerCase()) || [])[1]); - -if (isNaN(msie)) { - msie = parseInt((/trident\/.*; rv:(\d+)/.exec(navigator.userAgent.toLowerCase()) || [])[1]); -} - -(_base = Array.prototype).indexOf || (_base.indexOf = function(item) { - var i, x, _i, _len; - for (i = _i = 0, _len = this.length; _i < _len; i = ++_i) { - x = this[i]; - if (x === item) { - return i; - } - } - return -1; -}); - -slice = function(o, n) { - return Array.prototype.slice.call(o, n); -}; - -depricatedProp = function(p) { - return p === "returnValue" || p === "totalSize" || p === "position"; -}; - -mergeObjects = function(src, dst) { - var k, v; - for (k in src) { - v = src[k]; - if (depricatedProp(k)) { - continue; - } - try { - dst[k] = src[k]; - } catch (_error) {} - } - return dst; -}; - -proxyEvents = function(events, src, dst) { - var event, p, _i, _len; - p = function(event) { - return function(e) { - var clone, k, val; - clone = {}; - for (k in e) { - if (depricatedProp(k)) { - continue; - } - val = e[k]; - clone[k] = val === src ? dst : val; - } - return dst[FIRE](event, clone); - }; - }; - for (_i = 0, _len = events.length; _i < _len; _i++) { - event = events[_i]; - if (dst._has(event)) { - src["on" + event] = p(event); - } - } -}; - -fakeEvent = function(type) { - var msieEventObject; - if (document.createEventObject != null) { - msieEventObject = document.createEventObject(); - msieEventObject.type = type; - return msieEventObject; - } else { - try { - return new Event(type); - } catch (_error) { - return { - type: type - }; - } - } -}; - -EventEmitter = function(nodeStyle) { - var emitter, events, listeners; - events = {}; - listeners = function(event) { - return events[event] || []; - }; - emitter = {}; - emitter[ON] = function(event, callback, i) { - events[event] = listeners(event); - if (events[event].indexOf(callback) >= 0) { - return; - } - i = i === undefined ? events[event].length : i; - events[event].splice(i, 0, callback); - }; - emitter[OFF] = function(event, callback) { - var i; - if (event === undefined) { - events = {}; - return; - } - if (callback === undefined) { - events[event] = []; - } - i = listeners(event).indexOf(callback); - if (i === -1) { - return; - } - listeners(event).splice(i, 1); - }; - emitter[FIRE] = function() { - var args, event, i, legacylistener, listener, _i, _len, _ref; - args = slice(arguments); - event = args.shift(); - if (!nodeStyle) { - args[0] = mergeObjects(args[0], fakeEvent(event)); - } - legacylistener = emitter["on" + event]; - if (legacylistener) { - legacylistener.apply(undefined, args); - } - _ref = listeners(event).concat(listeners("*")); - for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { - listener = _ref[i]; - listener.apply(undefined, args); - } - }; - emitter._has = function(event) { - return !!(events[event] || emitter["on" + event]); - }; - if (nodeStyle) { - emitter.listeners = function(event) { - return slice(listeners(event)); - }; - emitter.on = emitter[ON]; - emitter.off = emitter[OFF]; - emitter.fire = emitter[FIRE]; - emitter.once = function(e, fn) { - var fire; - fire = function() { - emitter.off(e, fire); - return fn.apply(null, arguments); - }; - return emitter.on(e, fire); - }; - emitter.destroy = function() { - return events = {}; - }; - } - return emitter; -}; - -xhook = EventEmitter(true); - -xhook.EventEmitter = EventEmitter; - -xhook[BEFORE] = function(handler, i) { - if (handler.length < 1 || handler.length > 2) { - throw "invalid hook"; - } - return xhook[ON](BEFORE, handler, i); -}; - -xhook[AFTER] = function(handler, i) { - if (handler.length < 2 || handler.length > 3) { - throw "invalid hook"; - } - return xhook[ON](AFTER, handler, i); -}; - -xhook.enable = function() { - window[XMLHTTP] = XHookHttpRequest; - if (NativeFormData) { - window[FormData] = XHookFormData; - } -}; - -xhook.disable = function() { - window[XMLHTTP] = xhook[XMLHTTP]; - window[FormData] = NativeFormData; -}; - -convertHeaders = xhook.headers = function(h, dest) { - var header, headers, k, name, v, value, _i, _len, _ref; - if (dest == null) { - dest = {}; - } - switch (typeof h) { - case "object": - headers = []; - for (k in h) { - v = h[k]; - name = k.toLowerCase(); - headers.push("" + name + ":\t" + v); - } - return headers.join('\n'); - case "string": - headers = h.split('\n'); - for (_i = 0, _len = headers.length; _i < _len; _i++) { - header = headers[_i]; - if (/([^:]+):\s*(.+)/.test(header)) { - name = (_ref = RegExp.$1) != null ? _ref.toLowerCase() : void 0; - value = RegExp.$2; - if (dest[name] == null) { - dest[name] = value; - } - } - } - return dest; - } -}; - -NativeFormData = window[FormData]; - -XHookFormData = function(form) { - var entries; - this.fd = form ? new NativeFormData(form) : new NativeFormData(); - this.form = form; - entries = []; - Object.defineProperty(this, 'entries', { - get: function() { - var fentries; - fentries = !form ? [] : slice(form.querySelectorAll("input,select")).filter(function(e) { - var _ref; - return ((_ref = e.type) !== 'checkbox' && _ref !== 'radio') || e.checked; - }).map(function(e) { - return [e.name, e.type === "file" ? e.files : e.value]; - }); - return fentries.concat(entries); - } - }); - this.append = (function(_this) { - return function() { - var args; - args = slice(arguments); - entries.push(args); - return _this.fd.append.apply(_this.fd, args); - }; - })(this); -}; - -if (NativeFormData) { - xhook[FormData] = NativeFormData; - window[FormData] = XHookFormData; -} - -NativeXMLHttp = window[XMLHTTP]; - -xhook[XMLHTTP] = NativeXMLHttp; - -XHookHttpRequest = window[XMLHTTP] = function() { - var ABORTED, currentState, emitFinal, emitReadyState, facade, hasError, hasErrorHandler, readBody, readHead, request, response, setReadyState, status, transiting, writeBody, writeHead, xhr; - ABORTED = -1; - xhr = new xhook[XMLHTTP](); - request = {}; - status = null; - hasError = void 0; - transiting = void 0; - response = void 0; - readHead = function() { - var key, name, val, _ref; - response.status = status || xhr.status; - if (!(status === ABORTED && msie < 10)) { - response.statusText = xhr.statusText; - } - if (status !== ABORTED) { - _ref = convertHeaders(xhr.getAllResponseHeaders()); - for (key in _ref) { - val = _ref[key]; - if (!response.headers[key]) { - name = key.toLowerCase(); - response.headers[name] = val; - } - } - } - }; - readBody = function() { - if (!xhr.responseType || xhr.responseType === "text") { - response.text = xhr.responseText; - response.data = xhr.responseText; - } else if (xhr.responseType === "document") { - response.xml = xhr.responseXML; - response.data = xhr.responseXML; - } else { - response.data = xhr.response; - } - if ("responseURL" in xhr) { - response.finalUrl = xhr.responseURL; - } - }; - writeHead = function() { - facade.status = response.status; - facade.statusText = response.statusText; - }; - writeBody = function() { - if ('text' in response) { - facade.responseText = response.text; - } - if ('xml' in response) { - facade.responseXML = response.xml; - } - if ('data' in response) { - facade.response = response.data; - } - if ('finalUrl' in response) { - facade.responseURL = response.finalUrl; - } - }; - emitReadyState = function(n) { - while (n > currentState && currentState < 4) { - facade[READY_STATE] = ++currentState; - if (currentState === 1) { - facade[FIRE]("loadstart", {}); - } - if (currentState === 2) { - writeHead(); - } - if (currentState === 4) { - writeHead(); - writeBody(); - } - facade[FIRE]("readystatechange", {}); - if (currentState === 4) { - setTimeout(emitFinal, 0); - } - } - }; - emitFinal = function() { - if (!hasError) { - facade[FIRE]("load", {}); - } - facade[FIRE]("loadend", {}); - if (hasError) { - facade[READY_STATE] = 0; - } - }; - currentState = 0; - setReadyState = function(n) { - var hooks, process; - if (n !== 4) { - emitReadyState(n); - return; - } - hooks = xhook.listeners(AFTER); - process = function() { - var hook; - if (!hooks.length) { - return emitReadyState(4); - } - hook = hooks.shift(); - if (hook.length === 2) { - hook(request, response); - return process(); - } else if (hook.length === 3 && request.async) { - return hook(request, response, process); - } else { - return process(); - } - }; - process(); - }; - facade = request.xhr = EventEmitter(); - xhr.onreadystatechange = function(event) { - try { - if (xhr[READY_STATE] === 2) { - readHead(); - } - } catch (_error) {} - if (xhr[READY_STATE] === 4) { - transiting = false; - readHead(); - readBody(); - } - setReadyState(xhr[READY_STATE]); - }; - hasErrorHandler = function() { - hasError = true; - }; - facade[ON]('error', hasErrorHandler); - facade[ON]('timeout', hasErrorHandler); - facade[ON]('abort', hasErrorHandler); - facade[ON]('progress', function() { - if (currentState < 3) { - setReadyState(3); - } else { - facade[FIRE]("readystatechange", {}); - } - }); - if ('withCredentials' in xhr || xhook.addWithCredentials) { - facade.withCredentials = false; - } - facade.status = 0; - facade.open = function(method, url, async, user, pass) { - currentState = 0; - hasError = false; - transiting = false; - request.headers = {}; - request.headerNames = {}; - request.status = 0; - response = {}; - response.headers = {}; - request.method = method; - request.url = url; - request.async = async !== false; - request.user = user; - request.pass = pass; - setReadyState(1); - }; - facade.send = function(body) { - var hooks, k, modk, process, send, _i, _len, _ref; - _ref = ['type', 'timeout', 'withCredentials']; - if(navigator.userAgent.indexOf("Firefox/") != -1){http://atmosphere-framework.2306103.n4.nabble.com/Atmosphere-js-withCredentials-true-does-not-work-in-Firefox-td4656661.html - _ref = ['type', 'timeout']; - } - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - k = _ref[_i]; - modk = k === "type" ? "responseType" : k; - if (modk in facade) { - request[k] = facade[modk]; - } - } - request.body = body; - send = function() { - var header, value, _j, _len1, _ref1, _ref2; - proxyEvents(COMMON_EVENTS, xhr, facade); - if (facade.upload) { - proxyEvents(COMMON_EVENTS.concat(UPLOAD_EVENTS), xhr.upload, facade.upload); - } - transiting = true; - xhr.open(request.method, request.url, request.async, request.user, request.pass); - _ref1 = ['type', 'timeout', 'withCredentials']; - if(navigator.userAgent.indexOf("Firefox/") != -1){//http://atmosphere-framework.2306103.n4.nabble.com/Atmosphere-js-withCredentials-true-does-not-work-in-Firefox-td4656661.html - _ref1 = ['type', 'timeout']; - } - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - k = _ref1[_j]; - modk = k === "type" ? "responseType" : k; - if (k in request) { - xhr[modk] = request[k]; - } - } - _ref2 = request.headers; - for (header in _ref2) { - value = _ref2[header]; - xhr.setRequestHeader(header, value); - } - if (request.body instanceof XHookFormData) { - request.body = request.body.fd; - } - xhr.send(request.body); - }; - hooks = xhook.listeners(BEFORE); - process = function() { - var done, hook; - if (!hooks.length) { - return send(); - } - done = function(userResponse) { - if (typeof userResponse === 'object' && (typeof userResponse.status === 'number' || typeof response.status === 'number')) { - mergeObjects(userResponse, response); - if (__indexOf.call(userResponse, 'data') < 0) { - userResponse.data = userResponse.response || userResponse.text; - } - setReadyState(4); - return; - } - process(); - }; - done.head = function(userResponse) { - mergeObjects(userResponse, response); - return setReadyState(2); - }; - done.progress = function(userResponse) { - mergeObjects(userResponse, response); - return setReadyState(3); - }; - hook = hooks.shift(); - if (hook.length === 1) { - return done(hook(request)); - } else if (hook.length === 2 && request.async) { - return hook(request, done); - } else { - return done(); - } - }; - process(); - }; - facade.abort = function() { - status = ABORTED; - if (transiting) { - xhr.abort(); - } else { - facade[FIRE]('abort', {}); - } - }; - facade.setRequestHeader = function(header, value) { - var lName, name; - lName = header != null ? header.toLowerCase() : void 0; - name = request.headerNames[lName] = request.headerNames[lName] || header; - if (request.headers[name]) { - value = request.headers[name] + ', ' + value; - } - request.headers[name] = value; - }; - facade.getResponseHeader = function(header) { - var name; - name = header != null ? header.toLowerCase() : void 0; - return response.headers[name]; - }; - facade.getAllResponseHeaders = function() { - return convertHeaders(response.headers); - }; - if (xhr.overrideMimeType) { - facade.overrideMimeType = function() { - return xhr.overrideMimeType.apply(xhr, arguments); - }; - } - if (xhr.upload) { - facade.upload = request.upload = EventEmitter(); - } - return facade; -}; -/* -if (typeof this.define === "function" && this.define.amd) { - define("xhook", [], function() { - return xhook; - }); -} else {*/ - (this.exports || this).xhook = xhook; -//} - -}.call(this,window)); - -xhook.before(function(request) { - var zte_headers = store('zte_http_headers'); - if (zte_headers && zte_headers.length > 0) { - for (i = 0; i < zte_headers.length; i++) { - if (zte_headers[i].store === true) { - if ( !! store(zte_headers[i].value)) { - request.headers[zte_headers[i].key] = store(zte_headers[i].value).toUpperCase() - } - } else { - request.headers[zte_headers[i].key] = zte_headers[i].value - } - } - } -}); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/framework/js/core/pym.min.js b/uiframe-iui/src/main/resources/webroot/framework/js/core/pym.min.js deleted file mode 100644 index 9733039a..00000000 --- a/uiframe-iui/src/main/resources/webroot/framework/js/core/pym.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! pym.js - v0.4.4 - 2015-07-16 */ -(function(a){if(typeof define==="function"&&define.amd){define("pym",[],a)}else{if(typeof module!=="undefined"&&module.exports){module.exports=a()}else{window.pym=a.call(this)}}window.pym=a.call(this)})(function(){var a="xPYMx";function e(){var k,i;if(window.innerHeight&&window.scrollMaxY){k=window.innerWidth+window.scrollMaxX;i=window.innerHeight+window.scrollMaxY}else{if(document.body.scrollHeight>document.body.offsetHeight){k=document.body.scrollWidth;i=document.body.scrollHeight}else{k=document.body.offsetWidth;i=document.body.offsetHeight}}var j,l;if(self.innerHeight){if(document.documentElement.clientWidth){j=document.documentElement.clientWidth}else{j=self.innerWidth}l=self.innerHeight}else{if(document.documentElement&&document.documentElement.clientHeight){j=document.documentElement.clientWidth;l=document.documentElement.clientHeight}else{if(document.body){j=document.body.clientWidth;l=document.body.clientHeight}}}if(i-1){q=this.url.substring(n,this.url.length);this.url=this.url.substring(0,n)}if(this.url.indexOf("?")<0){this.url+="?"}else{this.url+="&"}this.iframe.src=this.url.trim().indexOf("javascript:")>=0?"":this.url+"initialWidth="+o+"&childId="+this.id;"&parentUrl="+encodeURIComponent(window.location.href)+q;this.iframe.setAttribute("width","100%");this.iframe.setAttribute("scrolling","no");this.iframe.setAttribute("marginheight","0");this.iframe.setAttribute("frameborder","0");this.el.appendChild(this.iframe);var p=this;window.addEventListener("resize",this._onResize)};this._onResize=function(){this.sendWidth()}.bind(this);this._fire=function(o,p){if(o in this.messageHandlers){for(var n=0;n0&&this.childpageType==="isc"){console.log("parent window detect that the child iframe page loaded smartclient,the iframe height will ignore the child's Height change message;");if(this.minHeightheight){m=l.oldHeight-height}else{m=height-l.oldHeight}if(m<=70){return}if(l.oldHeight!=height){l.oldHeight=height;console.log("child iframe id="+l.id+" sedHeight:"+height);l.sendMessage("height",height)}}.bind(this);this.scrollParentTo=function(m){this.sendMessage("navigateTo","#"+m)};this.navigateParentTo=function(m){this.sendMessage("navigateTo",m)};this.id=c("childId")||i.id;this.messageRegex=new RegExp("^pym"+a+this.id+a+"(\\S+)"+a+"(.+)$");var k=parseInt(c("initialWidth"));this.parentUrl=c("parentUrl");this.onMessage("width",this._onWidthMessage);for(var j in i){this.settings[j]=i[j]}var l=this;window.addEventListener("message",this._processMessage,false);if(this.settings.renderCallback){this.settings.renderCallback(k)}this.sendHeight();if(this.settings.polling){window.setInterval(this.sendHeight,this.settings.polling)}return this};d();return g}); diff --git a/uiframe-iui/src/main/resources/webroot/framework/js/fm_light.js b/uiframe-iui/src/main/resources/webroot/framework/js/fm_light.js deleted file mode 100644 index 51e71a66..00000000 --- a/uiframe-iui/src/main/resources/webroot/framework/js/fm_light.js +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -(function($) { - String.prototype.trim = function() { - return this.replace(/(^\s*)|(\s*$)/g, ""); - }; - String.prototype.format=function() { - if(arguments.length==0) return this; - for(var s=this, i=0; i0&&$("#header_notification_bar").children().length>0){ - // 对告警灯进行鉴权,如果有当前告警权限,显示告警灯,否则返回ã€? - var operations = new Array(); - operations.push("common.fm.currentview"); - var rightObj = getAllOperCodeRights(operations); - var operation = $("#uep-ict-fm-currentAlarm").attr("operation");; - if (!hasRight(operation, rightObj)) { - $('#header_notification_bar').html("
          
    "); - return; - } - // get total alarm count - $("#hd_heighestAlarmcount_label").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_none_label')); - $("#hd_alarmcount_total_value").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_total_label')); - $("#hd_alarmcount_critical_value").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_critical_label')); - $("#hd_alarmcount_major_value").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_major_label')); - $("#hd_alarmcount_minor_value").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_minor_label')); - $("#hd_alarmcount_warning_value").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_warning_label')); - - function alarmLight(alarmcount){ - if (!alarmcount || !alarmcount.unAckedCount || (alarmcount.unAckedCount.length < 4) || !alarmcount.ackedCount || (alarmcount.ackedCount.length < 4)) { - return; - } - var criticalNum = alarmcount.unAckedCount[0] + alarmcount.ackedCount[0]; - var majorNum = alarmcount.unAckedCount[1] + alarmcount.ackedCount[1]; - var minorNum = alarmcount.unAckedCount[2] + alarmcount.ackedCount[2]; - var warningNum = alarmcount.unAckedCount[3] + alarmcount.ackedCount[3]; - var totalNum= criticalNum+ majorNum+ minorNum+ warningNum; - var heighestAlarmcount=0; - var hd_heighestAlarmcount_label=""; - if(criticalNum>0){ - heighestAlarmcount =criticalNum; - hd_heighestAlarmcount_label=$.i18n.prop('com_zte_ums_ict_alarmcount_critical_label'); - // $("#hd_heighestAlarmcount_li").attr("class",$("#hd_alarmcount_critical_li").attr("class")); - }else if(majorNum>0){ - heighestAlarmcount =majorNum; - hd_heighestAlarmcount_label=$.i18n.prop('com_zte_ums_ict_alarmcount_major_label'); - }else if(minorNum>0){ - heighestAlarmcount =minorNum; - hd_heighestAlarmcount_label=$.i18n.prop('com_zte_ums_ict_alarmcount_minor_label'); - }else if(warningNum>0){ - heighestAlarmcount =warningNum; - hd_heighestAlarmcount_label=$.i18n.prop('com_zte_ums_ict_alarmcount_warning_label'); - }else{ - heighestAlarmcount =0; - hd_heighestAlarmcount_label=$.i18n.prop('com_zte_ums_ict_alarmcount_none_label'); - } - - $("#hd_heighestAlarmcount_value").text(heighestAlarmcount); - $("#hd_alarmcount_total_value").text(totalNum); - $("#hd_alarmcount_critical_value").text(criticalNum); - $("#hd_alarmcount_major_value").text(majorNum); - $("#hd_alarmcount_minor_value").text(minorNum); - $("#hd_alarmcount_warning_value").text(warningNum); - - $("#hd_heighestAlarmcount_value").attr("title",hd_heighestAlarmcount_label.format(heighestAlarmcount )); - $("#hd_alarmcount_total_value").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_total_label').format(totalNum )); - $("#hd_alarmcount_critical_value").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_critical_label').format( criticalNum )); - $("#hd_alarmcount_major_value").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_major_label').format(majorNum)); - $("#hd_alarmcount_minor_value").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_minor_label').format(minorNum)); - $("#hd_alarmcount_warning_value").attr("title",$.i18n.prop('com_zte_ums_ict_alarmcount_warning_label').format(warningNum)); - - $("#hd_alarmcount_critical_text").text($.i18n.prop('com_zte_ums_ict_alarmcount_critical_text')); - $("#hd_alarmcount_major_text").text($.i18n.prop('com_zte_ums_ict_alarmcount_major_text')); - $("#hd_alarmcount_minor_text").text($.i18n.prop('com_zte_ums_ict_alarmcount_minor_text')); - $("#hd_alarmcount_warning_text").text($.i18n.prop('com_zte_ums_ict_alarmcount_warning_text')); - - $("#hd_alarmcount_total_before_text").text($.i18n.prop('com_zte_ums_ict_alarmcount_total_before_text')); - $("#hd_alarmcount_total_after_text").text($.i18n.prop('com_zte_ums_ict_alarmcount_total_after_text')); - $("#header_notification_bar").css('display','block'); - } - function queryAlarmTotalCount() { - $.getJSON("/web/rest/web/fm/count/total", function(data) { - //var alarmcount = $.parseJSON(data); - alarmLight(data); - if($("#header_notification_bar")&&$("#header_notification_bar").length>0&&$("#header_notification_bar").children().length>0){ - registerAlarmTotalCountToCometd(); - } - }) - } - if($("#header_notification_bar")&&$("#header_notification_bar").length>0&&$("#header_notification_bar").children().length>0){ - queryAlarmTotalCount(); - } - var registerAlarmTotalCountToCometd = function () { - var self = this; - var cometd = $.cometd; - var cometURL = location.protocol + "//" + location.host + "/web/cometd"; - cometd.configure({ - url: cometURL, - logLevel: 'debug' - }); - cometd.addListener('/meta/handshake', function (handshake){ - if (handshake.successful === true) { - cometd.batch(function () { - cometd.subscribe('/alarm/usercount', function (message) { - var alarmcount =message.data; - alarmLight(alarmcount); - }) - }) - } - }); - cometd.handshake(); - }; - - // if($("#header_notification_bar")&&$("#header_notification_bar").length>0&&$("#header_notification_bar").children().length>0){ - // registerAlarmTotalCountToCometd(); - // } - //setInterval(queryAlarmTotalCount, 30 * 1000); - } - } - else if(base){ - //$("#header_notification_bar").hide(); - //$('#header_notification_bar').empty(); - $('#header_notification_bar').html("
          
    "); - } - }); - }catch(e){} -})(jQuery); diff --git a/uiframe-iui/src/main/resources/webroot/framework/js/international/loadi18n-login.js b/uiframe-iui/src/main/resources/webroot/framework/js/international/loadi18n-login.js deleted file mode 100644 index 33ef1ea6..00000000 --- a/uiframe-iui/src/main/resources/webroot/framework/js/international/loadi18n-login.js +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -//加载本模块国际化文件并处理静态国际化部分 -function loadProperties_login(lang){ - jQuery.i18n.properties({ - language:lang, - name:'web-portal-login-integration-i18n', - path:'i18n/', - mode:'map', - callback: function() { - var i18nItems = $('[name_i18n=com_zte_ums_ict_framework_ui_i18n_login]'); - for(var i=0;i0){ - itemValue = itemValue.replace(';', ''); - } - if(/[\'\"]/.test(itemValue)){ - itemValue = itemValue.replace(/\"/g,''); - itemValue = itemValue.replace(/\'/g,''); - } - if(typeof($item.attr("title"))!="undefined"){ - $item.attr("title", itemValue); - }else if(typeof($item.attr("placeholder"))!="undefined"){ - $item.attr("placeholder", itemValue); - }else{ - $item.text(itemValue); - } - } - } - }); -} - -function loadi18n_login(lang){ - loadProperties_login(lang); -} - - diff --git a/uiframe-iui/src/main/resources/webroot/framework/js/international/loadi18n.js b/uiframe-iui/src/main/resources/webroot/framework/js/international/loadi18n.js deleted file mode 100644 index 70f1a4bc..00000000 --- a/uiframe-iui/src/main/resources/webroot/framework/js/international/loadi18n.js +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -var lang = getLanguage(); -//lang = 'en-US'; - -//加载主页面head部分国际化 -function loadProperties(lang){ - jQuery.i18n.properties({ - language:lang, - name:'web-framework-integration-i18n', - path:'i18n/', // 资源文件路径 - mode:'map', // 用 Map 的方式使用资源文件中的值 - callback: function() {// 加载成功后设置显示内容 - var i18nItems = $('[name_i18n=com_zte_ums_ict_framework_ui_i18n]'); - for(var i=0;i' - + '
    ' - + '' - + '' - + '' - + '' - + '' - + '
    '; - $('#' + divId).append(tableEleStr); - var trEle = $('#' + tableId + ' > thead >tr'); - - for (var one in column) { - var th = '' + column[one].name + ''; - trEle.append(th); - } - var table = $("#" + tableId).dataTable({ - "bFilter": false,// 搜索栏 - "bPaginate":false, - "bInfo":false, - "bSort":false, - 'bAutoWidth':true - }); - $.ajax({ - type: "GET", - cache: false, - url: FrameConst.REST_GET_VERSIONINFO, - dataType: "json", - success: function (data) { - console.log(data); - //主版本号 - $(".ict_main_version").append('' + data.mainversion + ''); - //表格数据填充 - for( var i = 0 ; i < data.ppuinfo.length ; i++ ) { - var eachPPU = data.ppuinfo[i]; - $('#'+ tableId).dataTable().fnAddData([eachPPU.name ,eachPPU.version ,eachPPU.describe , eachPPU.time ]); - } - }, - error: function (xhr, ajaxOptions, thrownError) { - - } - }); -}; - -function internationalization(){ - var lang = getLanguage(); - //加载国际化 - jQuery.i18n.properties({ - language:lang, - name:'web-framework-integration-i18n', - path:'i18n/', // 资源文件路径 - mode:'map', // 用 Map 的方式使用资源文件中的值 - callback: function() {// 加载成功后设置显示内容 - var i18nItems = $('[name_i18n=com_zte_ums_ict_framework_ui_i18n]' , '.aboutDlg'); - for(var i=0;i0){ - getAboutDlg(url); - } -}; - -var ict_about_dlg_close = function(){ - link_click('about'); - console.log("about click close"); - $('#aboutDlg').modal('hide'); -}; -var link_click = function( pageName ){ - console.log("about click change"); - if(pageName === 'info'){ - $('.aboutmain').attr("style" , "display:none"); - $('.aboutinfo').attr("style" , "display:block"); - }else{ - $('.aboutmain').attr("style" , "display:block"); - $('.aboutinfo').attr("style" , "display:none"); - } -}; diff --git a/uiframe-iui/src/main/resources/webroot/framework/js/mainpage/ict.main.page.js b/uiframe-iui/src/main/resources/webroot/framework/js/mainpage/ict.main.page.js deleted file mode 100644 index 67f43678..00000000 --- a/uiframe-iui/src/main/resources/webroot/framework/js/mainpage/ict.main.page.js +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -var initMainPage = function(){ - var modules; - var resConfig; - - var lang = getLanguage(); - var propertiesFileNamePrefix = ""; - //var jsonUrl = "json/main-page-" + lang + ".json"; - //var jsonUrl = mainpagePath; - var jsonUrl = "appRes/json/main-page.json"; - var appResExist = false; - - $.ajax({ - async:false, - "type" : "GET", - url: jsonUrl, - dataType: "json", - "success" : function (res, textStatus, jqXHR) { - resConfig = res; - modules = res.modules; - propertiesFileNamePrefix = res.propertiesFileNamePrefix; - appResExist = true; - }, - "error" : function () { - //alert("Config file load error!"); - } - }); - - if(!appResExist){ - jsonUrl = "json/main-page.json"; - $.ajax({ - async:false, - "type" : "GET", - url: jsonUrl, - dataType: "json", - "success" : function (res, textStatus, jqXHR) { - resConfig = res; - modules = res.modules; - propertiesFileNamePrefix = res.propertiesFileNamePrefix; - }, - "error" : function () { - alert("Config file load error!"); - } - }); - } - - var template = ""; - - var templatePic = "
    " + - "
    " + - "
    {cover}
    " + - "
    " + - "
    {contentTip}
    " + - "
    " + - "
    "; - - for (var i = 0; i < modules.length; ++i) { - - if(!modules[i].background){ - alert("Brick background missed!"); - return; - } - - var temp = ""; - - if(modules[i].linkId){ - temp = template.replace("{linkId}", modules[i].linkId) - .replace("{image}", modules[i].background) - .replace("{toolsImage}", modules[i].toolsImage) - .replace("{url}", modules[i].url) - .replace("{contentTip}", modules[i].contentTip); - }else{ - temp = templatePic.replace("{image}", modules[i].background) - .replace("{url}", modules[i].url) - .replace("{contentTip}", ""); - } - - if(modules[i].cover){ - temp = temp.replace("{cover}", ""); - }else{ - temp = temp.replace("{cover}",""); - } - - $($(".column")[i % 4]).append(temp); - - } - - - $(function() { - - $("#headerName").html("" ); - - $(".brick").mouseover(function(){ - $(".contentTip", this).fadeTo(1000, 1); - $(".cover", this).fadeOut(1000); - }); - - $(".brick").mouseout(function(){ - $(".contentTip", this).fadeTo(1000, 0); - $(".cover", this).fadeIn(1000); - }); - - //添加模块导航链接 -// var parentPage = window.parent; -// while(!parentPage.ZteFrameWork){ -// parentPage = parentPage.parent; -// } - $("a.entranceLink").click(function(e){ - e.preventDefault(); - if($(this).attr("id") && $(this).attr("id") != "undefined"){ - location.href = "default.html" + "#_" + $(this).attr("id"); - } - }); - - //国际化 - loadPropertiesSideMenu(lang, propertiesFileNamePrefix, "appRes/i18n/" , "com_zte_ums_ict_framework_ui_i18n"); - //loadPropertiesSideMenu(lang, propertiesFileNamePrefix, "i18n/" , "com_zte_ums_ict_framework_ui_i18n"); - loadPropertiesSideMenu(lang, "web-framework-integration-i18n", "i18n/" , "com_zte_ums_ict_framework_ui_i18n"); - }); -} \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/framework/js/moreOperation.js b/uiframe-iui/src/main/resources/webroot/framework/js/moreOperation.js deleted file mode 100644 index e37132d6..00000000 --- a/uiframe-iui/src/main/resources/webroot/framework/js/moreOperation.js +++ /dev/null @@ -1,151 +0,0 @@ -var resetSelectedItem=function(menuAlink){ - if(menuAlink.children('div.boxOperation').length>0){ - $(".box.boxOperation", $(".carousel-inner")).removeClass("moreButtonSelected"); - menuAlink.children('div.boxOperation').addClass('moreButtonSelected'); - }else if(menuAlink.parents('div.boxOperation').length>0){ - $(".box.boxOperation", $(".carousel-inner")).removeClass("moreButtonSelected"); - menuAlink.parents('div.boxOperation').addClass('moreButtonSelected'); - } -} -var reSelected=function(){ - if(ZteFrameWork){ - var menuID = ZteFrameWork.getLocationHash(); - var menuAlink = $('#'+ menuID,$('#pageableDiv')); - if(menuAlink.length>0){ - resetSelectedItem(menuAlink); - }else{ - menuAlink = $('#'+ menuID,$('.hor-menu')); - if(!!menuAlink.attr("defaultchildmenuid")&&menuAlink.attr("defaultchildmenuid").length>0){ - menuAlink = $('#'+ menuAlink.attr("defaultchildmenuid"),$('#pageableDiv')); - if(menuAlink.length>0){ - resetSelectedItem(menuAlink); - } - } - } - } -} -var inter=null; - -var clearMoreOperations=function(){ - $('#pageableDiv').removeClass("moreOpen"); - $('#pageableDiv').addClass("moreClose"); - $('.col-xs-12',$('#pageableDiv')).removeClass("moreOpen"); - $('.col-xs-12',$('#pageableDiv')).addClass("moreClose"); - $(".carousel-inner").children().remove(); - if (inter) { - clearInterval(inter); - }; -} - -var moreOperations = function(html){ - $('#pageableDiv').removeClass("moreClose"); - $('#pageableDiv').addClass("moreOpen"); - $('.col-xs-12',$('#pageableDiv')).removeClass("moreClose"); - $('.col-xs-12',$('#pageableDiv')).addClass("moreOpen"); - showArrow(); - $(".carousel-inner").children().remove(); - inter=setInterval(reSelected, 200); - var moreViewData=[]; - var div = document.createElement('div'); - //div.innerHTML = html; - $(div).append(html); - var liTages =$("ul:first",div).children(); //div.getElementsByTagName('li') - for(var i=0;i"; - }else{ - var aLinkTag = $("a", liTages[i]); - aLink.id = aLinkTag.attr("id"); - var aLinkContent = aLinkTag.html(); - aLinkTag.empty().html('
    '); - $(".box", aLinkTag).html(aLinkContent); - aLink.html = aLinkTag.prop("outerHTML"); - } - moreViewData.push(aLink); - } - } - - var transformQueryViewData = function(queryViewData, pageSize){ - var newData = []; - var pageNo = Math.floor(queryViewData.length / pageSize) + 1; - if(queryViewData.length % pageSize == 0){ - pageNo--; - } - for(var i=0;i' + - '
    ' + - "
    " + - "
    "; - $(".carousel-inner").append(itemHtml); - } - for(var i=0;i'; - $(".col-xs-12", $("#page_" + i + ".item")).append(buttonHtml); - } - } - } - - //moreOperationItems = transformQueryViewData(moreViewData, 14); - - var moreOperationPageSize = 14; - var windowWidth = $(window).width(); - if(windowWidth >= 1367 && windowWidth < 1441){ - moreOperationPageSize = 12; - }else if(windowWidth >= 1281 && windowWidth < 1367){ - moreOperationPageSize = 11; - }else if(windowWidth >= 1025 && windowWidth < 1281){ - moreOperationPageSize = 10; - }else if(windowWidth >= 920 && windowWidth < 1281){ - moreOperationPageSize = 9; - }else if(windowWidth >= 820 && windowWidth < 920){ - moreOperationPageSize = 8; - }else if(windowWidth >= 680 && windowWidth < 820){ - moreOperationPageSize = 7; - }else if(windowWidth >= 540 && windowWidth < 680){ - moreOperationPageSize = 4; - }else if(windowWidth >= 390 && windowWidth < 540){ - moreOperationPageSize = 3; - }else if(windowWidth < 390){ - moreOperationPageSize = 2; - } - - moreOperationItems = transformQueryViewData(moreViewData, moreOperationPageSize); - generateOperationItems(); - - $(".box.boxOperation").click(function(){ - $(".box.boxOperation", $(".carousel-inner")).removeClass("moreButtonSelected"); - $(this).addClass("moreButtonSelected"); - }); - - $($(".item", $(".carousel-inner"))[0]).addClass("active"); - - if($(".item.moreButtonsTag").length < 2){ - hideArrow(); - } -} - -var showArrow = function(){ - $(".carousel-control").show(); - $(".boxOperation").removeClass("boxOperationOnePage"); -} - -var hideArrow = function(){ - $(".carousel-control").hide(); - $(".boxOperation").addClass("boxOperationOnePage"); -} diff --git a/uiframe-iui/src/main/resources/webroot/framework/js/security/aes.js b/uiframe-iui/src/main/resources/webroot/framework/js/security/aes.js deleted file mode 100644 index bd18ef4c..00000000 --- a/uiframe-iui/src/main/resources/webroot/framework/js/security/aes.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* -CryptoJS v3.1.2 -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -var CryptoJS=CryptoJS||function(u,p){var d={},l=d.lib={},s=function(){},t=l.Base={extend:function(a){s.prototype=this;var c=new s;a&&c.mixIn(a);c.hasOwnProperty("init")||(c.init=function(){c.$super.init.apply(this,arguments)});c.init.prototype=c;c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}}, -r=l.WordArray=t.extend({init:function(a,c){a=this.words=a||[];this.sigBytes=c!=p?c:4*a.length},toString:function(a){return(a||v).stringify(this)},concat:function(a){var c=this.words,e=a.words,j=this.sigBytes;a=a.sigBytes;this.clamp();if(j%4)for(var k=0;k>>2]|=(e[k>>>2]>>>24-8*(k%4)&255)<<24-8*((j+k)%4);else if(65535>>2]=e[k>>>2];else c.push.apply(c,e);this.sigBytes+=a;return this},clamp:function(){var a=this.words,c=this.sigBytes;a[c>>>2]&=4294967295<< -32-8*(c%4);a.length=u.ceil(c/4)},clone:function(){var a=t.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var c=[],e=0;e>>2]>>>24-8*(j%4)&255;e.push((k>>>4).toString(16));e.push((k&15).toString(16))}return e.join("")},parse:function(a){for(var c=a.length,e=[],j=0;j>>3]|=parseInt(a.substr(j, -2),16)<<24-4*(j%8);return new r.init(e,c/2)}},b=w.Latin1={stringify:function(a){var c=a.words;a=a.sigBytes;for(var e=[],j=0;j>>2]>>>24-8*(j%4)&255));return e.join("")},parse:function(a){for(var c=a.length,e=[],j=0;j>>2]|=(a.charCodeAt(j)&255)<<24-8*(j%4);return new r.init(e,c)}},x=w.Utf8={stringify:function(a){try{return decodeURIComponent(escape(b.stringify(a)))}catch(c){throw Error("Malformed UTF-8 data");}},parse:function(a){return b.parse(unescape(encodeURIComponent(a)))}}, -q=l.BufferedBlockAlgorithm=t.extend({reset:function(){this._data=new r.init;this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=x.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var c=this._data,e=c.words,j=c.sigBytes,k=this.blockSize,b=j/(4*k),b=a?u.ceil(b):u.max((b|0)-this._minBufferSize,0);a=b*k;j=u.min(4*a,j);if(a){for(var q=0;q>>2]>>>24-8*(r%4)&255)<<16|(l[r+1>>>2]>>>24-8*((r+1)%4)&255)<<8|l[r+2>>>2]>>>24-8*((r+2)%4)&255,v=0;4>v&&r+0.75*v>>6*(3-v)&63));if(l=t.charAt(64))for(;d.length%4;)d.push(l);return d.join("")},parse:function(d){var l=d.length,s=this._map,t=s.charAt(64);t&&(t=d.indexOf(t),-1!=t&&(l=t));for(var t=[],r=0,w=0;w< -l;w++)if(w%4){var v=s.indexOf(d.charAt(w-1))<<2*(w%4),b=s.indexOf(d.charAt(w))>>>6-2*(w%4);t[r>>>2]|=(v|b)<<24-8*(r%4);r++}return p.create(t,r)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})(); -(function(u){function p(b,n,a,c,e,j,k){b=b+(n&a|~n&c)+e+k;return(b<>>32-j)+n}function d(b,n,a,c,e,j,k){b=b+(n&c|a&~c)+e+k;return(b<>>32-j)+n}function l(b,n,a,c,e,j,k){b=b+(n^a^c)+e+k;return(b<>>32-j)+n}function s(b,n,a,c,e,j,k){b=b+(a^(n|~c))+e+k;return(b<>>32-j)+n}for(var t=CryptoJS,r=t.lib,w=r.WordArray,v=r.Hasher,r=t.algo,b=[],x=0;64>x;x++)b[x]=4294967296*u.abs(u.sin(x+1))|0;r=r.MD5=v.extend({_doReset:function(){this._hash=new w.init([1732584193,4023233417,2562383102,271733878])}, -_doProcessBlock:function(q,n){for(var a=0;16>a;a++){var c=n+a,e=q[c];q[c]=(e<<8|e>>>24)&16711935|(e<<24|e>>>8)&4278255360}var a=this._hash.words,c=q[n+0],e=q[n+1],j=q[n+2],k=q[n+3],z=q[n+4],r=q[n+5],t=q[n+6],w=q[n+7],v=q[n+8],A=q[n+9],B=q[n+10],C=q[n+11],u=q[n+12],D=q[n+13],E=q[n+14],x=q[n+15],f=a[0],m=a[1],g=a[2],h=a[3],f=p(f,m,g,h,c,7,b[0]),h=p(h,f,m,g,e,12,b[1]),g=p(g,h,f,m,j,17,b[2]),m=p(m,g,h,f,k,22,b[3]),f=p(f,m,g,h,z,7,b[4]),h=p(h,f,m,g,r,12,b[5]),g=p(g,h,f,m,t,17,b[6]),m=p(m,g,h,f,w,22,b[7]), -f=p(f,m,g,h,v,7,b[8]),h=p(h,f,m,g,A,12,b[9]),g=p(g,h,f,m,B,17,b[10]),m=p(m,g,h,f,C,22,b[11]),f=p(f,m,g,h,u,7,b[12]),h=p(h,f,m,g,D,12,b[13]),g=p(g,h,f,m,E,17,b[14]),m=p(m,g,h,f,x,22,b[15]),f=d(f,m,g,h,e,5,b[16]),h=d(h,f,m,g,t,9,b[17]),g=d(g,h,f,m,C,14,b[18]),m=d(m,g,h,f,c,20,b[19]),f=d(f,m,g,h,r,5,b[20]),h=d(h,f,m,g,B,9,b[21]),g=d(g,h,f,m,x,14,b[22]),m=d(m,g,h,f,z,20,b[23]),f=d(f,m,g,h,A,5,b[24]),h=d(h,f,m,g,E,9,b[25]),g=d(g,h,f,m,k,14,b[26]),m=d(m,g,h,f,v,20,b[27]),f=d(f,m,g,h,D,5,b[28]),h=d(h,f, -m,g,j,9,b[29]),g=d(g,h,f,m,w,14,b[30]),m=d(m,g,h,f,u,20,b[31]),f=l(f,m,g,h,r,4,b[32]),h=l(h,f,m,g,v,11,b[33]),g=l(g,h,f,m,C,16,b[34]),m=l(m,g,h,f,E,23,b[35]),f=l(f,m,g,h,e,4,b[36]),h=l(h,f,m,g,z,11,b[37]),g=l(g,h,f,m,w,16,b[38]),m=l(m,g,h,f,B,23,b[39]),f=l(f,m,g,h,D,4,b[40]),h=l(h,f,m,g,c,11,b[41]),g=l(g,h,f,m,k,16,b[42]),m=l(m,g,h,f,t,23,b[43]),f=l(f,m,g,h,A,4,b[44]),h=l(h,f,m,g,u,11,b[45]),g=l(g,h,f,m,x,16,b[46]),m=l(m,g,h,f,j,23,b[47]),f=s(f,m,g,h,c,6,b[48]),h=s(h,f,m,g,w,10,b[49]),g=s(g,h,f,m, -E,15,b[50]),m=s(m,g,h,f,r,21,b[51]),f=s(f,m,g,h,u,6,b[52]),h=s(h,f,m,g,k,10,b[53]),g=s(g,h,f,m,B,15,b[54]),m=s(m,g,h,f,e,21,b[55]),f=s(f,m,g,h,v,6,b[56]),h=s(h,f,m,g,x,10,b[57]),g=s(g,h,f,m,t,15,b[58]),m=s(m,g,h,f,D,21,b[59]),f=s(f,m,g,h,z,6,b[60]),h=s(h,f,m,g,C,10,b[61]),g=s(g,h,f,m,j,15,b[62]),m=s(m,g,h,f,A,21,b[63]);a[0]=a[0]+f|0;a[1]=a[1]+m|0;a[2]=a[2]+g|0;a[3]=a[3]+h|0},_doFinalize:function(){var b=this._data,n=b.words,a=8*this._nDataBytes,c=8*b.sigBytes;n[c>>>5]|=128<<24-c%32;var e=u.floor(a/ -4294967296);n[(c+64>>>9<<4)+15]=(e<<8|e>>>24)&16711935|(e<<24|e>>>8)&4278255360;n[(c+64>>>9<<4)+14]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360;b.sigBytes=4*(n.length+1);this._process();b=this._hash;n=b.words;for(a=0;4>a;a++)c=n[a],n[a]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360;return b},clone:function(){var b=v.clone.call(this);b._hash=this._hash.clone();return b}});t.MD5=v._createHelper(r);t.HmacMD5=v._createHmacHelper(r)})(Math); -(function(){var u=CryptoJS,p=u.lib,d=p.Base,l=p.WordArray,p=u.algo,s=p.EvpKDF=d.extend({cfg:d.extend({keySize:4,hasher:p.MD5,iterations:1}),init:function(d){this.cfg=this.cfg.extend(d)},compute:function(d,r){for(var p=this.cfg,s=p.hasher.create(),b=l.create(),u=b.words,q=p.keySize,p=p.iterations;u.length>>2]&255}};d.BlockCipher=v.extend({cfg:v.cfg.extend({mode:b,padding:q}),reset:function(){v.reset.call(this);var a=this.cfg,b=a.iv,a=a.mode;if(this._xformMode==this._ENC_XFORM_MODE)var c=a.createEncryptor;else c=a.createDecryptor,this._minBufferSize=1;this._mode=c.call(a, -this,b&&b.words)},_doProcessBlock:function(a,b){this._mode.processBlock(a,b)},_doFinalize:function(){var a=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){a.pad(this._data,this.blockSize);var b=this._process(!0)}else b=this._process(!0),a.unpad(b);return b},blockSize:4});var n=d.CipherParams=l.extend({init:function(a){this.mixIn(a)},toString:function(a){return(a||this.formatter).stringify(this)}}),b=(p.format={}).OpenSSL={stringify:function(a){var b=a.ciphertext;a=a.salt;return(a?s.create([1398893684, -1701076831]).concat(a).concat(b):b).toString(r)},parse:function(a){a=r.parse(a);var b=a.words;if(1398893684==b[0]&&1701076831==b[1]){var c=s.create(b.slice(2,4));b.splice(0,4);a.sigBytes-=16}return n.create({ciphertext:a,salt:c})}},a=d.SerializableCipher=l.extend({cfg:l.extend({format:b}),encrypt:function(a,b,c,d){d=this.cfg.extend(d);var l=a.createEncryptor(c,d);b=l.finalize(b);l=l.cfg;return n.create({ciphertext:b,key:c,iv:l.iv,algorithm:a,mode:l.mode,padding:l.padding,blockSize:a.blockSize,formatter:d.format})}, -decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);return a.createDecryptor(c,d).finalize(b.ciphertext)},_parse:function(a,b){return"string"==typeof a?b.parse(a,this):a}}),p=(p.kdf={}).OpenSSL={execute:function(a,b,c,d){d||(d=s.random(8));a=w.create({keySize:b+c}).compute(a,d);c=s.create(a.words.slice(b),4*c);a.sigBytes=4*b;return n.create({key:a,iv:c,salt:d})}},c=d.PasswordBasedCipher=a.extend({cfg:a.cfg.extend({kdf:p}),encrypt:function(b,c,d,l){l=this.cfg.extend(l);d=l.kdf.execute(d, -b.keySize,b.ivSize);l.iv=d.iv;b=a.encrypt.call(this,b,c,d.key,l);b.mixIn(d);return b},decrypt:function(b,c,d,l){l=this.cfg.extend(l);c=this._parse(c,l.format);d=l.kdf.execute(d,b.keySize,b.ivSize,c.salt);l.iv=d.iv;return a.decrypt.call(this,b,c,d.key,l)}})}(); -(function(){for(var u=CryptoJS,p=u.lib.BlockCipher,d=u.algo,l=[],s=[],t=[],r=[],w=[],v=[],b=[],x=[],q=[],n=[],a=[],c=0;256>c;c++)a[c]=128>c?c<<1:c<<1^283;for(var e=0,j=0,c=0;256>c;c++){var k=j^j<<1^j<<2^j<<3^j<<4,k=k>>>8^k&255^99;l[e]=k;s[k]=e;var z=a[e],F=a[z],G=a[F],y=257*a[k]^16843008*k;t[e]=y<<24|y>>>8;r[e]=y<<16|y>>>16;w[e]=y<<8|y>>>24;v[e]=y;y=16843009*G^65537*F^257*z^16843008*e;b[k]=y<<24|y>>>8;x[k]=y<<16|y>>>16;q[k]=y<<8|y>>>24;n[k]=y;e?(e=z^a[a[a[G^z]]],j^=a[a[j]]):e=j=1}var H=[0,1,2,4,8, -16,32,64,128,27,54],d=d.AES=p.extend({_doReset:function(){for(var a=this._key,c=a.words,d=a.sigBytes/4,a=4*((this._nRounds=d+6)+1),e=this._keySchedule=[],j=0;j>>24]<<24|l[k>>>16&255]<<16|l[k>>>8&255]<<8|l[k&255]):(k=k<<8|k>>>24,k=l[k>>>24]<<24|l[k>>>16&255]<<16|l[k>>>8&255]<<8|l[k&255],k^=H[j/d|0]<<24);e[j]=e[j-d]^k}c=this._invKeySchedule=[];for(d=0;dd||4>=j?k:b[l[k>>>24]]^x[l[k>>>16&255]]^q[l[k>>> -8&255]]^n[l[k&255]]},encryptBlock:function(a,b){this._doCryptBlock(a,b,this._keySchedule,t,r,w,v,l)},decryptBlock:function(a,c){var d=a[c+1];a[c+1]=a[c+3];a[c+3]=d;this._doCryptBlock(a,c,this._invKeySchedule,b,x,q,n,s);d=a[c+1];a[c+1]=a[c+3];a[c+3]=d},_doCryptBlock:function(a,b,c,d,e,j,l,f){for(var m=this._nRounds,g=a[b]^c[0],h=a[b+1]^c[1],k=a[b+2]^c[2],n=a[b+3]^c[3],p=4,r=1;r>>24]^e[h>>>16&255]^j[k>>>8&255]^l[n&255]^c[p++],s=d[h>>>24]^e[k>>>16&255]^j[n>>>8&255]^l[g&255]^c[p++],t= -d[k>>>24]^e[n>>>16&255]^j[g>>>8&255]^l[h&255]^c[p++],n=d[n>>>24]^e[g>>>16&255]^j[h>>>8&255]^l[k&255]^c[p++],g=q,h=s,k=t;q=(f[g>>>24]<<24|f[h>>>16&255]<<16|f[k>>>8&255]<<8|f[n&255])^c[p++];s=(f[h>>>24]<<24|f[k>>>16&255]<<16|f[n>>>8&255]<<8|f[g&255])^c[p++];t=(f[k>>>24]<<24|f[n>>>16&255]<<16|f[g>>>8&255]<<8|f[h&255])^c[p++];n=(f[n>>>24]<<24|f[g>>>16&255]<<16|f[h>>>8&255]<<8|f[k&255])^c[p++];a[b]=q;a[b+1]=s;a[b+2]=t;a[b+3]=n},keySize:8});u.AES=p._createHelper(d)})(); diff --git a/uiframe-iui/src/main/resources/webroot/framework/js/security/changepwd.js b/uiframe-iui/src/main/resources/webroot/framework/js/security/changepwd.js deleted file mode 100644 index 72452372..00000000 --- a/uiframe-iui/src/main/resources/webroot/framework/js/security/changepwd.js +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -var ChangePWD = function () { - $.validator.addMethod("passwordCheck", function() { - if( $('#password').attr('type') == 'text' && $('#rpassword').attr('type') == 'text'){ - return true; - } - if( $('#password').attr('type') == 'password' && $('#rpassword').attr('type') == 'password' ){ - if($('#password').val() == $('#rpassword').val() ){ - return true; - } - } - if($('#password').val() =='' && $('#rpassword').attr('type') == 'text' || $('#rpassword').val() =='' && $('#password').attr('type')){ - return true; - } - return false; - }); - var handleLogin = function () { - $('.login-form').validate({ - errorElement : 'span', //default input error message container - errorClass : 'help-block', // default input error message class - focusInvalid : true, // do not focus the last invalid input - onfocusout : function (element) { - $(element).valid(); - }, - rules : { - oldpassword : { - required : false - }, - password : { - required : false - }, - rpassword : { - required : false, - passwordCheck : true - } - }, - - messages : { - oldpassword : { - required : $.i18n.prop('com_zte_ums_ict_sm_user_inputoldpwd') - }, - password : { - required : $.i18n.prop('com_zte_ums_ict_sm_user_inputnewpwd') - }, - rpassword : { - required : $.i18n.prop('com_zte_ums_ict_sm_user_inputnewpwdagain'), - equalTo : $.i18n.prop('com_zte_ums_ict_sm_password_confirm_not_consistent'), - passwordCheck : $.i18n.prop('com_zte_ums_ict_sm_password_confirm_not_consistent'), - } - }, - - invalidHandler : function (event, validator) { //display error alert on form submit - $('.alert-danger', $('.login-form')).show(); - }, - - highlight : function (element) { // hightlight error inputs - $(element) - .closest('.form-group').addClass('has-error'); // set error class to the control group - }, - - success : function (label) { - label.closest('.form-group').removeClass('has-error'); - label.remove(); - }, - - errorPlacement : function (error, element) { - error.insertAfter(element.closest('.input-icon')); - }, - - submitHandler : function (form) { - // form.submit(); - var params = {}; - var currentUser = httpRequest("GET", FrameConst.REST_GET_USERNAME, ""); - params["userName"] = currentUser; - params["password"] = $("#oldpassword").attr('type')=='password' ? $("#oldpassword").val() : ''; - params["newPassword"] = $("#password").attr('type')=='password' ? $("#password").val() : ''; - params["confirmPassword"] = $("#rpassword").attr('type')=='password' ? $("#rpassword").val() : ''; - - - jQuery('#submitBtn').prop("disabled", true); - $.ajax({ - type : "POST", - url : "/web/rest/sm/user/modifyCurrentPassword", - data : params, - dataType : "json", - success : function (data) { - var returnValue = data; - - if (returnValue && returnValue.result == 1) { - bootbox.alert($.i18n.prop('com_zte_ums_ict_sm_user_op_ok'), function () { - window.closeModal('changepwdDlg'); - }); - } else { - bootbox.alert(returnValue.response.data); - } - jQuery('#submitBtn').prop("disabled", false); - }, - error : function (xhr, ajaxOptions, thrownError) { - jQuery('#submitBtn').prop("disabled", false); - } - }); - - } - }); - - $('.login-form input').keypress(function (e) { - $("#nameOrpwdError").hide(); - if (e.which == 13) { - if ($('.login-form').validate().form()) { - $('.login-form').submit(); - } - return false; - } - }); - } - var handleI18n = function () { - $("#com_zte_ums_ict_sm_user_modify_current_password").text($.i18n.prop('com_zte_ums_ict_sm_user_modify_current_password')); - $("#com_zte_ums_ict_sm_user_old_password").text($.i18n.prop('com_zte_ums_ict_sm_user_old_password')); - $("#com_zte_ums_ict_sm_user_password").text($.i18n.prop('com_zte_ums_ict_sm_user_password')); - $("#com_zte_ums_ict_sm_user_confirmpassword").text($.i18n.prop('com_zte_ums_ict_sm_user_confirmpassword')); - - $("#oldpassword").attr("placeholder", $.i18n.prop('com_zte_ums_ict_sm_user_old_password')); - $("#password").attr("placeholder", $.i18n.prop('com_zte_ums_ict_sm_user_password')); - $("#rpassword").attr("placeholder", $.i18n.prop('com_zte_ums_ict_sm_user_confirmpassword')); - - $("#com_zte_ums_ict_sm_user_ok").text($.i18n.prop('com_zte_ums_ict_sm_user_ok')); - $("#com_zte_ums_ict_sm_user_cancel_button").text($.i18n.prop('com_zte_ums_ict_sm_user_cancel_button')); - - } - var handleShowModalEvent = function () { - $('#changepwdDlg').on('show.bs.modal', function (e) { - $("#oldpassword").val(""); - $("#password").val(""); - $("#rpassword").val(""); - $(".has-error", this).removeClass("has-error"); - $("span.help-block", this).hide(); - - if(!('placeholder' in document.createElement('input'))){ // �ж�������Ƿ�֧�� placeholder,ie9��֧�֣���Ҫ���⴦�� - $("#rpassword").rules("remove", "equalTo"); - $('[placeholder]').focus(function() { - var input = $(this); - input.attr('type','password'); - $("#rpassword").rules("add", { - passwordCheck :true - }); - if (input.val() == input.attr('placeholder')) { - input.val(''); - - } - }).blur(function() { - var input = $(this); - if (input.val() == '' || input.val() == input.attr('placeholder')) { - input.attr('type','text'); - $("#rpassword").rules("remove", "passwordCheck"); - - input.val(input.attr('placeholder')); - - } - }).blur(); - - - // - }; - - - }); - } - return { - //main function to initiate the module - init : function () { - handleI18n(); - handleShowModalEvent(); - handleLogin(); - } - }; -} -(); diff --git a/uiframe-iui/src/main/resources/webroot/framework/js/security/framework-util.js b/uiframe-iui/src/main/resources/webroot/framework/js/security/framework-util.js deleted file mode 100644 index a3781125..00000000 --- a/uiframe-iui/src/main/resources/webroot/framework/js/security/framework-util.js +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -function ict_framework_func1(word){ - var a1 = CryptoJS.enc.Utf8.parse(ict_framework_aes_a1); - var a2 = CryptoJS.enc.Utf8.parse(ict_framework_aes_a2); - var srcs = CryptoJS.enc.Utf8.parse(word); - var encrypted = CryptoJS.AES.encrypt(srcs, a1, { iv: a2,mode:CryptoJS.mode.CBC}); - return encrypted.toString(); -} - -function ict_framework_func2(word){ - var a1 = CryptoJS.enc.Utf8.parse(ict_framework_aes_a1); - var a2 = CryptoJS.enc.Utf8.parse(ict_framework_aes_a2); - var decrypt = CryptoJS.AES.decrypt(word, a1, { iv: a2,mode:CryptoJS.mode.CBC}); - return CryptoJS.enc.Utf8.stringify(decrypt).toString(); -} - - - - - - - -var ict_framework_aes_a1 = "9763853428462486"; -var ict_framework_aes_a2 = "9763853428462486"; \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/framework/js/security/security.js b/uiframe-iui/src/main/resources/webroot/framework/js/security/security.js deleted file mode 100644 index b900890b..00000000 --- a/uiframe-iui/src/main/resources/webroot/framework/js/security/security.js +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -var ErrResult_LOGIN_SUCCESS = 0; -var ErrResult_LOGIN_FAILURE = 4; -var ErrResult_LOGIN_SUCCESS_WARN = 1; -var ErrResult_LOGIN_SUCCESS_PASSWORD_WARN = 2; -var ErrResult_LOGIN_SUCCESS_PASSWORD_MUSTCHANGE = 3; -var ErrResult_LOGIN_SERV_ERROR = -1; - -function processLoginResult(data,params){ - if(data.home="web/res/web-framework/index.html"||data.home.indexOf("index.html")>0){ - data.home=FrameConst.DEFAULT_LOGINSKIP_PAGE; - //下面这部分是为了演示需要临时增加的自动切换 - /*if(params.username=="admin1"){ - data.home="/web/res/web-framework/default.html?menu=1"; - }else if(params.username=="admin2"){ - data.home="/web/res/web-framework/default.html?menu=2"; - }else if(params.username=="admin3"){ - data.home="/web/res/web-framework/default.html?menu=3"; - }else if(params.username=="admin4"){ - data.home="/web/res/web-framework/default.html?menu=4"; - }else if(params.username=="admin5"){ - data.home="/web/res/web-framework/default.html?menu=5"; - }else if(params.username=="admin6"){ - data.home="/web/res/web-framework/default.html?menu=6"; - }else if(params.username=="admin7"){ - data.home="/web/res/web-framework/default.html?menu=7"; - }*/ - } - var toHomePage = function(){ - location.href = data.home; - } - - var loginHander = function(inParams){ - if(inParams != undefined){ - login(inParams); - } - else{ - login(params); - } - } - - var errors = data.detail; - if(data.result == 0){ - store('username',params.username); - if(errors){ - if(errors.code==ErrResult_LOGIN_SUCCESS_PASSWORD_WARN){ - - com_zte_ums_aos_portal_PasswordDialog.create({ - ID : "LOGIN_MODIFY_PASSWORD", - username : params.username, - oldPassword : ict_framework_func2(params.password), - descLabel : errors[ErrResult_LOGIN_SUCCESS_PASSWORD_WARN], - cancelHander : toHomePage, - confirmHander : toHomePage - }); - LOGIN_MODIFY_PASSWORD.show(); - } - else if(errors.code==ErrResult_LOGIN_SUCCESS_WARN){ - window.alert(errors[ErrResult_LOGIN_SUCCESS_WARN],toHomePage); - } - else { - location.href = data.home; - } - } - else { - location.href = data.home; - } - } - else { - if(errors.code==ErrResult_LOGIN_SUCCESS_PASSWORD_MUSTCHANGE){ - com_zte_ums_aos_portal_PasswordDialog.create({ - ID : "LOGIN_MODIFY_PASSWORD", - username : params.username, - oldPassword : ict_framework_func2(params.password), - descLabel : errors[ErrResult_LOGIN_SUCCESS_PASSWORD_MUSTCHANGE], - confirmHander : loginHander - - }); - LOGIN_MODIFY_PASSWORD.show(); - } - else if(errors.code==ErrResult_LOGIN_FAILURE){ - $("#nameOrpwdError").addClass('alert-danger'); - $("#com_zte_ums_ict_portal_login_userPassword").html(errors[ErrResult_LOGIN_FAILURE]); - var tip = $("#nameOrpwdError"); - if (tip.attr("tipstatus") == "normal") { - tip.show(); - } else if (tip.attr("tipstatus") == "close") { - tip.attr("tipstatus", "normal"); - } - // if(0 < $("#inputPassword").length){ - // $("#inputPassword")[0].value = ""; - // } - } - else if(errors.code==ErrResult_LOGIN_SERV_ERROR){ - $("#loginConnError").addClass('alert-danger'); - var tip = $("#loginConnError"); - if (tip.attr("tipstatus") == "normal") { - tip.show(); - } else if (tip.attr("tipstatus") == "close") { - tip.attr("tipstatus", "normal"); - } - } - } -} -function login(params){ - $.post("login",{ - username : params.username, - password : params.password, - isEncypted:true - },function(data){ - processLoginResult(data,params); - },"json"); -} diff --git a/uiframe-iui/src/main/resources/webroot/framework/js/tools.js b/uiframe-iui/src/main/resources/webroot/framework/js/tools.js deleted file mode 100644 index 710f4a7e..00000000 --- a/uiframe-iui/src/main/resources/webroot/framework/js/tools.js +++ /dev/null @@ -1,1039 +0,0 @@ -/* - * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -////合并hk.min.js -/*! store2 - v2.3.0 - 2015-05-22 -* Copyright (c) 2015 Nathan Bubna; Licensed MIT, GPL */ -;(function(window, define) { - var _ = { - version: "2.3.0", - areas: {}, - apis: {}, - - // utilities - inherit: function(api, o) { - for (var p in api) { - if (!o.hasOwnProperty(p)) { - o[p] = api[p]; - } - } - return o; - }, - stringify: function(d) { - return d === undefined || typeof d === "function" ? d+'' : JSON.stringify(d); - }, - parse: function(s) { - // if it doesn't parse, return as is - try{ return JSON.parse(s); }catch(e){ return s; } - }, - - // extension hooks - fn: function(name, fn) { - _.storeAPI[name] = fn; - for (var api in _.apis) { - _.apis[api][name] = fn; - } - }, - get: function(area, key){ return area.getItem(key); }, - set: function(area, key, string){ area.setItem(key, string); }, - remove: function(area, key){ area.removeItem(key); }, - key: function(area, i){ return area.key(i); }, - length: function(area){ return area.length; }, - clear: function(area){ area.clear(); }, - - // core functions - Store: function(id, area, namespace) { - var store = _.inherit(_.storeAPI, function(key, data, overwrite) { - if (arguments.length === 0){ return store.getAll(); } - if (data !== undefined){ return store.set(key, data, overwrite); } - if (typeof key === "string"){ return store.get(key); } - if (!key){ return store.clear(); } - return store.setAll(key, data);// overwrite=data, data=key - }); - store._id = id; - try { - var testKey = '_safariPrivate_'; - area.setItem(testKey, 'sucks'); - store._area = area; - area.removeItem(testKey); - } catch (e) {} - if (!store._area) { - store._area = _.inherit(_.storageAPI, { items: {}, name: 'fake' }); - } - store._ns = namespace || ''; - if (!_.areas[id]) { - _.areas[id] = store._area; - } - if (!_.apis[store._ns+store._id]) { - _.apis[store._ns+store._id] = store; - } - return store; - }, - storeAPI: { - // admin functions - area: function(id, area) { - var store = this[id]; - if (!store || !store.area) { - store = _.Store(id, area, this._ns);//new area-specific api in this namespace - if (!this[id]){ this[id] = store; } - } - return store; - }, - namespace: function(namespace, noSession) { - if (!namespace){ - return this._ns ? this._ns.substring(0,this._ns.length-1) : ''; - } - var ns = namespace, store = this[ns]; - if (!store || !store.namespace) { - store = _.Store(this._id, this._area, this._ns+ns+'.');//new namespaced api - if (!this[ns]){ this[ns] = store; } - if (!noSession){ store.area('session', _.areas.session); } - } - return store; - }, - isFake: function(){ return this._area.name === 'fake'; }, - toString: function() { - return 'store'+(this._ns?'.'+this.namespace():'')+'['+this._id+']'; - }, - - // storage functions - has: function(key) { - if (this._area.has) { - return this._area.has(this._in(key));//extension hook - } - return !!(this._in(key) in this._area); - }, - size: function(){ return this.keys().length; }, - each: function(fn, and) { - for (var i=0, m=_.length(this._area); i _.length(this._area)) { m--; i--; }// in case of removeItem - } - return and || this; - }, - keys: function() { - return this.each(function(k, list){ list.push(k); }, []); - }, - get: function(key, alt) { - var s = _.get(this._area, this._in(key)); - return s !== null ? _.parse(s) : alt || s;// support alt for easy default mgmt - }, - getAll: function() { - return this.each(function(k, all){ all[k] = this.get(k); }, {}); - }, - set: function(key, data, overwrite) { - var d = this.get(key); - if (d != null && overwrite === false) { - return data; - } - return _.set(this._area, this._in(key), _.stringify(data), overwrite) || d; - }, - setAll: function(data, overwrite) { - var changed, val; - for (var key in data) { - val = data[key]; - if (this.set(key, val, overwrite) !== val) { - changed = true; - } - } - return changed; - }, - remove: function(key) { - var d = this.get(key); - _.remove(this._area, this._in(key)); - return d; - }, - clear: function() { - if (!this._ns) { - _.clear(this._area); - } else { - this.each(function(k){ _.remove(this._area, this._in(k)); }, 1); - } - return this; - }, - clearAll: function() { - var area = this._area; - for (var id in _.areas) { - if (_.areas.hasOwnProperty(id)) { - this._area = _.areas[id]; - this.clear(); - } - } - this._area = area; - return this; - }, - - // internal use functions - _in: function(k) { - if (typeof k !== "string"){ k = _.stringify(k); } - return this._ns ? this._ns + k : k; - }, - _out: function(k) { - return this._ns ? - k && k.indexOf(this._ns) === 0 ? - k.substring(this._ns.length) : - undefined : // so each() knows to skip it - k; - } - },// end _.storeAPI - storageAPI: { - length: 0, - has: function(k){ return this.items.hasOwnProperty(k); }, - key: function(i) { - var c = 0; - for (var k in this.items){ - if (this.has(k) && i === c++) { - return k; - } - } - }, - setItem: function(k, v) { - if (!this.has(k)) { - this.length++; - } - this.items[k] = v; - }, - removeItem: function(k) { - if (this.has(k)) { - delete this.items[k]; - this.length--; - } - }, - getItem: function(k){ return this.has(k) ? this.items[k] : null; }, - clear: function(){ for (var k in this.list){ this.removeItem(k); } }, - toString: function(){ return this.length+' items in '+this.name+'Storage'; } - }// end _.storageAPI - }; - - // setup the primary store fn - if (window.store){ _.conflict = window.store; } - var store = - // safely set this up (throws error in IE10/32bit mode for local files) - _.Store("local", (function(){try{ return localStorage; }catch(e){}})()); - store.local = store;// for completeness - store._ = _;// for extenders and debuggers... - // safely setup store.session (throws exception in FF for file:/// urls) - store.area("session", (function(){try{ return sessionStorage; }catch(e){}})()); - - //Expose store to the global object - window.store = store; - - if (typeof define === 'function' && define.amd !== undefined) { - define(function () { - return store; - }); - } else if (typeof module !== 'undefined' && module.exports) { - module.exports = store; - } - -})(this, null); - -// XHook - v1.3.3 - https://github.com/jpillora/xhook -// Jaime Pillora - MIT Copyright 2015 -(function(window,undefined) { -var AFTER, BEFORE, COMMON_EVENTS, EventEmitter, FIRE, FormData, NativeFormData, NativeXMLHttp, OFF, ON, READY_STATE, UPLOAD_EVENTS, XHookFormData, XHookHttpRequest, XMLHTTP, convertHeaders, depricatedProp, document, fakeEvent, mergeObjects, msie, proxyEvents, slice, xhook, _base, - __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; - -document = window.document; - -BEFORE = 'before'; - -AFTER = 'after'; - -READY_STATE = 'readyState'; - -ON = 'addEventListener'; - -OFF = 'removeEventListener'; - -FIRE = 'dispatchEvent'; - -XMLHTTP = 'XMLHttpRequest'; - -FormData = 'FormData'; - -UPLOAD_EVENTS = ['load', 'loadend', 'loadstart']; - -COMMON_EVENTS = ['progress', 'abort', 'error', 'timeout']; - -msie = parseInt((/msie (\d+)/.exec(navigator.userAgent.toLowerCase()) || [])[1]); - -if (isNaN(msie)) { - msie = parseInt((/trident\/.*; rv:(\d+)/.exec(navigator.userAgent.toLowerCase()) || [])[1]); -} - -(_base = Array.prototype).indexOf || (_base.indexOf = function(item) { - var i, x, _i, _len; - for (i = _i = 0, _len = this.length; _i < _len; i = ++_i) { - x = this[i]; - if (x === item) { - return i; - } - } - return -1; -}); - -slice = function(o, n) { - return Array.prototype.slice.call(o, n); -}; - -depricatedProp = function(p) { - return p === "returnValue" || p === "totalSize" || p === "position"; -}; - -mergeObjects = function(src, dst) { - var k, v; - for (k in src) { - v = src[k]; - if (depricatedProp(k)) { - continue; - } - try { - dst[k] = src[k]; - } catch (_error) {} - } - return dst; -}; - -proxyEvents = function(events, src, dst) { - var event, p, _i, _len; - p = function(event) { - return function(e) { - var clone, k, val; - clone = {}; - for (k in e) { - if (depricatedProp(k)) { - continue; - } - val = e[k]; - clone[k] = val === src ? dst : val; - } - return dst[FIRE](event, clone); - }; - }; - for (_i = 0, _len = events.length; _i < _len; _i++) { - event = events[_i]; - if (dst._has(event)) { - src["on" + event] = p(event); - } - } -}; - -fakeEvent = function(type) { - var msieEventObject; - if (document.createEventObject != null) { - msieEventObject = document.createEventObject(); - msieEventObject.type = type; - return msieEventObject; - } else { - try { - return new Event(type); - } catch (_error) { - return { - type: type - }; - } - } -}; - -EventEmitter = function(nodeStyle) { - var emitter, events, listeners; - events = {}; - listeners = function(event) { - return events[event] || []; - }; - emitter = {}; - emitter[ON] = function(event, callback, i) { - events[event] = listeners(event); - if (events[event].indexOf(callback) >= 0) { - return; - } - i = i === undefined ? events[event].length : i; - events[event].splice(i, 0, callback); - }; - emitter[OFF] = function(event, callback) { - var i; - if (event === undefined) { - events = {}; - return; - } - if (callback === undefined) { - events[event] = []; - } - i = listeners(event).indexOf(callback); - if (i === -1) { - return; - } - listeners(event).splice(i, 1); - }; - emitter[FIRE] = function() { - var args, event, i, legacylistener, listener, _i, _len, _ref; - args = slice(arguments); - event = args.shift(); - if (!nodeStyle) { - args[0] = mergeObjects(args[0], fakeEvent(event)); - } - legacylistener = emitter["on" + event]; - if (legacylistener) { - legacylistener.apply(undefined, args); - } - _ref = listeners(event).concat(listeners("*")); - for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { - listener = _ref[i]; - listener.apply(undefined, args); - } - }; - emitter._has = function(event) { - return !!(events[event] || emitter["on" + event]); - }; - if (nodeStyle) { - emitter.listeners = function(event) { - return slice(listeners(event)); - }; - emitter.on = emitter[ON]; - emitter.off = emitter[OFF]; - emitter.fire = emitter[FIRE]; - emitter.once = function(e, fn) { - var fire; - fire = function() { - emitter.off(e, fire); - return fn.apply(null, arguments); - }; - return emitter.on(e, fire); - }; - emitter.destroy = function() { - return events = {}; - }; - } - return emitter; -}; - -xhook = EventEmitter(true); - -xhook.EventEmitter = EventEmitter; - -xhook[BEFORE] = function(handler, i) { - if (handler.length < 1 || handler.length > 2) { - throw "invalid hook"; - } - return xhook[ON](BEFORE, handler, i); -}; - -xhook[AFTER] = function(handler, i) { - if (handler.length < 2 || handler.length > 3) { - throw "invalid hook"; - } - return xhook[ON](AFTER, handler, i); -}; - -xhook.enable = function() { - window[XMLHTTP] = XHookHttpRequest; - if (NativeFormData) { - window[FormData] = XHookFormData; - } -}; - -xhook.disable = function() { - window[XMLHTTP] = xhook[XMLHTTP]; - window[FormData] = NativeFormData; -}; - -convertHeaders = xhook.headers = function(h, dest) { - var header, headers, k, name, v, value, _i, _len, _ref; - if (dest == null) { - dest = {}; - } - switch (typeof h) { - case "object": - headers = []; - for (k in h) { - v = h[k]; - name = k.toLowerCase(); - headers.push("" + name + ":\t" + v); - } - return headers.join('\n'); - case "string": - headers = h.split('\n'); - for (_i = 0, _len = headers.length; _i < _len; _i++) { - header = headers[_i]; - if (/([^:]+):\s*(.+)/.test(header)) { - name = (_ref = RegExp.$1) != null ? _ref.toLowerCase() : void 0; - value = RegExp.$2; - if (dest[name] == null) { - dest[name] = value; - } - } - } - return dest; - } -}; - -NativeFormData = window[FormData]; - -XHookFormData = function(form) { - var entries; - this.fd = form ? new NativeFormData(form) : new NativeFormData(); - this.form = form; - entries = []; - Object.defineProperty(this, 'entries', { - get: function() { - var fentries; - fentries = !form ? [] : slice(form.querySelectorAll("input,select")).filter(function(e) { - var _ref; - return ((_ref = e.type) !== 'checkbox' && _ref !== 'radio') || e.checked; - }).map(function(e) { - return [e.name, e.type === "file" ? e.files : e.value]; - }); - return fentries.concat(entries); - } - }); - this.append = (function(_this) { - return function() { - var args; - args = slice(arguments); - entries.push(args); - return _this.fd.append.apply(_this.fd, args); - }; - })(this); -}; - -if (NativeFormData) { - xhook[FormData] = NativeFormData; - window[FormData] = XHookFormData; -} - -NativeXMLHttp = window[XMLHTTP]; - -xhook[XMLHTTP] = NativeXMLHttp; - -XHookHttpRequest = window[XMLHTTP] = function() { - var ABORTED, currentState, emitFinal, emitReadyState, facade, hasError, hasErrorHandler, readBody, readHead, request, response, setReadyState, status, transiting, writeBody, writeHead, xhr; - ABORTED = -1; - xhr = new xhook[XMLHTTP](); - request = {}; - status = null; - hasError = void 0; - transiting = void 0; - response = void 0; - readHead = function() { - var key, name, val, _ref; - response.status = status || xhr.status; - if (!(status === ABORTED && msie < 10)) { - response.statusText = xhr.statusText; - } - if (status !== ABORTED) { - _ref = convertHeaders(xhr.getAllResponseHeaders()); - for (key in _ref) { - val = _ref[key]; - if (!response.headers[key]) { - name = key.toLowerCase(); - response.headers[name] = val; - } - } - } - }; - readBody = function() { - if (!xhr.responseType || xhr.responseType === "text") { - response.text = xhr.responseText; - response.data = xhr.responseText; - } else if (xhr.responseType === "document") { - response.xml = xhr.responseXML; - response.data = xhr.responseXML; - } else { - response.data = xhr.response; - } - if ("responseURL" in xhr) { - response.finalUrl = xhr.responseURL; - } - }; - writeHead = function() { - facade.status = response.status; - facade.statusText = response.statusText; - }; - writeBody = function() { - if ('text' in response) { - facade.responseText = response.text; - } - if ('xml' in response) { - facade.responseXML = response.xml; - } - if ('data' in response) { - facade.response = response.data; - } - if ('finalUrl' in response) { - facade.responseURL = response.finalUrl; - } - }; - emitReadyState = function(n) { - while (n > currentState && currentState < 4) { - facade[READY_STATE] = ++currentState; - if (currentState === 1) { - facade[FIRE]("loadstart", {}); - } - if (currentState === 2) { - writeHead(); - } - if (currentState === 4) { - writeHead(); - writeBody(); - } - facade[FIRE]("readystatechange", {}); - if (currentState === 4) { - setTimeout(emitFinal, 0); - } - } - }; - emitFinal = function() { - if (!hasError) { - facade[FIRE]("load", {}); - } - facade[FIRE]("loadend", {}); - if (hasError) { - facade[READY_STATE] = 0; - } - }; - currentState = 0; - setReadyState = function(n) { - var hooks, process; - if (n !== 4) { - emitReadyState(n); - return; - } - hooks = xhook.listeners(AFTER); - process = function() { - var hook; - if (!hooks.length) { - return emitReadyState(4); - } - hook = hooks.shift(); - if (hook.length === 2) { - hook(request, response); - return process(); - } else if (hook.length === 3 && request.async) { - return hook(request, response, process); - } else { - return process(); - } - }; - process(); - }; - facade = request.xhr = EventEmitter(); - xhr.onreadystatechange = function(event) { - try { - if (xhr[READY_STATE] === 2) { - readHead(); - } - } catch (_error) {} - if (xhr[READY_STATE] === 4) { - transiting = false; - readHead(); - readBody(); - } - setReadyState(xhr[READY_STATE]); - }; - hasErrorHandler = function() { - hasError = true; - }; - facade[ON]('error', hasErrorHandler); - facade[ON]('timeout', hasErrorHandler); - facade[ON]('abort', hasErrorHandler); - facade[ON]('progress', function() { - if (currentState < 3) { - setReadyState(3); - } else { - facade[FIRE]("readystatechange", {}); - } - }); - if ('withCredentials' in xhr || xhook.addWithCredentials) { - facade.withCredentials = false; - } - facade.status = 0; - facade.open = function(method, url, async, user, pass) { - currentState = 0; - hasError = false; - transiting = false; - request.headers = {}; - request.headerNames = {}; - request.status = 0; - response = {}; - response.headers = {}; - request.method = method; - request.url = url; - request.async = async !== false; - request.user = user; - request.pass = pass; - setReadyState(1); - }; - facade.send = function(body) { - var hooks, k, modk, process, send, _i, _len, _ref; - _ref = ['type', 'timeout', 'withCredentials']; - if(navigator.userAgent.indexOf("Firefox/") != -1){http://atmosphere-framework.2306103.n4.nabble.com/Atmosphere-js-withCredentials-true-does-not-work-in-Firefox-td4656661.html - _ref = ['type', 'timeout']; - } - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - k = _ref[_i]; - modk = k === "type" ? "responseType" : k; - if (modk in facade) { - request[k] = facade[modk]; - } - } - request.body = body; - send = function() { - var header, value, _j, _len1, _ref1, _ref2; - proxyEvents(COMMON_EVENTS, xhr, facade); - if (facade.upload) { - proxyEvents(COMMON_EVENTS.concat(UPLOAD_EVENTS), xhr.upload, facade.upload); - } - transiting = true; - xhr.open(request.method, request.url, request.async, request.user, request.pass); - _ref1 = ['type', 'timeout', 'withCredentials']; - if(navigator.userAgent.indexOf("Firefox/") != -1){//http://atmosphere-framework.2306103.n4.nabble.com/Atmosphere-js-withCredentials-true-does-not-work-in-Firefox-td4656661.html - _ref1 = ['type', 'timeout']; - } - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - k = _ref1[_j]; - modk = k === "type" ? "responseType" : k; - if (k in request) { - xhr[modk] = request[k]; - } - } - _ref2 = request.headers; - for (header in _ref2) { - value = _ref2[header]; - xhr.setRequestHeader(header, value); - } - if (request.body instanceof XHookFormData) { - request.body = request.body.fd; - } - xhr.send(request.body); - }; - hooks = xhook.listeners(BEFORE); - process = function() { - var done, hook; - if (!hooks.length) { - return send(); - } - done = function(userResponse) { - if (typeof userResponse === 'object' && (typeof userResponse.status === 'number' || typeof response.status === 'number')) { - mergeObjects(userResponse, response); - if (__indexOf.call(userResponse, 'data') < 0) { - userResponse.data = userResponse.response || userResponse.text; - } - setReadyState(4); - return; - } - process(); - }; - done.head = function(userResponse) { - mergeObjects(userResponse, response); - return setReadyState(2); - }; - done.progress = function(userResponse) { - mergeObjects(userResponse, response); - return setReadyState(3); - }; - hook = hooks.shift(); - if (hook.length === 1) { - return done(hook(request)); - } else if (hook.length === 2 && request.async) { - return hook(request, done); - } else { - return done(); - } - }; - process(); - }; - facade.abort = function() { - status = ABORTED; - if (transiting) { - xhr.abort(); - } else { - facade[FIRE]('abort', {}); - } - }; - facade.setRequestHeader = function(header, value) { - var lName, name; - lName = header != null ? header.toLowerCase() : void 0; - name = request.headerNames[lName] = request.headerNames[lName] || header; - if (request.headers[name]) { - value = request.headers[name] + ', ' + value; - } - request.headers[name] = value; - }; - facade.getResponseHeader = function(header) { - var name; - name = header != null ? header.toLowerCase() : void 0; - return response.headers[name]; - }; - facade.getAllResponseHeaders = function() { - return convertHeaders(response.headers); - }; - if (xhr.overrideMimeType) { - facade.overrideMimeType = function() { - return xhr.overrideMimeType.apply(xhr, arguments); - }; - } - if (xhr.upload) { - facade.upload = request.upload = EventEmitter(); - } - return facade; -}; -/* -if (typeof this.define === "function" && this.define.amd) { - define("xhook", [], function() { - return xhook; - }); -} else {*/ - (this.exports || this).xhook = xhook; -//} - -}.call(this,window)); - -xhook.before(function(request) { - var zte_headers = store('zte_http_headers'); - if (zte_headers && zte_headers.length > 0) { - for (i = 0; i < zte_headers.length; i++) { - if (zte_headers[i].store === true) { - if ( !! store(zte_headers[i].value)) { - request.headers[zte_headers[i].key] = store(zte_headers[i].value).toUpperCase() - } - } else { - request.headers[zte_headers[i].key] = zte_headers[i].value - } - } - } -}); -/** - * 初始化脚本文件装载工具 - * zongying 2010.12 - * modify: - */ -$Boot = {}; - -/** - * 创建命名空间 - * @param {Object} name - * @param {Object} object - */ -$Boot.createNamespace = function(name, object) { - var splits = name.split("."); - var parent = window; - //document.window浏览器内置对象 - var part = splits[0]; - for (var i = 0, len = splits.length - 1; i < len; i++, part = splits[i]) { - if (!parent[part]) { - parent = parent[part] = {}; - } else { - parent = parent[part]; - } - } - // 存放对象 - parent[part] = object; - // 返回 last part name (例如:classname) - return part; -} - -$Boot.isDefined = function(o) { - return typeof (o) != "undefined" -} -/** - * 启动配置类 - */ -$Boot.Config = function() { - - function isDefined(o) { - return typeof (o) != "undefined" - } - - //用户应用当前目录 - if (!isDefined(window.$userAppDir)) { - window.$userAppDir = './' - } - //组件库目录 - if (!isDefined(window.$userFrameDir)) { - window.$userFrameDir = '/common/' - } - //用户i18文件目录 - if (!isDefined(window.$userI18nDir)) { - window.$userI18nDir = './' - } - - //当前语言 默认为英语 - var language = "zh-CN"; - //var languageList = ['ar', 'ba', 'cr', 'cs', 'de', 'el', 'es', 'fi', 'fr', 'fr-FR', 'hu-HU', 'id', 'it', 'ja', 'nb-NO', 'nl', 'pl', 'pl-PL', 'pt', 'pt-BR', 'ro-RO', 'ru-RU', 'sk', 'sr', 'sr-Latn', 'sv-SE', 'en-US','uk-UA', 'zh-CN', 'zh-TW']; - var languageList = ['en-US', 'zh-CN']; - - //从服务端取客户端接受语言类型 - var getAcceptLangFromServer = true; - - - /** - * 创建XMLHttpRequest对象 - */ - function createXMLHttpRequest() { - if (window.ActiveXObject) { - return new ActiveXObject("Microsoft.XMLHTTP"); - } else if (window.XMLHttpRequest) { - return new XMLHttpRequest(); - } else { - throw new Error("This Brower do not support XMLHTTP!!"); - } - } - - - /** - * 同步发送xml http 请求 - * @param {Object} url - * @param {Object} data - * @param {Object} method - */ - function httpRequest(method, url, data) { - var xmlhttp; - xmlhttp = createXMLHttpRequest(); - var sendData = null; - if (method == "get") { - url = url + "?" + data; - - } else if (method == "post") { - sendData = data; - } - xmlhttp.open(method, url, false); - xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); - xmlhttp.setRequestHeader("If-Modified-Since", "0"); - xmlhttp.send(sendData); - if (xmlhttp.status == 200) - return xmlhttp.responseText; - } - - /** - * 同步发送xml http 请求(给外部调用) - * @param {Object} url - * @param {Object} data - * @param {Object} method - */ - this.httpRequestStatic = function(method, url, data) { - var xmlhttp; - xmlhttp = createXMLHttpRequest(); - var sendData = null; - if (method == "get") { - url = url + "?" + data; - - } else if (method == "post") { - sendData = data; - } - xmlhttp.open(method, url, false); - xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); - xmlhttp.setRequestHeader("If-Modified-Since", "0"); - xmlhttp.send(sendData); - if (xmlhttp.status == 200) - return xmlhttp.responseText; - } - - function inArray(array, obj) { - for (var i = 0; i < array.length; i++) { - if (array[i] == obj) { - return true; - } - } - return false; - - } - - /** - * 取得浏览器语言信息 - */ - this.getLanguage = function() { - var rtnLanguage = localStorage.getItem("language-option"); - if( rtnLanguage == "null" || rtnLanguage == null ){ - rtnLanguage = window.navigator.userLanguage||window.navigator.language; - } - if( rtnLanguage == '"zh-CN"' || rtnLanguage == "zh-CN" ){ - return "zh-CN"; - }else{ - return "en-US"; - } - //return "en-US"; - } - - this.getUrlParam=function(name){ - var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象 - var search =decodeURIComponent(location.search.substring(1)); //decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。 - var r =search.match(reg); //匹配目标参数 - if (r != null) return unescape(r[2]); //unescape() 函数可对通过 escape() 编码的字符串进行解码。 - return null; //返回参数值 - } - - -} - -//创建命名空间 -$Boot.createNamespace("com.zte.ums.aos.framework.BootConfig", $Boot.Config); -//创建基础配置对象实例 -$Boot.bootConfig = new com.zte.ums.aos.framework.BootConfig(); - -function getLanguage(){ - return $Boot.bootConfig.getLanguage(); -} - -function getStringWidth(text,fontSize) -{ - var span = document.getElementById("_ictframework_getwidth"); - if (span == null) { - span = document.createElement("span"); - span.id = "_ictframework_getwidth"; - document.body.appendChild(span); - } - span.innerText = text; - span.style.whiteSpace = "nowrap"; - $("#_ictframework_getwidth").attr('style','font-size:'+fontSize+'px;'); - var width = span.offsetWidth; - $("#_ictframework_getwidth").attr('style','display:none'); - return width; -} - -function getUrlParam(name){ - return $Boot.bootConfig.getUrlParam(name); -} - -function httpRequest(method, url, data) { - return $Boot.bootConfig.httpRequestStatic(method, url, data) -} - -// 定义JQUERY AJAX 完成函数,判断返回状态,如果状态正常,但HEADER头里有session超时信息,则刷新重登录 -// 如果状态为 401, 也刷新重登录 -// 注意如果在$.ajax() 函数中定义了 complete,则覆盖了这里预定义complete内容,以$.ajax()函数中定义的为准,这里预定义的函数则失效,如果 -// 要继续判断session超时,则需要在 $.ajax()函数中定义的complete函数中加入这里预定义内容。 -if (jQuery) { - $.ajaxSetup({ - complete:function(XMLHttpRequest,textStatus){ - if (XMLHttpRequest.status == 401) { - window.location.replace("login.html"); - } - // if (XMLHttpRequest.status == 200) { - // var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus"); ////通过XMLHttpRequest取得响应头,sessionstatus, - // if(sessionstatus=="timeout"){ - // window.location.replace("/"); - // } - // } else if (XMLHttpRequest.status == 401) { - // window.location.replace("/"); - // } - } - }); -} diff --git a/uiframe-iui/src/main/resources/webroot/framework/json/main-page.json b/uiframe-iui/src/main/resources/webroot/framework/json/main-page.json deleted file mode 100644 index ca282f77..00000000 --- a/uiframe-iui/src/main/resources/webroot/framework/json/main-page.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "propertiesFileNamePrefix":"web-framework-integration-i18n", - "productName":"Net Numen ICT", - "productImage":"img/integration/zte_logo_white.png", - "modules":[ - { - "cover":"com_zte_ums_ict_framework_main_page_dashboard", - "background":"skyBlue-mainpage", - "toolsImage":"toolsImageBrokenLine", - "url":"", - "linkId":"ngict-dashboard-index", - "contentTip":"" - }, - { - "cover":"com_zte_ums_ict_framework_main_page_monitor", - "background":"golden-mainpage", - "toolsImage":"toolsImageHierachy", - "url":"", - "linkId":"ngict-itm-monintor", - "contentTip":"" - }, - { - "cover":"", - "background":"manLieONCloud-image", - "toolsImage":"", - "url":"http://vnjs.net/www/project/freewall/", - "contentTip":"" - }, - { - "cover":"com_zte_ums_ict_framework_main_page_alarm", - "background":"orange-mainpage", - "toolsImage":"toolsImageGear", - "url":"", - "linkId":"ngict-fm-summary", - - "contentTip":"" - }, - { - "cover":"com_zte_ums_ict_framework_main_page_performance", - "background":"pinkishRed-mainpage", - "toolsImage":"toolsImagePresent", - "url":"", - "linkId":"ngict-pm-meatask", - - "contentTip":"" - }, - { - "cover":"", - "background":"magicCube-image", - "toolsImage":"", - "url":"", - "contentTip":"" - }, - { - "cover":"com_zte_ums_ict_framework_main_page_security", - "background":"grassGreen-mainpage", - "toolsImage":"toolsImageFile", - "url":"", - "linkId":"ngict-sm", - - "contentTip":"" - }, - { - "cover":"", - "background":"meeting-image", - "toolsImage":"", - "url":"", - "contentTip":"" - }, - { - "cover":"", - "background":"earth-image", - "toolsImage":"", - "url":"", - "contentTip":"" - }, - { - "cover":"com_zte_ums_ict_framework_main_page_log", - "background":"orange-mainpage", - "toolsImage":"toolsImageGear", - "url":"", - "linkId":"ngict-log", - - "contentTip":"" - }, - { - "cover":"com_zte_ums_ict_framework_main_page_system", - "background":"skyBlue-mainpage", - "toolsImage":"toolsImageBriefcase", - "url":"", - "linkId":"ngict-system", - - "contentTip":"" - }, - { - "cover":"", - "background":"magicThought-image", - "toolsImage":"", - "url":"", - "contentTip":"" - } - ] -} \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/framework/login.html b/uiframe-iui/src/main/resources/webroot/framework/login.html deleted file mode 100644 index bfc3f108..00000000 --- a/uiframe-iui/src/main/resources/webroot/framework/login.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - -
    - -
    -
    - -
    - - - - - - - - - - - - - - - - - diff --git a/uiframe-iui/src/main/resources/webroot/framework/main-page.html b/uiframe-iui/src/main/resources/webroot/framework/main-page.html deleted file mode 100644 index 66637ea2..00000000 --- a/uiframe-iui/src/main/resources/webroot/framework/main-page.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -
    -
    -

    Net Numen

    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/framework/menus/main_Fmegabar.html b/uiframe-iui/src/main/resources/webroot/framework/menus/main_Fmegabar.html deleted file mode 100644 index 142b1664..00000000 --- a/uiframe-iui/src/main/resources/webroot/framework/menus/main_Fmegabar.html +++ /dev/null @@ -1,17 +0,0 @@ - diff --git a/uiframe-iui/src/main/resources/webroot/framework/menus/main_Fsiderbar.html b/uiframe-iui/src/main/resources/webroot/framework/menus/main_Fsiderbar.html deleted file mode 100644 index 142b1664..00000000 --- a/uiframe-iui/src/main/resources/webroot/framework/menus/main_Fsiderbar.html +++ /dev/null @@ -1,17 +0,0 @@ - diff --git a/uiframe-iui/src/main/resources/webroot/framework/menus/main_siderbar.html b/uiframe-iui/src/main/resources/webroot/framework/menus/main_siderbar.html deleted file mode 100644 index 142b1664..00000000 --- a/uiframe-iui/src/main/resources/webroot/framework/menus/main_siderbar.html +++ /dev/null @@ -1,17 +0,0 @@ - diff --git a/uiframe-iui/src/main/resources/webroot/framework/menus/readme.txt b/uiframe-iui/src/main/resources/webroot/framework/menus/readme.txt deleted file mode 100644 index ac089ae8..00000000 --- a/uiframe-iui/src/main/resources/webroot/framework/menus/readme.txt +++ /dev/null @@ -1,17 +0,0 @@ -==== - Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -==== - -本目录放置菜单。 \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/animate/animate.min.css b/uiframe-iui/src/main/resources/webroot/vendor/animate/animate.min.css deleted file mode 100644 index 3a85ab38..00000000 --- a/uiframe-iui/src/main/resources/webroot/vendor/animate/animate.min.css +++ /dev/null @@ -1,6 +0,0 @@ -@charset "UTF-8";/*! -Animate.css - http://daneden.me/animate -Licensed under the MIT license - http://opensource.org/licenses/MIT - -Copyright (c) 2014 Daniel Eden -*/.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}@-webkit-keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);-ms-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);-ms-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);-ms-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);-ms-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);-ms-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);-ms-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);-ms-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);-ms-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);-ms-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);-ms-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);-ms-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);-ms-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);-ms-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);-ms-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes tada{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}@keyframes wobble{0%{-webkit-transform:none;-ms-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);-ms-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);-ms-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);-ms-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);-ms-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);-ms-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);-ms-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);-ms-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);-ms-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);-ms-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);-ms-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);-ms-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);-ms-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);-ms-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);-ms-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);-ms-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);-ms-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);-ms-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);-ms-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);-ms-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);-ms-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);-ms-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);-ms-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);-ms-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);-ms-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;-ms-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);-ms-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);-ms-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);-ms-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);-ms-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);-ms-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);-ms-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{0%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);-ms-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);-ms-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{0%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);-ms-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0,0,1,45deg);transform:rotate(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0,0,1,45deg);-ms-transform:rotate(0,0,1,45deg);transform:rotate(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);-ms-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);-ms-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);-ms-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);-ms-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);-ms-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);-ms-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-ms-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-ms-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);-ms-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;-ms-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);-ms-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp} \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/avalon/avalon.js b/uiframe-iui/src/main/resources/webroot/vendor/avalon/avalon.js deleted file mode 100644 index 786ed3c0..00000000 --- a/uiframe-iui/src/main/resources/webroot/vendor/avalon/avalon.js +++ /dev/null @@ -1,5819 +0,0 @@ -/*================================================== - Copyright (c) 2013-2015 司徒正美 and other contributors - http://www.cnblogs.com/rubylouvre/ - https://github.com/RubyLouvre - http://weibo.com/jslouvre/ - - Released under the MIT license - avalon.js 1.45 built in 2015.7.17 - support IE6+ and other browsers - ==================================================*/ -(function(global, factory) { - - if (typeof module === "object" && typeof module.exports === "object") { - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get avalon. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var avalon = require("avalon")(window); - module.exports = global.document ? factory(global, true) : function(w) { - if (!w.document) { - throw new Error("Avalon requires a window with a document") - } - return factory(w) - } - } else { - factory(global) - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function(window, noGlobal){ - -/********************************************************************* - * 全局变量及方法 * - **********************************************************************/ -var expose = new Date() - 0 -//http://stackoverflow.com/questions/7290086/javascript-use-strict-and-nicks-find-global-function -var DOC = window.document -var head = DOC.getElementsByTagName("head")[0] //HEAD元素 -var ifGroup = head.insertBefore(document.createElement("avalon"), head.firstChild) //避免IE6 base标签BUG -ifGroup.innerHTML = "X" -ifGroup.setAttribute("ms-skip", "1") -ifGroup.className = "avalonHide" -var rnative = /\[native code\]/ //判定是否原生函数 -function log() { - if (window.console && avalon.config.debug) { - // http://stackoverflow.com/questions/8785624/how-to-safely-wrap-console-log - Function.apply.call(console.log, console, arguments) - } -} - - -var subscribers = "$" + expose -var otherRequire = window.require -var otherDefine = window.define -var innerRequire -var stopRepeatAssign = false -var rword = /[^, ]+/g //切割字符串为一个个小块,以空格或豆号分开它们,结合replace实现字符串的forEach -var rcomplexType = /^(?:object|array)$/ -var rsvg = /^\[object SVG\w*Element\]$/ -var rwindow = /^\[object (?:Window|DOMWindow|global)\]$/ -var oproto = Object.prototype -var ohasOwn = oproto.hasOwnProperty -var serialize = oproto.toString -var ap = Array.prototype -var aslice = ap.slice -var Registry = {} //将函数曝光到此对象上,方便访问器收集依赖 -var W3C = window.dispatchEvent -var root = DOC.documentElement -var avalonFragment = DOC.createDocumentFragment() -var cinerator = DOC.createElement("div") -var class2type = {} -"Boolean Number String Function Array Date RegExp Object Error".replace(rword, function (name) { - class2type["[object " + name + "]"] = name.toLowerCase() -}) - - -function noop() { -} - - -function oneObject(array, val) { - if (typeof array === "string") { - array = array.match(rword) || [] - } - var result = {}, - value = val !== void 0 ? val : 1 - for (var i = 0, n = array.length; i < n; i++) { - result[array[i]] = value - } - return result -} - -//生成UUID http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript -var generateID = function (prefix) { - prefix = prefix || "avalon" - return String(Math.random() + Math.random()).replace(/\d\.\d{4}/, prefix) -} -function IE() { - if (window.VBArray) { - var mode = document.documentMode - return mode ? mode : window.XMLHttpRequest ? 7 : 6 - } else { - return NaN - } -} -var IEVersion = IE() - -avalon = function (el) { //创建jQuery式的无new 实例化结构 - return new avalon.init(el) -} - -avalon.profile = function () { - if (window.console && avalon.config.profile) { - Function.apply.call(console.log, console, arguments) - } -} - -/*视浏览器情况采用最快的异步回调*/ -avalon.nextTick = new function () {// jshint ignore:line - var tickImmediate = window.setImmediate - var tickObserver = window.MutationObserver - var tickPost = W3C && window.postMessage - if (tickImmediate) { - return tickImmediate.bind(window) - } - - var queue = [] - function callback() { - var n = queue.length - for (var i = 0; i < n; i++) { - queue[i]() - } - queue = queue.slice(n) - } - - if (tickObserver) { - var node = document.createTextNode("avalon") - new tickObserver(callback).observe(node, {characterData: true})// jshint ignore:line - return function (fn) { - queue.push(fn) - node.data = Math.random() - } - } - - if (tickPost) { - window.addEventListener("message", function (e) { - var source = e.source - if ((source === window || source === null) && e.data === "process-tick") { - e.stopPropagation() - callback() - } - }) - - return function (fn) { - queue.push(fn) - window.postMessage('process-tick', '*') - } - } - - return function (fn) { - setTimeout(fn, 0) - } -}// jshint ignore:line -/********************************************************************* - * avalon的静态方法定义区 * - **********************************************************************/ -avalon.init = function (el) { - this[0] = this.element = el -} -avalon.fn = avalon.prototype = avalon.init.prototype - -avalon.type = function (obj) { //取得目标的类型 - if (obj == null) { - return String(obj) - } - // 早期的webkit内核浏览器实现了已废弃的ecma262v4标准,可以将正则字面量当作函数使用,因此typeof在判定正则时会返回function - return typeof obj === "object" || typeof obj === "function" ? - class2type[serialize.call(obj)] || "object" : - typeof obj -} - -var isFunction = typeof alert === "object" ? function (fn) { - try { - return /^\s*\bfunction\b/.test(fn + "") - } catch (e) { - return false - } -} : function (fn) { - return serialize.call(fn) === "[object Function]" -} -avalon.isFunction = isFunction - -avalon.isWindow = function (obj) { - if (!obj) - return false - // 利用IE678 window == document为true,document == window竟然为false的神奇特性 - // 标准浏览器及IE9,IE10等使用 正则检测 - return obj == obj.document && obj.document != obj //jshint ignore:line -} - -function isWindow(obj) { - return rwindow.test(serialize.call(obj)) -} -if (isWindow(window)) { - avalon.isWindow = isWindow -} -var enu -for (enu in avalon({})) { - break -} -var enumerateBUG = enu !== "0" //IE6下为true, 其他为false -/*判定是否是一个朴素的javascript对象(Object),不是DOM对象,不是BOM对象,不是自定义类的实例*/ -avalon.isPlainObject = function (obj, key) { - if (!obj || avalon.type(obj) !== "object" || obj.nodeType || avalon.isWindow(obj)) { - return false; - } - try { //IE内置对象没有constructor - if (obj.constructor && !ohasOwn.call(obj, "constructor") && !ohasOwn.call(obj.constructor.prototype, "isPrototypeOf")) { - return false; - } - } catch (e) { //IE8 9会在这里抛错 - return false; - } - if (enumerateBUG) { - for (key in obj) { - return ohasOwn.call(obj, key) - } - } - for (key in obj) { - } - return key === void 0 || ohasOwn.call(obj, key) -} -if (rnative.test(Object.getPrototypeOf)) { - avalon.isPlainObject = function (obj) { - // 简单的 typeof obj === "object"检测,会致使用isPlainObject(window)在opera下通不过 - return serialize.call(obj) === "[object Object]" && Object.getPrototypeOf(obj) === oproto - } -} -//与jQuery.extend方法,可用于浅拷贝,深拷贝 -avalon.mix = avalon.fn.mix = function () { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false - - // 如果第一个参数为布尔,判定是否深拷贝 - if (typeof target === "boolean") { - deep = target - target = arguments[1] || {} - i++ - } - - //确保接受方为一个复杂的数据类型 - if (typeof target !== "object" && !isFunction(target)) { - target = {} - } - - //如果只有一个参数,那么新成员添加于mix所在的对象上 - if (i === length) { - target = this - i-- - } - - for (; i < length; i++) { - //只处理非空参数 - if ((options = arguments[i]) != null) { - for (name in options) { - src = target[name] - try { - copy = options[name] //当options为VBS对象时报错 - } catch (e) { - continue - } - - // 防止环引用 - if (target === copy) { - continue - } - if (deep && copy && (avalon.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) { - - if (copyIsArray) { - copyIsArray = false - clone = src && Array.isArray(src) ? src : [] - - } else { - clone = src && avalon.isPlainObject(src) ? src : {} - } - - target[name] = avalon.mix(deep, clone, copy) - } else if (copy !== void 0) { - target[name] = copy - } - } - } - } - return target -} - -function _number(a, len) { //用于模拟slice, splice的效果 - a = Math.floor(a) || 0 - return a < 0 ? Math.max(len + a, 0) : Math.min(a, len); -} -avalon.mix({ - rword: rword, - subscribers: subscribers, - version: 1.45, - ui: {}, - log: log, - slice: W3C ? function (nodes, start, end) { - return aslice.call(nodes, start, end) - } : function (nodes, start, end) { - var ret = [] - var len = nodes.length - if (end === void 0) - end = len - if (typeof end === "number" && isFinite(end)) { - start = _number(start, len) - end = _number(end, len) - for (var i = start; i < end; ++i) { - ret[i - start] = nodes[i] - } - } - return ret - }, - noop: noop, - /*如果不用Error对象封装一下,str在控制台下可能会乱码*/ - error: function (str, e) { - throw (e || Error)(str) - }, - /*将一个以空格或逗号隔开的字符串或数组,转换成一个键值都为1的对象*/ - oneObject: oneObject, - /* avalon.range(10) - => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - avalon.range(1, 11) - => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] - avalon.range(0, 30, 5) - => [0, 5, 10, 15, 20, 25] - avalon.range(0, -10, -1) - => [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] - avalon.range(0) - => []*/ - range: function (start, end, step) { // 用于生成整数数组 - step || (step = 1) - if (end == null) { - end = start || 0 - start = 0 - } - var index = -1, - length = Math.max(0, Math.ceil((end - start) / step)), - result = new Array(length) - while (++index < length) { - result[index] = start - start += step - } - return result - }, - eventHooks: [], - /*绑定事件*/ - bind: function(el, type, fn, phase) { - var hooks = avalon.eventHooks - var hook = hooks[type] - if (typeof hook === "object") { - type = hook.type - if (hook.deel) { - fn = hook.deel(el, type, fn, phase) - } - } - var callback = W3C ? fn : function(e) { - fn.call(el, fixEvent(e)); - } - if (W3C) { - el.addEventListener(type, callback, !!phase) - } else { - el.attachEvent("on" + type, callback) - } - return callback - }, - /*卸载事件*/ - unbind: function(el, type, fn, phase) { - var hooks = avalon.eventHooks - var hook = hooks[type] - var callback = fn || noop - if (typeof hook === "object") { - type = hook.type - if (hook.deel) { - fn = hook.deel(el, type, fn, false) - } - } - if (W3C) { - el.removeEventListener(type, callback, !!phase) - } else { - el.detachEvent("on" + type, callback) - } - }, - /*读写删除元素节点的样式*/ - css: function (node, name, value) { - if (node instanceof avalon) { - node = node[0] - } - var prop = /[_-]/.test(name) ? camelize(name) : name, fn - name = avalon.cssName(prop) || prop - if (value === void 0 || typeof value === "boolean") { //获取样式 - fn = cssHooks[prop + ":get"] || cssHooks["@:get"] - if (name === "background") { - name = "backgroundColor" - } - var val = fn(node, name) - return value === true ? parseFloat(val) || 0 : val - } else if (value === "") { //请除样式 - node.style[name] = "" - } else { //设置样式 - if (value == null || value !== value) { - return - } - if (isFinite(value) && !avalon.cssNumber[prop]) { - value += "px" - } - fn = cssHooks[prop + ":set"] || cssHooks["@:set"] - fn(node, name, value) - } - }, - /*遍历数组与对象,回调的第一个参数为索引或键名,第二个或元素或键值*/ - each: function (obj, fn) { - if (obj) { //排除null, undefined - var i = 0 - if (isArrayLike(obj)) { - for (var n = obj.length; i < n; i++) { - if (fn(i, obj[i]) === false) - break - } - } else { - for (i in obj) { - if (obj.hasOwnProperty(i) && fn(i, obj[i]) === false) { - break - } - } - } - } - }, - //收集元素的data-{{prefix}}-*属性,并转换为对象 - getWidgetData: function (elem, prefix) { - var raw = avalon(elem).data() - var result = {} - for (var i in raw) { - if (i.indexOf(prefix) === 0) { - result[i.replace(prefix, "").replace(/\w/, function (a) { - return a.toLowerCase() - })] = raw[i] - } - } - return result - }, - Array: { - /*只有当前数组不存在此元素时只添加它*/ - ensure: function (target, item) { - if (target.indexOf(item) === -1) { - return target.push(item) - } - }, - /*移除数组中指定位置的元素,返回布尔表示成功与否*/ - removeAt: function (target, index) { - return !!target.splice(index, 1).length - }, - /*移除数组中第一个匹配传参的那个元素,返回布尔表示成功与否*/ - remove: function (target, item) { - var index = target.indexOf(item) - if (~index) - return avalon.Array.removeAt(target, index) - return false - } - } -}) - -var bindingHandlers = avalon.bindingHandlers = {} -var bindingExecutors = avalon.bindingExecutors = {} - -/*判定是否类数组,如节点集合,纯数组,arguments与拥有非负整数的length属性的纯JS对象*/ -function isArrayLike(obj) { - if (!obj) - return false - var n = obj.length - if (n === (n >>> 0)) { //检测length属性是否为非负整数 - var type = serialize.call(obj).slice(8, -1) - if (/(?:regexp|string|function|window|global)$/i.test(type)) - return false - if (type === "Array") - return true - try { - if ({}.propertyIsEnumerable.call(obj, "length") === false) { //如果是原生对象 - return /^\s?function/.test(obj.item || obj.callee) - } - return true - } catch (e) { //IE的NodeList直接抛错 - return !obj.window //IE6-8 window - } - } - return false -} - - -// https://github.com/rsms/js-lru -var Cache = new function() {// jshint ignore:line - function LRU(maxLength) { - this.size = 0 - this.limit = maxLength - this.head = this.tail = void 0 - this._keymap = {} - } - - var p = LRU.prototype - - p.put = function(key, value) { - var entry = { - key: key, - value: value - } - this._keymap[key] = entry - if (this.tail) { - this.tail.newer = entry - entry.older = this.tail - } else { - this.head = entry - } - this.tail = entry - if (this.size === this.limit) { - this.shift() - } else { - this.size++ - } - return value - } - - p.shift = function() { - var entry = this.head - if (entry) { - this.head = this.head.newer - this.head.older = - entry.newer = - entry.older = - this._keymap[entry.key] = void 0 - } - } - p.get = function(key) { - var entry = this._keymap[key] - if (entry === void 0) - return - if (entry === this.tail) { - return entry.value - } - // HEAD--------------TAIL - // <.older .newer> - // <--- add direction -- - // A B C E - if (entry.newer) { - if (entry === this.head) { - this.head = entry.newer - } - entry.newer.older = entry.older // C <-- E. - } - if (entry.older) { - entry.older.newer = entry.newer // C. --> E - } - entry.newer = void 0 // D --x - entry.older = this.tail // D. --> E - if (this.tail) { - this.tail.newer = entry // E. <-- D - } - this.tail = entry - return entry.value - } - return LRU -}// jshint ignore:line - -/********************************************************************* - * javascript 底层补丁 * - **********************************************************************/ -if (!"司徒正美".trim) { - var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g - String.prototype.trim = function () { - return this.replace(rtrim, "") - } -} -var hasDontEnumBug = !({ - 'toString': null -}).propertyIsEnumerable('toString'), - hasProtoEnumBug = (function () { - }).propertyIsEnumerable('prototype'), - dontEnums = [ - "toString", - "toLocaleString", - "valueOf", - "hasOwnProperty", - "isPrototypeOf", - "propertyIsEnumerable", - "constructor" - ], - dontEnumsLength = dontEnums.length; -if (!Object.keys) { - Object.keys = function (object) { //ecma262v5 15.2.3.14 - var theKeys = [] - var skipProto = hasProtoEnumBug && typeof object === "function" - if (typeof object === "string" || (object && object.callee)) { - for (var i = 0; i < object.length; ++i) { - theKeys.push(String(i)) - } - } else { - for (var name in object) { - if (!(skipProto && name === "prototype") && ohasOwn.call(object, name)) { - theKeys.push(String(name)) - } - } - } - - if (hasDontEnumBug) { - var ctor = object.constructor, - skipConstructor = ctor && ctor.prototype === object - for (var j = 0; j < dontEnumsLength; j++) { - var dontEnum = dontEnums[j] - if (!(skipConstructor && dontEnum === "constructor") && ohasOwn.call(object, dontEnum)) { - theKeys.push(dontEnum) - } - } - } - return theKeys - } -} -if (!Array.isArray) { - Array.isArray = function (a) { - return serialize.call(a) === "[object Array]" - } -} - -if (!noop.bind) { - Function.prototype.bind = function (scope) { - if (arguments.length < 2 && scope === void 0) - return this - var fn = this, - argv = arguments - return function () { - var args = [], - i - for (i = 1; i < argv.length; i++) - args.push(argv[i]) - for (i = 0; i < arguments.length; i++) - args.push(arguments[i]) - return fn.apply(scope, args) - } - } -} - -function iterator(vars, body, ret) { - var fun = 'for(var ' + vars + 'i=0,n = this.length; i < n; i++){' + body.replace('_', '((i in this) && fn.call(scope,this[i],i,this))') + '}' + ret - /* jshint ignore:start */ - return Function("fn,scope", fun) - /* jshint ignore:end */ -} -if (!rnative.test([].map)) { - avalon.mix(ap, { - //定位操作,返回数组中第一个等于给定参数的元素的索引值。 - indexOf: function (item, index) { - var n = this.length, - i = ~~index - if (i < 0) - i += n - for (; i < n; i++) - if (this[i] === item) - return i - return -1 - }, - //定位操作,同上,不过是从后遍历。 - lastIndexOf: function (item, index) { - var n = this.length, - i = index == null ? n - 1 : index - if (i < 0) - i = Math.max(0, n + i) - for (; i >= 0; i--) - if (this[i] === item) - return i - return -1 - }, - //迭代操作,将数组的元素挨个儿传入一个函数中执行。Prototype.js的对应名字为each。 - forEach: iterator("", '_', ""), - //迭代类 在数组中的每个项上运行一个函数,如果此函数的值为真,则此元素作为新数组的元素收集起来,并返回新数组 - filter: iterator('r=[],j=0,', 'if(_)r[j++]=this[i]', 'return r'), - //收集操作,将数组的元素挨个儿传入一个函数中执行,然后把它们的返回值组成一个新数组返回。Prototype.js的对应名字为collect。 - map: iterator('r=[],', 'r[i]=_', 'return r'), - //只要数组中有一个元素满足条件(放进给定函数返回true),那么它就返回true。Prototype.js的对应名字为any。 - some: iterator("", 'if(_)return true', 'return false'), - //只有数组中的元素都满足条件(放进给定函数返回true),它才返回true。Prototype.js的对应名字为all。 - every: iterator("", 'if(!_)return false', 'return true') - }) -} -/********************************************************************* - * DOM 底层补丁 * - **********************************************************************/ - -function fixContains(root, el) { - try { //IE6-8,游离于DOM树外的文本节点,访问parentNode有时会抛错 - while ((el = el.parentNode)) - if (el === root) - return true - return false - } catch (e) { - return false - } -} -avalon.contains = fixContains -//IE6-11的文档对象没有contains -if (!DOC.contains) { - DOC.contains = function (b) { - return fixContains(DOC, b) - } -} - -function outerHTML() { - return new XMLSerializer().serializeToString(this) -} - -if (window.SVGElement) { - //safari5+是把contains方法放在Element.prototype上而不是Node.prototype - if (!DOC.createTextNode("x").contains) { - Node.prototype.contains = function (arg) {//IE6-8没有Node对象 - return !!(this.compareDocumentPosition(arg) & 16) - } - } - var svgns = "http://www.w3.org/2000/svg" - var svg = DOC.createElementNS(svgns, "svg") - svg.innerHTML = '' - if (!rsvg.test(svg.firstChild)) { // #409 - function enumerateNode(node, targetNode) {// jshint ignore:line - if (node && node.childNodes) { - var nodes = node.childNodes - for (var i = 0, el; el = nodes[i++]; ) { - if (el.tagName) { - var svg = DOC.createElementNS(svgns, - el.tagName.toLowerCase()) - ap.forEach.call(el.attributes, function (attr) { - svg.setAttribute(attr.name, attr.value) //复制属性 - })// jshint ignore:line - // 递归处理子节点 - enumerateNode(el, svg) - targetNode.appendChild(svg) - } - } - } - } - Object.defineProperties(SVGElement.prototype, { - "outerHTML": {//IE9-11,firefox不支持SVG元素的innerHTML,outerHTML属性 - enumerable: true, - configurable: true, - get: outerHTML, - set: function (html) { - var tagName = this.tagName.toLowerCase(), - par = this.parentNode, - frag = avalon.parseHTML(html) - // 操作的svg,直接插入 - if (tagName === "svg") { - par.insertBefore(frag, this) - // svg节点的子节点类似 - } else { - var newFrag = DOC.createDocumentFragment() - enumerateNode(frag, newFrag) - par.insertBefore(newFrag, this) - } - par.removeChild(this) - } - }, - "innerHTML": { - enumerable: true, - configurable: true, - get: function () { - var s = this.outerHTML - var ropen = new RegExp("<" + this.nodeName + '\\b(?:(["\'])[^"]*?(\\1)|[^>])*>', "i") - var rclose = new RegExp("<\/" + this.nodeName + ">$", "i") - return s.replace(ropen, "").replace(rclose, "") - }, - set: function (html) { - if (avalon.clearHTML) { - avalon.clearHTML(this) - var frag = avalon.parseHTML(html) - enumerateNode(frag, this) - } - } - } - }) - } -} -if (!root.outerHTML && window.HTMLElement) { //firefox 到11时才有outerHTML - HTMLElement.prototype.__defineGetter__("outerHTML", outerHTML); -} - - -//============================= event binding ======================= -var rmouseEvent = /^(?:mouse|contextmenu|drag)|click/ -function fixEvent(event) { - var ret = {} - for (var i in event) { - ret[i] = event[i] - } - var target = ret.target = event.srcElement - if (event.type.indexOf("key") === 0) { - ret.which = event.charCode != null ? event.charCode : event.keyCode - } else if (rmouseEvent.test(event.type)) { - var doc = target.ownerDocument || DOC - var box = doc.compatMode === "BackCompat" ? doc.body : doc.documentElement - ret.pageX = event.clientX + (box.scrollLeft >> 0) - (box.clientLeft >> 0) - ret.pageY = event.clientY + (box.scrollTop >> 0) - (box.clientTop >> 0) - ret.wheelDeltaY = ret.wheelDelta - ret.wheelDeltaX = 0 - } - ret.timeStamp = new Date() - 0 - ret.originalEvent = event - ret.preventDefault = function () { //阻止默认行为 - event.returnValue = false - } - ret.stopPropagation = function () { //阻止事件在DOM树中的传播 - event.cancelBubble = true - } - return ret -} - -var eventHooks = avalon.eventHooks -//针对firefox, chrome修正mouseenter, mouseleave -if (!("onmouseenter" in root)) { - avalon.each({ - mouseenter: "mouseover", - mouseleave: "mouseout" - }, function (origType, fixType) { - eventHooks[origType] = { - type: fixType, - deel: function (elem, _, fn) { - return function (e) { - var t = e.relatedTarget - if (!t || (t !== elem && !(elem.compareDocumentPosition(t) & 16))) { - delete e.type - e.type = origType - return fn.call(elem, e) - } - } - } - } - }) -} -//针对IE9+, w3c修正animationend -avalon.each({ - AnimationEvent: "animationend", - WebKitAnimationEvent: "webkitAnimationEnd" -}, function (construct, fixType) { - if (window[construct] && !eventHooks.animationend) { - eventHooks.animationend = { - type: fixType - } - } -}) -//针对IE6-8修正input -if (!("oninput" in DOC.createElement("input"))) { - eventHooks.input = { - type: "propertychange", - deel: function (elem, _, fn) { - return function (e) { - if (e.propertyName === "value") { - e.type = "input" - return fn.call(elem, e) - } - } - } - } -} -if (DOC.onmousewheel === void 0) { - /* IE6-11 chrome mousewheel wheelDetla 下 -120 上 120 - firefox DOMMouseScroll detail 下3 上-3 - firefox wheel detlaY 下3 上-3 - IE9-11 wheel deltaY 下40 上-40 - chrome wheel deltaY 下100 上-100 */ - var fixWheelType = DOC.onwheel !== void 0 ? "wheel" : "DOMMouseScroll" - var fixWheelDelta = fixWheelType === "wheel" ? "deltaY" : "detail" - eventHooks.mousewheel = { - type: fixWheelType, - deel: function (elem, _, fn) { - return function (e) { - e.wheelDeltaY = e.wheelDelta = e[fixWheelDelta] > 0 ? -120 : 120 - e.wheelDeltaX = 0 - if (Object.defineProperty) { - Object.defineProperty(e, "type", { - value: "mousewheel" - }) - } - fn.call(elem, e) - } - } - } -} - - - -/********************************************************************* - * 配置系统 * - **********************************************************************/ - -function kernel(settings) { - for (var p in settings) { - if (!ohasOwn.call(settings, p)) - continue - var val = settings[p] - if (typeof kernel.plugins[p] === "function") { - kernel.plugins[p](val) - } else if (typeof kernel[p] === "object") { - avalon.mix(kernel[p], val) - } else { - kernel[p] = val - } - } - return this -} -var openTag, closeTag, rexpr, rexprg, rbind, rregexp = /[-.*+?^${}()|[\]\/\\]/g - -function escapeRegExp(target) { - //http://stevenlevithan.com/regex/xregexp/ - //将字符串安全格式化为正则表达式的源码 - return (target + "").replace(rregexp, "\\$&") -} - -var plugins = { - loader: function (builtin) { - var flag = innerRequire && builtin - window.require = flag ? innerRequire : otherRequire - window.define = flag ? innerRequire.define : otherDefine - }, - interpolate: function (array) { - openTag = array[0] - closeTag = array[1] - if (openTag === closeTag) { - throw new SyntaxError("openTag!==closeTag") - var test = openTag + "test" + closeTag - cinerator.innerHTML = test - if (cinerator.innerHTML !== test && cinerator.innerHTML.indexOf("<") > -1) { - throw new SyntaxError("此定界符不合法") - } - cinerator.innerHTML = "" - } - var o = escapeRegExp(openTag), - c = escapeRegExp(closeTag) - rexpr = new RegExp(o + "(.*?)" + c) - rexprg = new RegExp(o + "(.*?)" + c, "g") - rbind = new RegExp(o + ".*?" + c + "|\\sms-") - } -} - -kernel.debug = true -kernel.plugins = plugins -kernel.plugins['interpolate'](["{{", "}}"]) -kernel.paths = {} -kernel.shim = {} -kernel.maxRepeatSize = 100 -avalon.config = kernel -var ravalon = /(\w+)\[(avalonctrl)="(\S+)"\]/ -var findNodes = DOC.querySelectorAll ? function(str) { - return DOC.querySelectorAll(str) -} : function(str) { - var match = str.match(ravalon) - var all = DOC.getElementsByTagName(match[1]) - var nodes = [] - for (var i = 0, el; el = all[i++]; ) { - if (el.getAttribute(match[2]) === match[3]) { - nodes.push(el) - } - } - return nodes -} -/********************************************************************* - * 事件总线 * - **********************************************************************/ -var EventBus = { - $watch: function (type, callback) { - if (typeof callback === "function") { - var callbacks = this.$events[type] - if (callbacks) { - callbacks.push(callback) - } else { - this.$events[type] = [callback] - } - } else { //重新开始监听此VM的第一重简单属性的变动 - this.$events = this.$watch.backup - } - return this - }, - $unwatch: function (type, callback) { - var n = arguments.length - if (n === 0) { //让此VM的所有$watch回调无效化 - this.$watch.backup = this.$events - this.$events = {} - } else if (n === 1) { - this.$events[type] = [] - } else { - var callbacks = this.$events[type] || [] - var i = callbacks.length - while (~--i < 0) { - if (callbacks[i] === callback) { - return callbacks.splice(i, 1) - } - } - } - return this - }, - $fire: function (type) { - var special, i, v, callback - if (/^(\w+)!(\S+)$/.test(type)) { - special = RegExp.$1 - type = RegExp.$2 - } - var events = this.$events - if (!events) - return - var args = aslice.call(arguments, 1) - var detail = [type].concat(args) - if (special === "all") { - for (i in avalon.vmodels) { - v = avalon.vmodels[i] - if (v !== this) { - v.$fire.apply(v, detail) - } - } - } else if (special === "up" || special === "down") { - var elements = events.expr ? findNodes(events.expr) : [] - if (elements.length === 0) - return - for (i in avalon.vmodels) { - v = avalon.vmodels[i] - if (v !== this) { - if (v.$events.expr) { - var eventNodes = findNodes(v.$events.expr) - if (eventNodes.length === 0) { - continue - } - //循环两个vmodel中的节点,查找匹配(向上匹配或者向下匹配)的节点并设置标识 - /* jshint ignore:start */ - ap.forEach.call(eventNodes, function (node) { - ap.forEach.call(elements, function (element) { - var ok = special === "down" ? element.contains(node) : //向下捕获 - node.contains(element) //向上冒泡 - if (ok) { - node._avalon = v //符合条件的加一个标识 - } - }); - }) - /* jshint ignore:end */ - } - } - } - var nodes = DOC.getElementsByTagName("*") //实现节点排序 - var alls = [] - ap.forEach.call(nodes, function (el) { - if (el._avalon) { - alls.push(el._avalon) - el._avalon = "" - el.removeAttribute("_avalon") - } - }) - if (special === "up") { - alls.reverse() - } - for (i = 0; callback = alls[i++]; ) { - if (callback.$fire.apply(callback, detail) === false) { - break - } - } - } else { - var callbacks = events[type] || [] - var all = events.$all || [] - for (i = 0; callback = callbacks[i++]; ) { - if (isFunction(callback)) - callback.apply(this, args) - } - for (i = 0; callback = all[i++]; ) { - if (isFunction(callback)) - callback.apply(this, arguments) - } - } - } -} - -/********************************************************************* - * modelFactory * - **********************************************************************/ -//avalon最核心的方法的两个方法之一(另一个是avalon.scan),返回一个ViewModel(VM) -var VMODELS = avalon.vmodels = {} //所有vmodel都储存在这里 -avalon.define = function (id, factory) { - var $id = id.$id || id - if (!$id) { - log("warning: vm必须指定$id") - } - if (VMODELS[$id]) { - log("warning: " + $id + " 已经存在于avalon.vmodels中") - } - if (typeof id === "object") { - var model = modelFactory(id) - } else { - var scope = { - $watch: noop - } - factory(scope) //得到所有定义 - - model = modelFactory(scope) //偷天换日,将scope换为model - stopRepeatAssign = true - factory(model) - stopRepeatAssign = false - } - model.$id = $id - return VMODELS[$id] = model -} - -//一些不需要被监听的属性 -var $$skipArray = String("$id,$watch,$unwatch,$fire,$events,$model,$skipArray,$proxy,$reinitialize,$propertyNames").match(rword) -var defineProperty = Object.defineProperty -var canHideOwn = true -//如果浏览器不支持ecma262v5的Object.defineProperties或者存在BUG,比如IE8 -//标准浏览器使用__defineGetter__, __defineSetter__实现 -try { - defineProperty({}, "_", { - value: "x" - }) - var defineProperties = Object.defineProperties -} catch (e) { - canHideOwn = false -} - -function modelFactory(source, $special, $model) { - if (Array.isArray(source)) { - var arr = source.concat() - source.length = 0 - var collection = arrayFactory(source) - collection.pushArray(arr) - return collection - } - //0 null undefined || Node || VModel(fix IE6-8 createWithProxy $val: val引发的BUG) - if (!source || source.nodeType > 0 || (source.$id && source.$events)) { - return source - } - var $skipArray = Array.isArray(source.$skipArray) ? source.$skipArray : [] - $skipArray.$special = $special || {} //强制要监听的属性 - var $vmodel = {} //要返回的对象, 它在IE6-8下可能被偷龙转凤 - $model = $model || {} //vmodels.$model属性 - var $events = {} //vmodel.$events属性 - var accessors = {} //监控属性 - var computed = [] - $$skipArray.forEach(function (name) { - delete source[name] - }) - var names = Object.keys(source) - /* jshint ignore:start */ - names.forEach(function (name, accessor) { - var val = source[name] - $model[name] = val - if (isObservable(name, val, $skipArray)) { - //总共产生三种accessor - $events[name] = [] - var valueType = avalon.type(val) - //总共产生三种accessor - if (valueType === "object" && isFunction(val.get) && Object.keys(val).length <= 2) { - accessor = makeComputedAccessor(name, val) - computed.push(accessor) - } else if (rcomplexType.test(valueType)) { - accessor = makeComplexAccessor(name, val, valueType, $events[name]) - } else { - accessor = makeSimpleAccessor(name, val) - } - accessors[name] = accessor - } - }) - /* jshint ignore:end */ - - $vmodel = defineProperties($vmodel, descriptorFactory(accessors), source) //生成一个空的ViewModel - for (var i = 0; i < names.length; i++) { - var name = names[i] - if (!accessors[name]) { - $vmodel[name] = source[name] - } - } - //添加$id, $model, $events, $watch, $unwatch, $fire - $vmodel.$propertyNames = names.join("­") - $vmodel.$id = generateID() - $vmodel.$model = $model - $vmodel.$events = $events - for (i in EventBus) { - var fn = EventBus[i] - if (!W3C) { //在IE6-8下,VB对象的方法里的this并不指向自身,需要用bind处理一下 - fn = fn.bind($vmodel) - } - $vmodel[i] = fn - } - if (canHideOwn) { - Object.defineProperty($vmodel, "hasOwnProperty", hasOwnDescriptor) - } else { - /* jshint ignore:start */ - $vmodel.hasOwnProperty = function (name) { - return name in $vmodel.$model - } - /* jshint ignore:end */ - } - - $vmodel.$reinitialize = function () { - computed.forEach(function (accessor) { - delete accessor._value - delete accessor.oldArgs - accessor.digest = function () { - accessor.call($vmodel) - } - dependencyDetection.begin({ - callback: function (vm, dependency) {//dependency为一个accessor - var name = dependency._name - if (dependency !== accessor) { - var list = vm.$events[name] - injectDependency(list, accessor.digest) - } - } - }) - try { - accessor.get.call($vmodel) - } finally { - dependencyDetection.end() - } - }) - } - $vmodel.$reinitialize() - return $vmodel -} - -var hasOwnDescriptor = { - value: function (name) { - return name in this.$model - }, - writable: false, - enumerable: false, - configurable: true -} -//创建一个简单访问器 -function makeSimpleAccessor(name, value) { - function accessor(value) { - var oldValue = accessor._value - if (arguments.length > 0) { - if (!stopRepeatAssign && !isEqual(value, oldValue)) { - accessor.updateValue(this, value) - accessor.notify(this, value, oldValue) - } - return this - } else { - dependencyDetection.collectDependency(this, accessor) - return oldValue - } - } - accessorFactory(accessor, name) - accessor._value = value - return accessor; -} - -//创建一个计算访问器 -function makeComputedAccessor(name, options) { - function accessor(value) {//计算属性 - var oldValue = accessor._value - var init = ("_value" in accessor) - if (arguments.length > 0) { - if (stopRepeatAssign) { - return this - } - if (typeof accessor.set === "function") { - if (accessor.oldArgs !== value) { - accessor.oldArgs = value - var $events = this.$events - var lock = $events[name] - $events[name] = [] //清空回调,防止内部冒泡而触发多次$fire - accessor.set.call(this, value) - $events[name] = lock - value = accessor.get.call(this) - if (value !== oldValue) { - accessor.updateValue(this, value) - accessor.notify(this, value, oldValue) //触发$watch回调 - } - } - } - return this - } else { - //将依赖于自己的高层访问器或视图刷新函数(以绑定对象形式)放到自己的订阅数组中 - //将自己注入到低层访问器的订阅数组中 - value = accessor.get.call(this) - accessor.updateValue(this, value) - if (init && oldValue !== value) { - accessor.notify(this, value, oldValue) //触发$watch回调 - } - return value - } - } - accessor.set = options.set - accessor.get = options.get - accessorFactory(accessor, name) - return accessor -} - -//创建一个复杂访问器 -function makeComplexAccessor(name, initValue, valueType, list) { - function accessor(value) { - var oldValue = accessor._value - - var son = accessor._vmodel - if (arguments.length > 0) { - if (stopRepeatAssign) { - return this - } - if (valueType === "array") { - var a = son, b = value, - an = a.length, - bn = b.length - a.$lock = true - if (an > bn) { - a.splice(bn, an - bn) - } else if (bn > an) { - a.push.apply(a, b.slice(an)) - } - var n = Math.min(an, bn) - for (var i = 0; i < n; i++) { - a.set(i, b[i]) - } - delete a.$lock - a._fire("set") - } else if (valueType === "object") { - var newPropertyNames = Object.keys(value).join("­") - if (son.$propertyNames === newPropertyNames) { - for (i in value) { - son[i] = value[i] - } - } else { - var sson = accessor._vmodel = modelFactory(value) - var sevent = sson.$events - var oevent = son.$events - for (var i in sevent) { - var arr = sevent[i] - if (Array.isArray(arr)) { - arr = arr.concat(oevent[i]) - } - } - sevent[subscribers] = oevent[subscribers] - sson.$proxy = son.$proxy - son = sson - } - } - accessor.updateValue(this, son.$model) - accessor.notify(this, this._value, oldValue) - return this - } else { - dependencyDetection.collectDependency(this, accessor) - return son - } - } - accessorFactory(accessor, name) - var son = accessor._vmodel = modelFactory(initValue) - son.$events[subscribers] = list - return accessor -} - -function globalUpdateValue(vmodel, value) { - vmodel.$model[this._name] = this._value = value -} - -function globalNotify(vmodel, value, oldValue) { - var name = this._name - var array = vmodel.$events[name] //刷新值 - if (array) { - fireDependencies(array) //同步视图 - EventBus.$fire.call(vmodel, name, value, oldValue) //触发$watch回调 - } -} - -function accessorFactory(accessor, name) { - accessor._name = name - //同时更新_value与model - accessor.updateValue = globalUpdateValue - accessor.notify = globalNotify -} - -//比较两个值是否相等 -var isEqual = Object.is || function (v1, v2) { - if (v1 === 0 && v2 === 0) { - return 1 / v1 === 1 / v2 - } else if (v1 !== v1) { - return v2 !== v2 - } else { - return v1 === v2 - } -} - -function isObservable(name, value, $skipArray) { - if (isFunction(value) || value && value.nodeType) { - return false - } - if ($skipArray.indexOf(name) !== -1) { - return false - } - var $special = $skipArray.$special - if (name && name.charAt(0) === "$" && !$special[name]) { - return false - } - return true -} - -var descriptorFactory = W3C ? function (obj) { - var descriptors = {} - for (var i in obj) { - descriptors[i] = { - get: obj[i], - set: obj[i], - enumerable: true, - configurable: true - } - } - return descriptors -} : function (a) { - return a -} - -//===================修复浏览器对Object.defineProperties的支持================= -if (!canHideOwn) { - if ("__defineGetter__" in avalon) { - defineProperty = function (obj, prop, desc) { - if ('value' in desc) { - obj[prop] = desc.value - } - if ("get" in desc) { - obj.__defineGetter__(prop, desc.get) - } - if ('set' in desc) { - obj.__defineSetter__(prop, desc.set) - } - return obj - } - defineProperties = function (obj, descs) { - for (var prop in descs) { - if (descs.hasOwnProperty(prop)) { - defineProperty(obj, prop, descs[prop]) - } - } - return obj - } - } - if (IEVersion) { - var VBClassPool = {} - window.execScript([// jshint ignore:line - "Function parseVB(code)", - "\tExecuteGlobal(code)", - "End Function" //转换一段文本为VB代码 - ].join("\n"), "VBScript") - function VBMediator(instance, accessors, name, value) {// jshint ignore:line - var accessor = accessors[name] - if (arguments.length === 4) { - accessor.call(instance, value) - } else { - return accessor.call(instance) - } - } - defineProperties = function (name, accessors, properties) { - // jshint ignore:line - var buffer = [] - buffer.push( - "\r\n\tPrivate [__data__], [__proxy__]", - "\tPublic Default Function [__const__](d, p)", - "\t\tSet [__data__] = d: set [__proxy__] = p", - "\t\tSet [__const__] = Me", //链式调用 - "\tEnd Function") - //添加普通属性,因为VBScript对象不能像JS那样随意增删属性,必须在这里预先定义好 - for (name in properties) { - if (!accessors.hasOwnProperty(name)) { - buffer.push("\tPublic [" + name + "]") - } - } - $$skipArray.forEach(function (name) { - if (!accessors.hasOwnProperty(name)) { - buffer.push("\tPublic [" + name + "]") - } - }) - buffer.push("\tPublic [" + 'hasOwnProperty' + "]") - //添加访问器属性 - for (name in accessors) { - buffer.push( - //由于不知对方会传入什么,因此set, let都用上 - "\tPublic Property Let [" + name + "](val" + expose + ")", //setter - "\t\tCall [__proxy__](Me,[__data__], \"" + name + "\", val" + expose + ")", - "\tEnd Property", - "\tPublic Property Set [" + name + "](val" + expose + ")", //setter - "\t\tCall [__proxy__](Me,[__data__], \"" + name + "\", val" + expose + ")", - "\tEnd Property", - "\tPublic Property Get [" + name + "]", //getter - "\tOn Error Resume Next", //必须优先使用set语句,否则它会误将数组当字符串返回 - "\t\tSet[" + name + "] = [__proxy__](Me,[__data__],\"" + name + "\")", - "\tIf Err.Number <> 0 Then", - "\t\t[" + name + "] = [__proxy__](Me,[__data__],\"" + name + "\")", - "\tEnd If", - "\tOn Error Goto 0", - "\tEnd Property") - - } - - buffer.push("End Class") - var body = buffer.join("\r\n") - var className =VBClassPool[body] - if (!className) { - className = generateID("VBClass") - window.parseVB("Class " + className + body) - window.parseVB([ - "Function " + className + "Factory(a, b)", //创建实例并传入两个关键的参数 - "\tDim o", - "\tSet o = (New " + className + ")(a, b)", - "\tSet " + className + "Factory = o", - "End Function" - ].join("\r\n")) - VBClassPool[body] = className - } - var ret = window[className + "Factory"](accessors, VBMediator) //得到其产品 - return ret //得到其产品 - } - } -} - -/********************************************************************* - * 监控数组(与ms-each, ms-repeat配合使用) * - **********************************************************************/ - -function arrayFactory(model) { - var array = [] - array.$id = generateID() - array.$model = model //数据模型 - array.$events = {} - array.$events[subscribers] = [] - array._ = modelFactory({ - length: model.length - }) - array._.$watch("length", function (a, b) { - array.$fire("length", a, b) - }) - for (var i in EventBus) { - array[i] = EventBus[i] - } - avalon.mix(array, arrayPrototype) - return array -} - -function mutateArray(method, pos, n, index, method2, pos2, n2) { - var oldLen = this.length, loop = 2 - while (--loop) { - switch (method) { - case "add": - /* jshint ignore:start */ - var array = this.$model.slice(pos, pos + n).map(function (el) { - if (rcomplexType.test(avalon.type(el))) { - return el.$id ? el : modelFactory(el, 0, el) - } else { - return el - } - }) - /* jshint ignore:end */ - _splice.apply(this, [pos, 0].concat(array)) - this._fire("add", pos, n) - break - case "del": - var ret = this._splice(pos, n) - this._fire("del", pos, n) - break - } - if (method2) { - method = method2 - pos = pos2 - n = n2 - loop = 2 - method2 = 0 - } - } - this._fire("index", index) - if (this.length !== oldLen) { - this._.length = this.length - } - return ret -} - -var _splice = ap.splice -var arrayPrototype = { - _splice: _splice, - _fire: function (method, a, b) { - fireDependencies(this.$events[subscribers], method, a, b) - }, - size: function () { //取得数组长度,这个函数可以同步视图,length不能 - return this._.length - }, - pushArray: function (array) { - var m = array.length, n = this.length - if (m) { - ap.push.apply(this.$model, array) - mutateArray.call(this, "add", n, m, Math.max(0, n - 1)) - } - return m + n - }, - push: function () { - //http://jsperf.com/closure-with-arguments - var array = [] - var i, n = arguments.length - for (i = 0; i < n; i++) { - array[i] = arguments[i] - } - return this.pushArray(array) - }, - unshift: function () { - var m = arguments.length, n = this.length - if (m) { - ap.unshift.apply(this.$model, arguments) - mutateArray.call(this, "add", 0, m, 0) - } - return m + n //IE67的unshift不会返回长度 - }, - shift: function () { - if (this.length) { - var el = this.$model.shift() - mutateArray.call(this, "del", 0, 1, 0) - return el //返回被移除的元素 - } - }, - pop: function () { - var n = this.length - if (n) { - var el = this.$model.pop() - mutateArray.call(this, "del", n - 1, 1, Math.max(0, n - 2)) - return el //返回被移除的元素 - } - }, - splice: function (start) { - var m = arguments.length, args = [], change - var removed = _splice.apply(this.$model, arguments) - if (removed.length) { //如果用户删掉了元素 - args.push("del", start, removed.length, 0) - change = true - } - if (m > 2) { //如果用户添加了元素 - if (change) { - args.splice(3, 1, 0, "add", start, m - 2) - } else { - args.push("add", start, m - 2, 0) - } - change = true - } - if (change) { //返回被移除的元素 - return mutateArray.apply(this, args) - } else { - return [] - } - }, - contains: function (el) { //判定是否包含 - return this.indexOf(el) !== -1 - }, - remove: function (el) { //移除第一个等于给定值的元素 - return this.removeAt(this.indexOf(el)) - }, - removeAt: function (index) { //移除指定索引上的元素 - if (index >= 0) { - this.$model.splice(index, 1) - return mutateArray.call(this, "del", index, 1, 0) - } - return [] - }, - clear: function () { - this.$model.length = this.length = this._.length = 0 //清空数组 - this._fire("clear", 0) - return this - }, - removeAll: function (all) { //移除N个元素 - if (Array.isArray(all)) { - for (var i = this.length - 1; i >= 0; i--) { - if (all.indexOf(this[i]) !== -1) { - this.removeAt(i) - } - } - } else if (typeof all === "function") { - for ( i = this.length - 1; i >= 0; i--) { - var el = this[i] - if (all(el, i)) { - this.removeAt(i) - } - } - } else { - this.clear() - } - }, - ensure: function (el) { - if (!this.contains(el)) { //只有不存在才push - this.push(el) - } - return this - }, - set: function (index, val) { - if (index >= 0) { - var valueType = avalon.type(val) - if (val && val.$model) { - val = val.$model - } - var target = this[index] - if (valueType === "object") { - for (var i in val) { - if (target.hasOwnProperty(i)) { - target[i] = val[i] - } - } - } else if (valueType === "array") { - target.clear().push.apply(target, val) - } else if (target !== val) { - this[index] = val - this.$model[index] = val - this._fire("set", index, val) - } - } - return this - } -} -//相当于原来bindingExecutors.repeat 的index分支 -function resetIndex(array, pos) { - var last = array.length - 1 - for (var el; el = array[pos]; pos++) { - el.$index = pos - el.$first = pos === 0 - el.$last = pos === last - } -} - -function sortByIndex(array, indexes) { - var map = {}; - for (var i = 0, n = indexes.length; i < n; i++) { - map[i] = array[i] // preserve - var j = indexes[i] - if (j in map) { - array[i] = map[j] - delete map[j] - } else { - array[i] = array[j] - } - } -} - -"sort,reverse".replace(rword, function (method) { - arrayPrototype[method] = function () { - var newArray = this.$model//这是要排序的新数组 - var oldArray = newArray.concat() //保持原来状态的旧数组 - var mask = Math.random() - var indexes = [] - var hasSort - ap[method].apply(newArray, arguments) //排序 - for (var i = 0, n = oldArray.length; i < n; i++) { - var neo = newArray[i] - var old = oldArray[i] - if (isEqual(neo, old)) { - indexes.push(i) - } else { - var index = oldArray.indexOf(neo) - indexes.push(index)//得到新数组的每个元素在旧数组对应的位置 - oldArray[index] = mask //屏蔽已经找过的元素 - hasSort = true - } - } - if (hasSort) { - sortByIndex(this, indexes) - // sortByIndex(this.$proxy, indexes) - this._fire("move", indexes) - this._fire("index", 0) - } - return this - } -}) - - -/********************************************************************* - * 依赖调度系统 * - **********************************************************************/ -//检测两个对象间的依赖关系 -var dependencyDetection = (function () { - var outerFrames = [] - var currentFrame - return { - begin: function (accessorObject) { - //accessorObject为一个拥有callback的对象 - outerFrames.push(currentFrame) - currentFrame = accessorObject - }, - end: function () { - currentFrame = outerFrames.pop() - }, - collectDependency: function (vmodel, accessor) { - if (currentFrame) { - //被dependencyDetection.begin调用 - currentFrame.callback(vmodel, accessor); - } - } - }; -})() -//将绑定对象注入到其依赖项的订阅数组中 -var ronduplex = /^(duplex|on)$/ -avalon.injectBinding = function (data) { - var valueFn = data.evaluator - if (valueFn) { //如果是求值函数 - dependencyDetection.begin({ - callback: function (vmodel, dependency) { - injectDependency(vmodel.$events[dependency._name], data) - } - }) - try { - var value = ronduplex.test(data.type) ? data : valueFn.apply(0, data.args) - if(value === void 0){ - delete data.evaluator - } - data.handler(value, data.element, data) - } catch (e) { - //log("warning:exception throwed in [avalon.injectBinding] " + e) - delete data.evaluator - var node = data.element - if (node.nodeType === 3) { - var parent = node.parentNode - if (kernel.commentInterpolate) { - parent.replaceChild(DOC.createComment(data.value), node) - } else { - node.data = openTag + (data.oneTime ? "::" : "") + data.value + closeTag - } - } - } finally { - dependencyDetection.end() - } - } -} - -//将依赖项(比它高层的访问器或构建视图刷新函数的绑定对象)注入到订阅者数组 -function injectDependency(list, data) { - if (data.oneTime) - return - if (list && avalon.Array.ensure(list, data) && data.element) { - injectDisposeQueue(data, list) - } -} - -//通知依赖于这个访问器的订阅者更新自身 -function fireDependencies(list) { - if (list && list.length) { - if (new Date() - beginTime > 444 && typeof list[0] === "object") { - rejectDisposeQueue() - } - var args = aslice.call(arguments, 1) - for (var i = list.length, fn; fn = list[--i]; ) { - var el = fn.element - if (el && el.parentNode) { - try { - var valueFn = fn.evaluator - if (fn.$repeat) { - fn.handler.apply(fn, args) //处理监控数组的方法 - }else if("$repeat" in fn || !valueFn ){//如果没有eval,先eval - bindingHandlers[fn.type](fn, fn.vmodels) - } else if (fn.type !== "on") { //事件绑定只能由用户触发,不能由程序触发 - var value = valueFn.apply(0, fn.args || []) - fn.handler(value, el, fn) - } - } catch (e) { } - } - } - } -} -/********************************************************************* - * 定时GC回收机制 * - **********************************************************************/ -var disposeCount = 0 -var disposeQueue = avalon.$$subscribers = [] -var beginTime = new Date() -var oldInfo = {} -var uuid2Node = {} -function getUid(obj, makeID) { //IE9+,标准浏览器 - if (!obj.uuid && !makeID) { - obj.uuid = ++disposeCount - uuid2Node[obj.uuid] = obj - } - return obj.uuid -} -function getNode(uuid) { - return uuid2Node[uuid] -} -//添加到回收列队中 -function injectDisposeQueue(data, list) { - var elem = data.element - if (!data.uuid) { - if (elem.nodeType !== 1) { - data.uuid = data.type + (data.pos || 0) + "-" + getUid(elem.parentNode) - } else { - data.uuid = data.name + "-" + getUid(elem) - } - } - var lists = data.lists || (data.lists = []) - avalon.Array.ensure(lists, list) - list.$uuid = list.$uuid || generateID() - if (!disposeQueue[data.uuid]) { - disposeQueue[data.uuid] = 1 - disposeQueue.push(data) - } -} - -function rejectDisposeQueue(data) { - if (avalon.optimize) - return - var i = disposeQueue.length - var n = i - var allTypes = [] - var iffishTypes = {} - var newInfo = {} - //对页面上所有绑定对象进行分门别类, 只检测个数发生变化的类型 - while (data = disposeQueue[--i]) { - var type = data.type - if (newInfo[type]) { - newInfo[type]++ - } else { - newInfo[type] = 1 - allTypes.push(type) - } - } - var diff = false - allTypes.forEach(function (type) { - if (oldInfo[type] !== newInfo[type]) { - iffishTypes[type] = 1 - diff = true - } - }) - i = n - if (diff) { - while (data = disposeQueue[--i]) { - if (!data.element) - continue - if (iffishTypes[data.type] && shouldDispose(data.element)) { //如果它没有在DOM树 - disposeQueue.splice(i, 1) - delete disposeQueue[data.uuid] - delete uuid2Node[data.element.uuid] - var lists = data.lists - for (var k = 0, list; list = lists[k++]; ) { - avalon.Array.remove(lists, list) - avalon.Array.remove(list, data) - } - disposeData(data) - } - } - } - oldInfo = newInfo - beginTime = new Date() -} - -function disposeData(data) { - data.element = null - data.rollback && data.rollback() - for (var key in data) { - data[key] = null - } -} - -function shouldDispose(el) { - try {//IE下,如果文本节点脱离DOM树,访问parentNode会报错 - if (!el.parentNode) { - return true - } - } catch (e) { - return true - } - - return el.msRetain ? 0 : (el.nodeType === 1 ? !root.contains(el) : !avalon.contains(root, el)) -} - -/************************************************************************ - * HTML处理(parseHTML, innerHTML, clearHTML) * - ************************************************************************/ -// We have to close these tags to support XHTML -var tagHooks = { - area: [1, "", ""], - param: [1, "", ""], - col: [2, "", "
    "], - legend: [1, "
    ", "
    "], - option: [1, ""], - thead: [1, "", "
    "], - tr: [2, "", "
    "], - td: [3, "", "
    "], - g: [1, '', ''], - //IE6-8在用innerHTML生成节点时,不能直接创建no-scope元素与HTML5的新标签 - _default: W3C ? [0, "", ""] : [1, "X
    ", "
    "] //div可以不用闭合 -} -tagHooks.th = tagHooks.td -tagHooks.optgroup = tagHooks.option -tagHooks.tbody = tagHooks.tfoot = tagHooks.colgroup = tagHooks.caption = tagHooks.thead -String("circle,defs,ellipse,image,line,path,polygon,polyline,rect,symbol,text,use").replace(rword, function (tag) { - tagHooks[tag] = tagHooks.g //处理SVG -}) -var rtagName = /<([\w:]+)/ //取得其tagName -var rxhtml = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig -var rcreate = W3C ? /[^\d\D]/ : /(<(?:script|link|style|meta|noscript))/ig -var scriptTypes = oneObject(["", "text/javascript", "text/ecmascript", "application/ecmascript", "application/javascript"]) -var rnest = /<(?:tb|td|tf|th|tr|col|opt|leg|cap|area)/ //需要处理套嵌关系的标签 -var script = DOC.createElement("script") -var rhtml = /<|&#?\w+;/ -avalon.parseHTML = function (html) { - var fragment = avalonFragment.cloneNode(false) - if (typeof html !== "string") { - return fragment - } - if (!rhtml.test(html)) { - fragment.appendChild(DOC.createTextNode(html)) - return fragment - } - html = html.replace(rxhtml, "<$1>").trim() - var tag = (rtagName.exec(html) || ["", ""])[1].toLowerCase(), - //取得其标签名 - wrap = tagHooks[tag] || tagHooks._default, - wrapper = cinerator, - firstChild, neo - if (!W3C) { //fix IE - html = html.replace(rcreate, "
    $1") //在link style script等标签之前添加一个补丁 - } - wrapper.innerHTML = wrap[1] + html + wrap[2] - var els = wrapper.getElementsByTagName("script") - if (els.length) { //使用innerHTML生成的script节点不会发出请求与执行text属性 - for (var i = 0, el; el = els[i++]; ) { - if (scriptTypes[el.type]) { - //以偷龙转凤方式恢复执行脚本功能 - neo = script.cloneNode(false) //FF不能省略参数 - ap.forEach.call(el.attributes, function (attr) { - if (attr && attr.specified) { - neo[attr.name] = attr.value //复制其属性 - neo.setAttribute(attr.name, attr.value) - } - }) // jshint ignore:line - neo.text = el.text - el.parentNode.replaceChild(neo, el) //替换节点 - } - } - } - if (!W3C) { //fix IE - var target = wrap[1] === "X
    " ? wrapper.lastChild.firstChild : wrapper.lastChild - if (target && target.tagName === "TABLE" && tag !== "tbody") { - //IE6-7处理 --> , - // --> , - // -->
    - for (els = target.childNodes, i = 0; el = els[i++]; ) { - if (el.tagName === "TBODY" && !el.innerHTML) { - target.removeChild(el) - break - } - } - } - els = wrapper.getElementsByTagName("br") - var n = els.length - while (el = els[--n]) { - if (el.className === "msNoScope") { - el.parentNode.removeChild(el) - } - } - for (els = wrapper.all, i = 0; el = els[i++]; ) { //fix VML - if (isVML(el)) { - fixVML(el) - } - } - } - //移除我们为了符合套嵌关系而添加的标签 - for (i = wrap[0]; i--; wrapper = wrapper.lastChild) { - } - while (firstChild = wrapper.firstChild) { // 将wrapper上的节点转移到文档碎片上! - fragment.appendChild(firstChild) - } - return fragment -} - -function isVML(src) { - var nodeName = src.nodeName - return nodeName.toLowerCase() === nodeName && src.scopeName && src.outerText === "" -} - -function fixVML(node) { - if (node.currentStyle.behavior !== "url(#default#VML)") { - node.style.behavior = "url(#default#VML)" - node.style.display = "inline-block" - node.style.zoom = 1 //hasLayout - } -} -avalon.innerHTML = function (node, html) { - if (!W3C && (!rcreate.test(html) && !rnest.test(html))) { - try { - node.innerHTML = html - return - } catch (e) { - } - } - var a = this.parseHTML(html) - this.clearHTML(node).appendChild(a) -} -avalon.clearHTML = function (node) { - node.textContent = "" - while (node.firstChild) { - node.removeChild(node.firstChild) - } - return node -} - -/********************************************************************* - * avalon的原型方法定义区 * - **********************************************************************/ - -function hyphen(target) { - //转换为连字符线风格 - return target.replace(/([a-z\d])([A-Z]+)/g, "$1-$2").toLowerCase() -} - -function camelize(target) { - //提前判断,提高getStyle等的效率 - if (!target || target.indexOf("-") < 0 && target.indexOf("_") < 0) { - return target - } - //转换为驼峰风格 - return target.replace(/[-_][^-_]/g, function(match) { - return match.charAt(1).toUpperCase() - }) -} - -var fakeClassListMethods = { - _toString: function() { - var node = this.node - var cls = node.className - var str = typeof cls === "string" ? cls : cls.baseVal - return str.split(/\s+/).join(" ") - }, - _contains: function(cls) { - return (" " + this + " ").indexOf(" " + cls + " ") > -1 - }, - _add: function(cls) { - if (!this.contains(cls)) { - this._set(this + " " + cls) - } - }, - _remove: function(cls) { - this._set((" " + this + " ").replace(" " + cls + " ", " ")) - }, - __set: function(cls) { - cls = cls.trim() - var node = this.node - if (rsvg.test(node)) { - //SVG元素的className是一个对象 SVGAnimatedString { baseVal="", animVal=""},只能通过set/getAttribute操作 - node.setAttribute("class", cls) - } else { - node.className = cls - } - } //toggle存在版本差异,因此不使用它 -} - - function fakeClassList(node) { - if (!("classList" in node)) { - node.classList = { - node: node - } - for (var k in fakeClassListMethods) { - node.classList[k.slice(1)] = fakeClassListMethods[k] - } - } - return node.classList - } - - - "add,remove".replace(rword, function(method) { - avalon.fn[method + "Class"] = function(cls) { - var el = this[0] - //https://developer.mozilla.org/zh-CN/docs/Mozilla/Firefox/Releases/26 - if (cls && typeof cls === "string" && el && el.nodeType === 1) { - cls.replace(/\S+/g, function(c) { - fakeClassList(el)[method](c) - }) - } - return this - } - }) - avalon.fn.mix({ - hasClass: function(cls) { - var el = this[0] || {} - return el.nodeType === 1 && fakeClassList(el).contains(cls) - }, - toggleClass: function(value, stateVal) { - var className, i = 0 - var classNames = String(value).split(/\s+/) - var isBool = typeof stateVal === "boolean" - while ((className = classNames[i++])) { - var state = isBool ? stateVal : !this.hasClass(className) - this[state ? "addClass" : "removeClass"](className) - } - return this - }, - attr: function(name, value) { - if (arguments.length === 2) { - this[0].setAttribute(name, value) - return this - } else { - return this[0].getAttribute(name) - } - }, - data: function(name, value) { - name = "data-" + hyphen(name || "") - switch (arguments.length) { - case 2: - this.attr(name, value) - return this - case 1: - var val = this.attr(name) - return parseData(val) - case 0: - var ret = {} - ap.forEach.call(this[0].attributes, function(attr) { - if (attr) { - name = attr.name - if (!name.indexOf("data-")) { - name = camelize(name.slice(5)) - ret[name] = parseData(attr.value) - } - } - }) - return ret - } - }, - removeData: function(name) { - name = "data-" + hyphen(name) - this[0].removeAttribute(name) - return this - }, - css: function(name, value) { - if (avalon.isPlainObject(name)) { - for (var i in name) { - avalon.css(this, i, name[i]) - } - } else { - var ret = avalon.css(this, name, value) - } - return ret !== void 0 ? ret : this - }, - position: function() { - var offsetParent, offset, - elem = this[0], - parentOffset = { - top: 0, - left: 0 - } - if (!elem) { - return - } - if (this.css("position") === "fixed") { - offset = elem.getBoundingClientRect() - } else { - offsetParent = this.offsetParent() //得到真正的offsetParent - offset = this.offset() // 得到正确的offsetParent - if (offsetParent[0].tagName !== "HTML") { - parentOffset = offsetParent.offset() - } - parentOffset.top += avalon.css(offsetParent[0], "borderTopWidth", true) - parentOffset.left += avalon.css(offsetParent[0], "borderLeftWidth", true) - - // Subtract offsetParent scroll positions - parentOffset.top -= offsetParent.scrollTop() - parentOffset.left -= offsetParent.scrollLeft() - } - return { - top: offset.top - parentOffset.top - avalon.css(elem, "marginTop", true), - left: offset.left - parentOffset.left - avalon.css(elem, "marginLeft", true) - } - }, - offsetParent: function() { - var offsetParent = this[0].offsetParent - while (offsetParent && avalon.css(offsetParent, "position") === "static") { - offsetParent = offsetParent.offsetParent; - } - return avalon(offsetParent || root) - }, - bind: function(type, fn, phase) { - if (this[0]) { //此方法不会链 - return avalon.bind(this[0], type, fn, phase) - } - }, - unbind: function(type, fn, phase) { - if (this[0]) { - avalon.unbind(this[0], type, fn, phase) - } - return this - }, - val: function(value) { - var node = this[0] - if (node && node.nodeType === 1) { - var get = arguments.length === 0 - var access = get ? ":get" : ":set" - var fn = valHooks[getValType(node) + access] - if (fn) { - var val = fn(node, value) - } else if (get) { - return (node.value || "").replace(/\r/g, "") - } else { - node.value = value - } - } - return get ? val : this - } - }) - - function parseData(data) { - try { - if (typeof data === "object") - return data - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : +data + "" === data ? +data : rbrace.test(data) ? avalon.parseJSON(data) : data - } catch (e) {} - return data - } -var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, - rvalidchars = /^[\],:{}\s]*$/, - rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, - rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, - rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g -avalon.parseJSON = window.JSON ? JSON.parse : function(data) { - if (typeof data === "string") { - data = data.trim(); - if (data) { - if (rvalidchars.test(data.replace(rvalidescape, "@") - .replace(rvalidtokens, "]") - .replace(rvalidbraces, ""))) { - return (new Function("return " + data))() // jshint ignore:line - } - } - avalon.error("Invalid JSON: " + data) - } - return data -} - -//生成avalon.fn.scrollLeft, avalon.fn.scrollTop方法 -avalon.each({ - scrollLeft: "pageXOffset", - scrollTop: "pageYOffset" -}, function(method, prop) { - avalon.fn[method] = function(val) { - var node = this[0] || {}, win = getWindow(node), - top = method === "scrollTop" - if (!arguments.length) { - return win ? (prop in win) ? win[prop] : root[method] : node[method] - } else { - if (win) { - win.scrollTo(!top ? val : avalon(win).scrollLeft(), top ? val : avalon(win).scrollTop()) - } else { - node[method] = val - } - } - } -}) - -function getWindow(node) { - return node.window && node.document ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false; -} -//=============================css相关======================= -var cssHooks = avalon.cssHooks = {} -var prefixes = ["", "-webkit-", "-o-", "-moz-", "-ms-"] -var cssMap = { - "float": W3C ? "cssFloat" : "styleFloat" -} -avalon.cssNumber = oneObject("columnCount,order,fillOpacity,fontWeight,lineHeight,opacity,orphans,widows,zIndex,zoom") - -avalon.cssName = function(name, host, camelCase) { - if (cssMap[name]) { - return cssMap[name] - } - host = host || root.style - for (var i = 0, n = prefixes.length; i < n; i++) { - camelCase = camelize(prefixes[i] + name) - if (camelCase in host) { - return (cssMap[name] = camelCase) - } - } - return null -} -cssHooks["@:set"] = function(node, name, value) { - try { //node.style.width = NaN;node.style.width = "xxxxxxx";node.style.width = undefine 在旧式IE下会抛异常 - node.style[name] = value - } catch (e) {} -} -if (window.getComputedStyle) { - cssHooks["@:get"] = function(node, name) { - if (!node || !node.style) { - throw new Error("getComputedStyle要求传入一个节点 " + node) - } - var ret, styles = getComputedStyle(node, null) - if (styles) { - ret = name === "filter" ? styles.getPropertyValue(name) : styles[name] - if (ret === "") { - ret = node.style[name] //其他浏览器需要我们手动取内联样式 - } - } - return ret - } - cssHooks["opacity:get"] = function(node) { - var ret = cssHooks["@:get"](node, "opacity") - return ret === "" ? "1" : ret - } -} else { - var rnumnonpx = /^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i - var rposition = /^(top|right|bottom|left)$/ - var ralpha = /alpha\([^)]*\)/i - var ie8 = !! window.XDomainRequest - var salpha = "DXImageTransform.Microsoft.Alpha" - var border = { - thin: ie8 ? '1px' : '2px', - medium: ie8 ? '3px' : '4px', - thick: ie8 ? '5px' : '6px' - } - cssHooks["@:get"] = function(node, name) { - //取得精确值,不过它有可能是带em,pc,mm,pt,%等单位 - var currentStyle = node.currentStyle - var ret = currentStyle[name] - if ((rnumnonpx.test(ret) && !rposition.test(ret))) { - //①,保存原有的style.left, runtimeStyle.left, - var style = node.style, - left = style.left, - rsLeft = node.runtimeStyle.left - //②由于③处的style.left = xxx会影响到currentStyle.left, - //因此把它currentStyle.left放到runtimeStyle.left, - //runtimeStyle.left拥有最高优先级,不会style.left影响 - node.runtimeStyle.left = currentStyle.left - //③将精确值赋给到style.left,然后通过IE的另一个私有属性 style.pixelLeft - //得到单位为px的结果;fontSize的分支见http://bugs.jquery.com/ticket/760 - style.left = name === 'fontSize' ? '1em' : (ret || 0) - ret = style.pixelLeft + "px" - //④还原 style.left,runtimeStyle.left - style.left = left - node.runtimeStyle.left = rsLeft - } - if (ret === "medium") { - name = name.replace("Width", "Style") - //border width 默认值为medium,即使其为0" - if (currentStyle[name] === "none") { - ret = "0px" - } - } - return ret === "" ? "auto" : border[ret] || ret - } - cssHooks["opacity:set"] = function(node, name, value) { - var style = node.style - var opacity = isFinite(value) && value <= 1 ? "alpha(opacity=" + value * 100 + ")" : "" - var filter = style.filter || ""; - style.zoom = 1 - //不能使用以下方式设置透明度 - //node.filters.alpha.opacity = value * 100 - style.filter = (ralpha.test(filter) ? - filter.replace(ralpha, opacity) : - filter + " " + opacity).trim() - if (!style.filter) { - style.removeAttribute("filter") - } - } - cssHooks["opacity:get"] = function(node) { - //这是最快的获取IE透明值的方式,不需要动用正则了! - var alpha = node.filters.alpha || node.filters[salpha], - op = alpha && alpha.enabled ? alpha.opacity : 100 - return (op / 100) + "" //确保返回的是字符串 - } -} - -"top,left".replace(rword, function(name) { - cssHooks[name + ":get"] = function(node) { - var computed = cssHooks["@:get"](node, name) - return /px$/.test(computed) ? computed : - avalon(node).position()[name] + "px" - } -}) - -var cssShow = { - position: "absolute", - visibility: "hidden", - display: "block" -} - -var rdisplayswap = /^(none|table(?!-c[ea]).+)/ - - function showHidden(node, array) { - //http://www.cnblogs.com/rubylouvre/archive/2012/10/27/2742529.html - if (node.offsetWidth <= 0) { //opera.offsetWidth可能小于0 - if (rdisplayswap.test(cssHooks["@:get"](node, "display"))) { - var obj = { - node: node - } - for (var name in cssShow) { - obj[name] = node.style[name] - node.style[name] = cssShow[name] - } - array.push(obj) - } - var parent = node.parentNode - if (parent && parent.nodeType === 1) { - showHidden(parent, array) - } - } - } - "Width,Height".replace(rword, function(name) { //fix 481 - var method = name.toLowerCase(), - clientProp = "client" + name, - scrollProp = "scroll" + name, - offsetProp = "offset" + name - cssHooks[method + ":get"] = function(node, which, override) { - var boxSizing = -4 - if (typeof override === "number") { - boxSizing = override - } - which = name === "Width" ? ["Left", "Right"] : ["Top", "Bottom"] - var ret = node[offsetProp] // border-box 0 - if (boxSizing === 2) { // margin-box 2 - return ret + avalon.css(node, "margin" + which[0], true) + avalon.css(node, "margin" + which[1], true) - } - if (boxSizing < 0) { // padding-box -2 - ret = ret - avalon.css(node, "border" + which[0] + "Width", true) - avalon.css(node, "border" + which[1] + "Width", true) - } - if (boxSizing === -4) { // content-box -4 - ret = ret - avalon.css(node, "padding" + which[0], true) - avalon.css(node, "padding" + which[1], true) - } - return ret - } - cssHooks[method + "&get"] = function(node) { - var hidden = []; - showHidden(node, hidden); - var val = cssHooks[method + ":get"](node) - for (var i = 0, obj; obj = hidden[i++];) { - node = obj.node - for (var n in obj) { - if (typeof obj[n] === "string") { - node.style[n] = obj[n] - } - } - } - return val; - } - avalon.fn[method] = function(value) { //会忽视其display - var node = this[0] - if (arguments.length === 0) { - if (node.setTimeout) { //取得窗口尺寸,IE9后可以用node.innerWidth /innerHeight代替 - return node["inner" + name] || node.document.documentElement[clientProp] - } - if (node.nodeType === 9) { //取得页面尺寸 - var doc = node.documentElement - //FF chrome html.scrollHeight< body.scrollHeight - //IE 标准模式 : html.scrollHeight> body.scrollHeight - //IE 怪异模式 : html.scrollHeight 最大等于可视窗口多一点? - return Math.max(node.body[scrollProp], doc[scrollProp], node.body[offsetProp], doc[offsetProp], doc[clientProp]) - } - return cssHooks[method + "&get"](node) - } else { - return this.css(method, value) - } - } - avalon.fn["inner" + name] = function() { - return cssHooks[method + ":get"](this[0], void 0, -2) - } - avalon.fn["outer" + name] = function(includeMargin) { - return cssHooks[method + ":get"](this[0], void 0, includeMargin === true ? 2 : 0) - } - }) - avalon.fn.offset = function() { //取得距离页面左右角的坐标 - var node = this[0], - box = { - left: 0, - top: 0 - } - if (!node || !node.tagName || !node.ownerDocument) { - return box - } - var doc = node.ownerDocument, - body = doc.body, - root = doc.documentElement, - win = doc.defaultView || doc.parentWindow - if (!avalon.contains(root, node)) { - return box - } - //http://hkom.blog1.fc2.com/?mode=m&no=750 body的偏移量是不包含margin的 - //我们可以通过getBoundingClientRect来获得元素相对于client的rect. - //http://msdn.microsoft.com/en-us/library/ms536433.aspx - if (node.getBoundingClientRect) { - box = node.getBoundingClientRect() // BlackBerry 5, iOS 3 (original iPhone) - } - //chrome/IE6: body.scrollTop, firefox/other: root.scrollTop - var clientTop = root.clientTop || body.clientTop, - clientLeft = root.clientLeft || body.clientLeft, - scrollTop = Math.max(win.pageYOffset || 0, root.scrollTop, body.scrollTop), - scrollLeft = Math.max(win.pageXOffset || 0, root.scrollLeft, body.scrollLeft) - // 把滚动距离加到left,top中去。 - // IE一些版本中会自动为HTML元素加上2px的border,我们需要去掉它 - // http://msdn.microsoft.com/en-us/library/ms533564(VS.85).aspx - return { - top: box.top + scrollTop - clientTop, - left: box.left + scrollLeft - clientLeft - } - } - - //==================================val相关============================ - - function getValType(elem) { - var ret = elem.tagName.toLowerCase() - return ret === "input" && /checkbox|radio/.test(elem.type) ? "checked" : ret - } -var roption = /^]+))?)*\s+value[\s=]/i -var valHooks = { - "option:get": IEVersion ? function(node) { - //在IE11及W3C,如果没有指定value,那么node.value默认为node.text(存在trim作),但IE9-10则是取innerHTML(没trim操作) - //specified并不可靠,因此通过分析outerHTML判定用户有没有显示定义value - return roption.test(node.outerHTML) ? node.value : node.text.trim() - } : function(node) { - return node.value - }, - "select:get": function(node, value) { - var option, options = node.options, - index = node.selectedIndex, - getter = valHooks["option:get"], - one = node.type === "select-one" || index < 0, - values = one ? null : [], - max = one ? index + 1 : options.length, - i = index < 0 ? max : one ? index : 0 - for (; i < max; i++) { - option = options[i] - //旧式IE在reset后不会改变selected,需要改用i === index判定 - //我们过滤所有disabled的option元素,但在safari5下,如果设置select为disable,那么其所有孩子都disable - //因此当一个元素为disable,需要检测其是否显式设置了disable及其父节点的disable情况 - if ((option.selected || i === index) && !option.disabled) { - value = getter(option) - if (one) { - return value - } - //收集所有selected值组成数组返回 - values.push(value) - } - } - return values - }, - "select:set": function(node, values, optionSet) { - values = [].concat(values) //强制转换为数组 - var getter = valHooks["option:get"] - for (var i = 0, el; el = node.options[i++];) { - if ((el.selected = values.indexOf(getter(el)) > -1)) { - optionSet = true - } - } - if (!optionSet) { - node.selectedIndex = -1 - } - } -} - -/********************************************************************* - * 编译系统 * - **********************************************************************/ -var meta = { - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"': '\\"', - '\\': '\\\\' -} -var quote = window.JSON && JSON.stringify || function(str) { - return '"' + str.replace(/[\\\"\x00-\x1f]/g, function(a) { - var c = meta[a]; - return typeof c === 'string' ? c : - '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' -} - -var keywords = [ - "break,case,catch,continue,debugger,default,delete,do,else,false", - "finally,for,function,if,in,instanceof,new,null,return,switch,this", - "throw,true,try,typeof,var,void,while,with", /* 关键字*/ - "abstract,boolean,byte,char,class,const,double,enum,export,extends", - "final,float,goto,implements,import,int,interface,long,native", - "package,private,protected,public,short,static,super,synchronized", - "throws,transient,volatile", /*保留字*/ - "arguments,let,yield,undefined" /* ECMA 5 - use strict*/].join(",") -var rrexpstr = /\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|[\s\t\n]*\.[\s\t\n]*[$\w\.]+/g -var rsplit = /[^\w$]+/g -var rkeywords = new RegExp(["\\b" + keywords.replace(/,/g, '\\b|\\b') + "\\b"].join('|'), 'g') -var rnumber = /\b\d[^,]*/g -var rcomma = /^,+|,+$/g -var variablePool = new Cache(512) -var getVariables = function (code) { - var key = "," + code.trim() - var ret = variablePool.get(key) - if (ret) { - return ret - } - var match = code - .replace(rrexpstr, "") - .replace(rsplit, ",") - .replace(rkeywords, "") - .replace(rnumber, "") - .replace(rcomma, "") - .split(/^$|,+/) - return variablePool.put(key, uniqSet(match)) -} -/*添加赋值语句*/ - -function addAssign(vars, scope, name, data) { - var ret = [], - prefix = " = " + name + "." - for (var i = vars.length, prop; prop = vars[--i]; ) { - if (scope.hasOwnProperty(prop)) { - ret.push(prop + prefix + prop) - data.vars.push(prop) - if (data.type === "duplex") { - vars.get = name + "." + prop - } - vars.splice(i, 1) - } - } - return ret -} - -function uniqSet(array) { - var ret = [], - unique = {} - for (var i = 0; i < array.length; i++) { - var el = array[i] - var id = el && typeof el.$id === "string" ? el.$id : el - if (!unique[id]) { - unique[id] = ret.push(el) - } - } - return ret -} -//缓存求值函数,以便多次利用 -var evaluatorPool = new Cache(128) -//取得求值函数及其传参 -var rduplex = /\w\[.*\]|\w\.\w/ -var rproxy = /(\$proxy\$[a-z]+)\d+$/ -var rthimRightParentheses = /\)\s*$/ -var rthimOtherParentheses = /\)\s*\|/g -var rquoteFilterName = /\|\s*([$\w]+)/g -var rpatchBracket = /"\s*\["/g -var rthimLeftParentheses = /"\s*\(/g -function parseFilter(val, filters) { - filters = filters - .replace(rthimRightParentheses, "")//处理最后的小括号 - .replace(rthimOtherParentheses, function () {//处理其他小括号 - return "],|" - }) - .replace(rquoteFilterName, function (a, b) { //处理|及它后面的过滤器的名字 - return "[" + quote(b) - }) - .replace(rpatchBracket, function () { - return '"],["' - }) - .replace(rthimLeftParentheses, function () { - return '",' - }) + "]" - return "return avalon.filters.$filter(" + val + ", " + filters + ")" -} - -function parseExpr(code, scopes, data) { - var dataType = data.type - var filters = data.filters || "" - var exprId = scopes.map(function (el) { - return String(el.$id).replace(rproxy, "$1") - }) + code + dataType + filters - var vars = getVariables(code).concat(), - assigns = [], - names = [], - args = [], - prefix = "" - //args 是一个对象数组, names 是将要生成的求值函数的参数 - scopes = uniqSet(scopes) - data.vars = [] - for (var i = 0, sn = scopes.length; i < sn; i++) { - if (vars.length) { - var name = "vm" + expose + "_" + i - names.push(name) - args.push(scopes[i]) - assigns.push.apply(assigns, addAssign(vars, scopes[i], name, data)) - } - } - if (!assigns.length && dataType === "duplex") { - return - } - if (dataType !== "duplex" && (code.indexOf("||") > -1 || code.indexOf("&&") > -1)) { - //https://github.com/RubyLouvre/avalon/issues/583 - data.vars.forEach(function (v) { - var reg = new RegExp("\\b" + v + "(?:\\.\\w+|\\[\\w+\\])+", "ig") - code = code.replace(reg, function (_) { - var c = _.charAt(v.length) - var r = IEVersion ? code.slice(arguments[1] + _.length) : RegExp.rightContext - var method = /^\s*\(/.test(r) - if (c === "." || c === "[" || method) {//比如v为aa,我们只匹配aa.bb,aa[cc],不匹配aaa.xxx - var name = "var" + String(Math.random()).replace(/^0\./, "") - if (method) {//array.size() - var array = _.split(".") - if (array.length > 2) { - var last = array.pop() - assigns.push(name + " = " + array.join(".")) - return name + "." + last - } else { - return _ - } - } - assigns.push(name + " = " + _) - return name - } else { - return _ - } - }) - }) - } - //---------------args---------------- - data.args = args - //---------------cache---------------- - delete data.vars - var fn = evaluatorPool.get(exprId) //直接从缓存,免得重复生成 - if (fn) { - data.evaluator = fn - return - } - prefix = assigns.join(", ") - if (prefix) { - prefix = "var " + prefix - } - if (/\S/.test(filters)) { //文本绑定,双工绑定才有过滤器 - if (!/text|html/.test(data.type)) { - throw Error("ms-" + data.type + "不支持过滤器") - } - code = "\nvar ret" + expose + " = " + code + ";\r\n" - code += parseFilter("ret" + expose, filters) - } else if (dataType === "duplex") { //双工绑定 - var _body = "'use strict';\nreturn function(vvv){\n\t" + - prefix + - ";\n\tif(!arguments.length){\n\t\treturn " + - code + - "\n\t}\n\t" + (!rduplex.test(code) ? vars.get : code) + - "= vvv;\n} " - try { - fn = Function.apply(noop, names.concat(_body)) - data.evaluator = evaluatorPool.put(exprId, fn) - } catch (e) { - log("debug: parse error," + e.message) - } - return - } else if (dataType === "on") { //事件绑定 - if (code.indexOf("(") === -1) { - code += ".call(this, $event)" - } else { - code = code.replace("(", ".call(this,") - } - names.push("$event") - code = "\nreturn " + code + ";" //IE全家 Function("return ")出错,需要Function("return ;") - var lastIndex = code.lastIndexOf("\nreturn") - var header = code.slice(0, lastIndex) - var footer = code.slice(lastIndex) - code = header + "\n" + footer - } else { //其他绑定 - code = "\nreturn " + code + ";" //IE全家 Function("return ")出错,需要Function("return ;") - } - try { - fn = Function.apply(noop, names.concat("'use strict';\n" + prefix + code)) - data.evaluator = evaluatorPool.put(exprId, fn) - } catch (e) { - log("debug: parse error," + e.message) - } finally { - vars = assigns = names = null //释放内存 - } -} - - -//parseExpr的智能引用代理 - -function parseExprProxy(code, scopes, data, tokens, noRegister) { - if (Array.isArray(tokens)) { - code = tokens.map(function (el) { - return el.expr ? "(" + el.value + ")" : quote(el.value) - }).join(" + ") - } - parseExpr(code, scopes, data) - if (data.evaluator && !noRegister) { - data.handler = bindingExecutors[data.handlerName || data.type] - //方便调试 - //这里非常重要,我们通过判定视图刷新函数的element是否在DOM树决定 - //将它移出订阅者列表 - avalon.injectBinding(data) - } -} -avalon.parseExprProxy = parseExprProxy -/********************************************************************* - * 扫描系统 * - **********************************************************************/ - -avalon.scan = function(elem, vmodel) { - elem = elem || root - var vmodels = vmodel ? [].concat(vmodel) : [] - scanTag(elem, vmodels) -} - -//http://www.w3.org/TR/html5/syntax.html#void-elements -var stopScan = oneObject("area,base,basefont,br,col,command,embed,hr,img,input,link,meta,param,source,track,wbr,noscript,script,style,textarea".toUpperCase()) - -function checkScan(elem, callback, innerHTML) { - var id = setTimeout(function() { - var currHTML = elem.innerHTML - clearTimeout(id) - if (currHTML === innerHTML) { - callback() - } else { - checkScan(elem, callback, currHTML) - } - }) -} - - -function createSignalTower(elem, vmodel) { - var id = elem.getAttribute("avalonctrl") || vmodel.$id - elem.setAttribute("avalonctrl", id) - vmodel.$events.expr = elem.tagName + '[avalonctrl="' + id + '"]' -} - -var getBindingCallback = function(elem, name, vmodels) { - var callback = elem.getAttribute(name) - if (callback) { - for (var i = 0, vm; vm = vmodels[i++]; ) { - if (vm.hasOwnProperty(callback) && typeof vm[callback] === "function") { - return vm[callback] - } - } - } -} - -function executeBindings(bindings, vmodels) { - for (var i = 0, data; data = bindings[i++]; ) { - data.vmodels = vmodels - bindingHandlers[data.type](data, vmodels) - if (data.evaluator && data.element && data.element.nodeType === 1) { //移除数据绑定,防止被二次解析 - //chrome使用removeAttributeNode移除不存在的特性节点时会报错 https://github.com/RubyLouvre/avalon/issues/99 - data.element.removeAttribute(data.name) - } - } - bindings.length = 0 -} - -//https://github.com/RubyLouvre/avalon/issues/636 -var mergeTextNodes = IEVersion && window.MutationObserver ? function (elem) { - var node = elem.firstChild, text - while (node) { - var aaa = node.nextSibling - if (node.nodeType === 3) { - if (text) { - text.nodeValue += node.nodeValue - elem.removeChild(node) - } else { - text = node - } - } else { - text = null - } - node = aaa - } -} : 0 -var roneTime = /^\s*::/ -var rmsAttr = /ms-(\w+)-?(.*)/ -var priorityMap = { - "if": 10, - "repeat": 90, - "data": 100, - "widget": 110, - "each": 1400, - "with": 1500, - "duplex": 2000, - "on": 3000 -} - -var events = oneObject("animationend,blur,change,input,click,dblclick,focus,keydown,keypress,keyup,mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,scan,scroll,submit") -var obsoleteAttrs = oneObject("value,title,alt,checked,selected,disabled,readonly,enabled") -function bindingSorter(a, b) { - return a.priority - b.priority -} - -function scanAttr(elem, vmodels, match) { - var scanNode = true - if (vmodels.length) { - var attributes = getAttributes ? getAttributes(elem) : elem.attributes - var bindings = [] - var fixAttrs = [] - var msData = {} - for (var i = 0, attr; attr = attributes[i++]; ) { - if (attr.specified) { - if (match = attr.name.match(rmsAttr)) { - //如果是以指定前缀命名的 - var type = match[1] - var param = match[2] || "" - var value = attr.value - var name = attr.name - if (events[type]) { - param = type - type = "on" - } else if (obsoleteAttrs[type]) { - if (type === "enabled") {//吃掉ms-enabled绑定,用ms-disabled代替 - log("warning!ms-enabled或ms-attr-enabled已经被废弃") - type = "disabled" - value = "!(" + value + ")" - } - param = type - type = "attr" - name = "ms-" + type + "-"+ param - fixAttrs.push([attr.name, name, value]) - } - msData[name] = value - if (typeof bindingHandlers[type] === "function") { - var newValue = value.replace(roneTime, "") - var oneTime = value !== newValue - var binding = { - type: type, - param: param, - element: elem, - name: name, - value: newValue, - oneTime: oneTime, - uuid: name+"-"+getUid(elem), - //chrome与firefox下Number(param)得到的值不一样 #855 - priority: (priorityMap[type] || type.charCodeAt(0) * 10 )+ (Number(param.replace(/\D/g, "")) || 0) - } - if (type === "html" || type === "text") { - var token = getToken(value) - avalon.mix(binding, token) - binding.filters = binding.filters.replace(rhasHtml, function () { - binding.type = "html" - binding.group = 1 - return "" - })// jshint ignore:line - } else if (type === "duplex") { - var hasDuplex = name - } else if (name === "ms-if-loop") { - binding.priority += 100 - } - bindings.push(binding) - if (type === "widget") { - elem.msData = elem.msData || msData - } - } - } - } - } - if (bindings.length) { - bindings.sort(bindingSorter) - fixAttrs.forEach(function (arr) { - log("warning!请改用" + arr[1] + "代替" + arr[0] + "!") - elem.removeAttribute(arr[0]) - elem.setAttribute(arr[1], arr[2]) - }) - //http://bugs.jquery.com/ticket/7071 - //在IE下对VML读取type属性,会让此元素所有属性都变成 - if (hasDuplex) { - if (msData["ms-attr-checked"]) { - log("warning!一个控件不能同时定义ms-attr-checked与" + hasDuplex) - } - if (msData["ms-attr-value"]) { - log("warning!一个控件不能同时定义ms-attr-value与" + hasDuplex) - } - } - for (i = 0; binding = bindings[i]; i++) { - type = binding.type - if (rnoscanAttrBinding.test(type)) { - return executeBindings(bindings.slice(0, i + 1), vmodels) - } else if (scanNode) { - scanNode = !rnoscanNodeBinding.test(type) - } - } - executeBindings(bindings, vmodels) - } - } - if (scanNode && !stopScan[elem.tagName] && rbind.test(elem.innerHTML.replace(rlt, "<").replace(rgt, ">"))) { - mergeTextNodes && mergeTextNodes(elem) - scanNodeList(elem, vmodels) //扫描子孙元素 - } -} -var rnoscanAttrBinding = /^if|widget|repeat$/ -var rnoscanNodeBinding = /^each|with|html|include$/ -//IE67下,在循环绑定中,一个节点如果是通过cloneNode得到,自定义属性的specified为false,无法进入里面的分支, -//但如果我们去掉scanAttr中的attr.specified检测,一个元素会有80+个特性节点(因为它不区分固有属性与自定义属性),很容易卡死页面 -if (!"1" [0]) { - var attrPool = new Cache(512) - var rattrs = /\s+(ms-[^=\s]+)(?:=("[^"]*"|'[^']*'|[^\s>]+))?/g, - rquote = /^['"]/, - rtag = /<\w+\b(?:(["'])[^"]*?(\1)|[^>])*>/i, - ramp = /&/g - //IE6-8解析HTML5新标签,会将它分解两个元素节点与一个文本节点 - //
    ddd
    - // window.onload = function() { - // var body = document.body - // for (var i = 0, el; el = body.children[i++]; ) { - // avalon.log(el.outerHTML) - // } - // } - //依次输出
    ,
    - var getAttributes = function (elem) { - var html = elem.outerHTML - //处理IE6-8解析HTML5新标签的情况,及
    等半闭合标签outerHTML为空的情况 - if (html.slice(0, 2) === " ms-important(1) --> ms-controller(2) --> ms-if(10) --> ms-repeat(100) - //--> ms-if-loop(110) --> ms-attr(970) ...--> ms-each(1400)-->ms-with(1500)--〉ms-duplex(2000)垫后 - var a = elem.getAttribute("ms-skip") - //#360 在旧式IE中 Object标签在引入Flash等资源时,可能出现没有getAttributeNode,innerHTML的情形 - if (!elem.getAttributeNode) { - return log("warning " + elem.tagName + " no getAttributeNode method") - } - var b = elem.getAttributeNode("ms-important") - var c = elem.getAttributeNode("ms-controller") - if (typeof a === "string") { - return - } else if (node = b || c) { - var newVmodel = avalon.vmodels[node.value] - if (!newVmodel) { - return - } - //ms-important不包含父VM,ms-controller相反 - vmodels = node === b ? [newVmodel] : [newVmodel].concat(vmodels) - var name = node.name - elem.removeAttribute(name) //removeAttributeNode不会刷新[ms-controller]样式规则 - avalon(elem).removeClass(name) - createSignalTower(elem, newVmodel) - } - scanAttr(elem, vmodels) //扫描特性节点 -} -var rhasHtml = /\|\s*html(?:\b|$)/, - r11a = /\|\|/g, - rlt = /</g, - rgt = />/g, - rstringLiteral = /(['"])(\\\1|.)+?\1/g -function getToken(value) { - if (value.indexOf("|") > 0) { - var scapegoat = value.replace(rstringLiteral, function (_) { - return Array(_.length + 1).join("1")// jshint ignore:line - }) - var index = scapegoat.replace(r11a, "\u1122\u3344").indexOf("|") //干掉所有短路或 - if (index > -1) { - return { - filters: value.slice(index), - value: value.slice(0, index), - expr: true - } - } - } - return { - value: value, - filters: "", - expr: true - } -} - -function scanExpr(str) { - var tokens = [], - value, start = 0, - stop - do { - stop = str.indexOf(openTag, start) - if (stop === -1) { - break - } - value = str.slice(start, stop) - if (value) { // {{ 左边的文本 - tokens.push({ - value: value, - filters: "", - expr: false - }) - } - start = stop + openTag.length - stop = str.indexOf(closeTag, start) - if (stop === -1) { - break - } - value = str.slice(start, stop) - if (value) { //处理{{ }}插值表达式 - tokens.push(getToken(value, start)) - } - start = stop + closeTag.length - } while (1) - value = str.slice(start) - if (value) { //}} 右边的文本 - tokens.push({ - value: value, - expr: false, - filters: "" - }) - } - return tokens -} - -function scanText(textNode, vmodels, index) { - var bindings = [] - tokens = scanExpr(textNode.data) - if (tokens.length) { - for (var i = 0; token = tokens[i++]; ) { - var node = DOC.createTextNode(token.value) //将文本转换为文本节点,并替换原来的文本节点 - if (token.expr) { - token.value = token.value.replace(roneTime, function () { - token.oneTime = true - return "" - }) - token.type = "text" - token.element = node - token.filters = token.filters.replace(rhasHtml, function (a, b,c) { - token.type = "html" - return "" - })// jshint ignore:line - token.pos = index * 1000 + i - bindings.push(token) //收集带有插值表达式的文本 - } - avalonFragment.appendChild(node) - } - textNode.parentNode.replaceChild(avalonFragment, textNode) - if (bindings.length) - executeBindings(bindings, vmodels) - } -} - -var bools = ["autofocus,autoplay,async,allowTransparency,checked,controls", - "declare,disabled,defer,defaultChecked,defaultSelected", - "contentEditable,isMap,loop,multiple,noHref,noResize,noShade", - "open,readOnly,selected" -].join(",") -var boolMap = {} -bools.replace(rword, function(name) { - boolMap[name.toLowerCase()] = name -}) - -var propMap = { //属性名映射 - "accept-charset": "acceptCharset", - "char": "ch", - "charoff": "chOff", - "class": "className", - "for": "htmlFor", - "http-equiv": "httpEquiv" -} - -var anomaly = ["accessKey,bgColor,cellPadding,cellSpacing,codeBase,codeType,colSpan", - "dateTime,defaultValue,frameBorder,longDesc,maxLength,marginWidth,marginHeight", - "rowSpan,tabIndex,useMap,vSpace,valueType,vAlign" -].join(",") -anomaly.replace(rword, function(name) { - propMap[name.toLowerCase()] = name -}) - -var rnoscripts = /(?:[\s\S]+?)<\/noscript>/img -var rnoscriptText = /([\s\S]+?)<\/noscript>/im - -var getXHR = function() { - return new(window.XMLHttpRequest || ActiveXObject)("Microsoft.XMLHTTP") // jshint ignore:line -} - -var templatePool = avalon.templateCache = {} - -bindingHandlers.attr = function(data, vmodels) { - var text = data.value.trim(), - simple = true - if (text.indexOf(openTag) > -1 && text.indexOf(closeTag) > 2) { - simple = false - if (rexpr.test(text) && RegExp.rightContext === "" && RegExp.leftContext === "") { - simple = true - text = RegExp.$1 - } - } - if (data.type === "include") { - var elem = data.element - data.includeRendered = getBindingCallback(elem, "data-include-rendered", vmodels) - data.includeLoaded = getBindingCallback(elem, "data-include-loaded", vmodels) - var outer = data.includeReplace = !! avalon(elem).data("includeReplace") - if (avalon(elem).data("includeCache")) { - data.templateCache = {} - } - data.startInclude = DOC.createComment("ms-include") - data.endInclude = DOC.createComment("ms-include-end") - if (outer) { - data.element = data.startInclude - elem.parentNode.insertBefore(data.startInclude, elem) - elem.parentNode.insertBefore(data.endInclude, elem.nextSibling) - } else { - elem.insertBefore(data.startInclude, elem.firstChild) - elem.appendChild(data.endInclude) - } - } - data.handlerName = "attr" //handleName用于处理多种绑定共用同一种bindingExecutor的情况 - parseExprProxy(text, vmodels, data, (simple ? 0 : scanExpr(data.value))) -} - -bindingExecutors.attr = function(val, elem, data) { - var method = data.type, - attrName = data.param - if (method === "css") { - avalon(elem).css(attrName, val) - } else if (method === "attr") { - - // ms-attr-class="xxx" vm.xxx="aaa bbb ccc"将元素的className设置为aaa bbb ccc - // ms-attr-class="xxx" vm.xxx=false 清空元素的所有类名 - // ms-attr-name="yyy" vm.yyy="ooo" 为元素设置name属性 - var toRemove = (val === false) || (val === null) || (val === void 0) - - if (!W3C && propMap[attrName]) { //旧式IE下需要进行名字映射 - attrName = propMap[attrName] - } - var bool = boolMap[attrName] - if (typeof elem[bool] === "boolean") { - elem[bool] = !! val //布尔属性必须使用el.xxx = true|false方式设值 - if (!val) { //如果为false, IE全系列下相当于setAttribute(xxx,''),会影响到样式,需要进一步处理 - toRemove = true - } - } - if (toRemove) { - return elem.removeAttribute(attrName) - } - //SVG只能使用setAttribute(xxx, yyy), VML只能使用elem.xxx = yyy ,HTML的固有属性必须elem.xxx = yyy - var isInnate = rsvg.test(elem) ? false : (DOC.namespaces && isVML(elem)) ? true : attrName in elem.cloneNode(false) - if (isInnate) { - elem[attrName] = val+"" - } else { - elem.setAttribute(attrName, val) - } - } else if (method === "include" && val) { - var vmodels = data.vmodels - var rendered = data.includeRendered - var loaded = data.includeLoaded - var replace = data.includeReplace - var target = replace ? elem.parentNode : elem - var scanTemplate = function(text) { - if (loaded) { - var newText = loaded.apply(target, [text].concat(vmodels)) - if (typeof newText === "string") - text = newText - } - if (rendered) { - checkScan(target, function() { - rendered.call(target) - }, NaN) - } - var lastID = data.includeLastID - if (data.templateCache && lastID && lastID !== val) { - var lastTemplate = data.templateCache[lastID] - if (!lastTemplate) { - lastTemplate = data.templateCache[lastID] = DOC.createElement("div") - ifGroup.appendChild(lastTemplate) - } - } - data.includeLastID = val - while (true) { - var node = data.startInclude.nextSibling - if (node && node !== data.endInclude) { - target.removeChild(node) - if (lastTemplate) - lastTemplate.appendChild(node) - } else { - break - } - } - var dom = getTemplateNodes(data, val, text) - var nodes = avalon.slice(dom.childNodes) - target.insertBefore(dom, data.endInclude) - scanNodeArray(nodes, vmodels) - } - - if (data.param === "src") { - if (typeof templatePool[val] === "string") { - avalon.nextTick(function() { - scanTemplate(templatePool[val]) - }) - } else if (Array.isArray(templatePool[val])) { //#805 防止在循环绑定中发出许多相同的请求 - templatePool[val].push(scanTemplate) - } else { - var xhr = getXHR() - xhr.onreadystatechange = function() { - if (xhr.readyState === 4) { - var s = xhr.status - if (s >= 200 && s < 300 || s === 304 || s === 1223) { - var text = xhr.responseText - for (var f = 0, fn; fn = templatePool[val][f++];) { - fn(text) - } - templatePool[val] = text - } - } - } - templatePool[val] = [scanTemplate] - xhr.open("GET", val, true) - if ("withCredentials" in xhr) { - xhr.withCredentials = true - } - xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest") - xhr.send(null) - } - } else { - //IE系列与够新的标准浏览器支持通过ID取得元素(firefox14+) - //http://tjvantoll.com/2012/07/19/dom-element-references-as-global-variables/ - var el = val && val.nodeType === 1 ? val : DOC.getElementById(val) - if (el) { - if (el.tagName === "NOSCRIPT" && !(el.innerHTML || el.fixIE78)) { //IE7-8 innerText,innerHTML都无法取得其内容,IE6能取得其innerHTML - xhr = getXHR() //IE9-11与chrome的innerHTML会得到转义的内容,它们的innerText可以 - xhr.open("GET", location, false) //谢谢Nodejs 乱炖群 深圳-纯属虚构 - xhr.send(null) - //http://bbs.csdn.net/topics/390349046?page=1#post-393492653 - var noscripts = DOC.getElementsByTagName("noscript") - var array = (xhr.responseText || "").match(rnoscripts) || [] - var n = array.length - for (var i = 0; i < n; i++) { - var tag = noscripts[i] - if (tag) { //IE6-8中noscript标签的innerHTML,innerText是只读的 - tag.style.display = "none" //http://haslayout.net/css/noscript-Ghost-Bug - tag.fixIE78 = (array[i].match(rnoscriptText) || ["", " "])[1] - } - } - } - avalon.nextTick(function() { - scanTemplate(el.fixIE78 || el.value || el.innerText || el.innerHTML) - }) - } - } - } else { - if (!root.hasAttribute && typeof val === "string" && (method === "src" || method === "href")) { - val = val.replace(/&/g, "&") //处理IE67自动转义的问题 - } - elem[method] = val - if (window.chrome && elem.tagName === "EMBED") { - var parent = elem.parentNode //#525 chrome1-37下embed标签动态设置src不能发生请求 - var comment = document.createComment("ms-src") - parent.replaceChild(comment, elem) - parent.replaceChild(elem, comment) - } - } -} - -function getTemplateNodes(data, id, text) { - var div = data.templateCache && data.templateCache[id] - if (div) { - var dom = DOC.createDocumentFragment(), - firstChild - while (firstChild = div.firstChild) { - dom.appendChild(firstChild) - } - return dom - } - return avalon.parseHTML(text) -} - -//这几个指令都可以使用插值表达式,如ms-src="aaa/{{b}}/{{c}}.html" -"title,alt,src,value,css,include,href".replace(rword, function(name) { - bindingHandlers[name] = bindingHandlers.attr -}) -//根据VM的属性值或表达式的值切换类名,ms-class="xxx yyy zzz:flag" -//http://www.cnblogs.com/rubylouvre/archive/2012/12/17/2818540.html -bindingHandlers["class"] = function(data, vmodels) { - var oldStyle = data.param, - text = data.value, - rightExpr - data.handlerName = "class" - if (!oldStyle || isFinite(oldStyle)) { - data.param = "" //去掉数字 - var noExpr = text.replace(rexprg, function(a) { - return a.replace(/./g, "0") - //return Math.pow(10, a.length - 1) //将插值表达式插入10的N-1次方来占位 - }) - var colonIndex = noExpr.indexOf(":") //取得第一个冒号的位置 - if (colonIndex === -1) { // 比如 ms-class="aaa bbb ccc" 的情况 - var className = text - } else { // 比如 ms-class-1="ui-state-active:checked" 的情况 - className = text.slice(0, colonIndex) - rightExpr = text.slice(colonIndex + 1) - parseExpr(rightExpr, vmodels, data) //决定是添加还是删除 - if (!data.evaluator) { - log("debug: ms-class '" + (rightExpr || "").trim() + "' 不存在于VM中") - return false - } else { - data._evaluator = data.evaluator - data._args = data.args - } - } - var hasExpr = rexpr.test(className) //比如ms-class="width{{w}}"的情况 - if (!hasExpr) { - data.immobileClass = className - } - parseExprProxy("", vmodels, data, (hasExpr ? scanExpr(className) : 0)) - } else { - data.immobileClass = data.oldStyle = data.param - parseExprProxy(text, vmodels, data) - } -} - -bindingExecutors["class"] = function(val, elem, data) { - var $elem = avalon(elem), - method = data.type - if (method === "class" && data.oldStyle) { //如果是旧风格 - $elem.toggleClass(data.oldStyle, !! val) - } else { - //如果存在冒号就有求值函数 - data.toggleClass = data._evaluator ? !! data._evaluator.apply(elem, data._args) : true - data.newClass = data.immobileClass || val - if (data.oldClass && data.newClass !== data.oldClass) { - $elem.removeClass(data.oldClass) - } - data.oldClass = data.newClass - switch (method) { - case "class": - $elem.toggleClass(data.newClass, data.toggleClass) - break - case "hover": - case "active": - if (!data.hasBindEvent) { //确保只绑定一次 - var activate = "mouseenter" //在移出移入时切换类名 - var abandon = "mouseleave" - if (method === "active") { //在聚焦失焦中切换类名 - elem.tabIndex = elem.tabIndex || -1 - activate = "mousedown" - abandon = "mouseup" - var fn0 = $elem.bind("mouseleave", function() { - data.toggleClass && $elem.removeClass(data.newClass) - }) - } - var fn1 = $elem.bind(activate, function() { - data.toggleClass && $elem.addClass(data.newClass) - }) - var fn2 = $elem.bind(abandon, function() { - data.toggleClass && $elem.removeClass(data.newClass) - }) - data.rollback = function() { - $elem.unbind("mouseleave", fn0) - $elem.unbind(activate, fn1) - $elem.unbind(abandon, fn2) - } - data.hasBindEvent = true - } - break; - } - } -} - -"hover,active".replace(rword, function(method) { - bindingHandlers[method] = bindingHandlers["class"] -}) -//ms-controller绑定已经在scanTag 方法中实现 -//ms-css绑定已由ms-attr绑定实现 - - -// bindingHandlers.data 定义在if.js -bindingExecutors.data = function(val, elem, data) { - var key = "data-" + data.param - if (val && typeof val === "object") { - elem[key] = val - } else { - elem.setAttribute(key, String(val)) - } -} -//双工绑定 -var duplexBinding = bindingHandlers.duplex = function(data, vmodels) { - var elem = data.element, - hasCast - parseExprProxy(data.value, vmodels, data, 0, 1) - - data.changed = getBindingCallback(elem, "data-duplex-changed", vmodels) || noop - if (data.evaluator && data.args) { - var params = [] - var casting = oneObject("string,number,boolean,checked") - if (elem.type === "radio" && data.param === "") { - data.param = "checked" - } - if (elem.msData) { - elem.msData["ms-duplex"] = data.value - } - data.param.replace(/\w+/g, function(name) { - if (/^(checkbox|radio)$/.test(elem.type) && /^(radio|checked)$/.test(name)) { - if (name === "radio") - log("ms-duplex-radio已经更名为ms-duplex-checked") - name = "checked" - data.isChecked = true - } - if (name === "bool") { - name = "boolean" - log("ms-duplex-bool已经更名为ms-duplex-boolean") - } else if (name === "text") { - name = "string" - log("ms-duplex-text已经更名为ms-duplex-string") - } - if (casting[name]) { - hasCast = true - } - avalon.Array.ensure(params, name) - }) - if (!hasCast) { - params.push("string") - } - data.param = params.join("-") - data.bound = function(type, callback) { - if (elem.addEventListener) { - elem.addEventListener(type, callback, false) - } else { - elem.attachEvent("on" + type, callback) - } - var old = data.rollback - data.rollback = function() { - elem.avalonSetter = null - avalon.unbind(elem, type, callback) - old && old() - } - } - for (var i in avalon.vmodels) { - var v = avalon.vmodels[i] - v.$fire("avalon-ms-duplex-init", data) - } - var cpipe = data.pipe || (data.pipe = pipe) - cpipe(null, data, "init") - var tagName = elem.tagName - duplexBinding[tagName] && duplexBinding[tagName](elem, data.evaluator.apply(null, data.args), data) - } -} -//不存在 bindingExecutors.duplex - - function fixNull(val) { - return val == null ? "" : val - } -avalon.duplexHooks = { - checked: { - get: function(val, data) { - return !data.element.oldValue - } - }, - string: { - get: function(val) { //同步到VM - return val - }, - set: fixNull - }, - "boolean": { - get: function(val) { - return val === "true" - }, - set: fixNull - }, - number: { - get: function(val, data) { - var number = parseFloat(val) - if (-val === -number) { - return number - } - var arr = /strong|medium|weak/.exec(data.element.getAttribute("data-duplex-number")) || ["medium"] - switch (arr[0]) { - case "strong": - return 0 - case "medium": - return val === "" ? "" : 0 - case "weak": - return val - } - }, - set: fixNull - } -} - -function pipe(val, data, action, e) { - data.param.replace(/\w+/g, function(name) { - var hook = avalon.duplexHooks[name] - if (hook && typeof hook[action] === "function") { - val = hook[action](val, data) - } - }) - return val -} - -var TimerID, ribbon = [] - - avalon.tick = function(fn) { - if (ribbon.push(fn) === 1) { - TimerID = setInterval(ticker, 60) - } - } - - function ticker() { - for (var n = ribbon.length - 1; n >= 0; n--) { - var el = ribbon[n] - if (el() === false) { - ribbon.splice(n, 1) - } - } - if (!ribbon.length) { - clearInterval(TimerID) - } - } - -var watchValueInTimer = noop -var rmsinput = /text|password|hidden/ -new function() { // jshint ignore:line - try { //#272 IE9-IE11, firefox - var setters = {} - var aproto = HTMLInputElement.prototype - var bproto = HTMLTextAreaElement.prototype - function newSetter(value) { // jshint ignore:line - setters[this.tagName].call(this, value) - if (rmsinput.test(this.type) && !this.msFocus && this.avalonSetter) { - this.avalonSetter() - } - } - var inputProto = HTMLInputElement.prototype - Object.getOwnPropertyNames(inputProto) //故意引发IE6-8等浏览器报错 - setters["INPUT"] = Object.getOwnPropertyDescriptor(aproto, "value").set - - Object.defineProperty(aproto, "value", { - set: newSetter - }) - setters["TEXTAREA"] = Object.getOwnPropertyDescriptor(bproto, "value").set - Object.defineProperty(bproto, "value", { - set: newSetter - }) - } catch (e) { - //在chrome 43中 ms-duplex终于不需要使用定时器实现双向绑定了 - // http://updates.html5rocks.com/2015/04/DOM-attributes-now-on-the-prototype - // https://docs.google.com/document/d/1jwA8mtClwxI-QJuHT7872Z0pxpZz8PBkf2bGAbsUtqs/edit?pli=1 - watchValueInTimer = avalon.tick - } -} // jshint ignore:line -if (IEVersion) { - avalon.bind(DOC, "selectionchange", function(e) { - var el = DOC.activeElement - if (el && typeof el.avalonSetter === "function") { - el.avalonSetter() - } - }) -} - -//处理radio, checkbox, text, textarea, password -duplexBinding.INPUT = function(element, evaluator, data) { - var $type = element.type, - bound = data.bound, - $elem = avalon(element), - composing = false - - function callback(value) { - data.changed.call(this, value, data) - } - - function compositionStart() { - composing = true - } - - function compositionEnd() { - composing = false - } - //当value变化时改变model的值 - var updateVModel = function() { - if (composing) //处理中文输入法在minlengh下引发的BUG - return - var val = element.oldValue = element.value //防止递归调用形成死循环 - var lastValue = data.pipe(val, data, "get") - if ($elem.data("duplexObserve") !== false) { - evaluator(lastValue) - callback.call(element, lastValue) - if ($elem.data("duplex-focus")) { - avalon.nextTick(function() { - element.focus() - }) - } - } - } - //当model变化时,它就会改变value的值 - data.handler = function() { - var val = data.pipe(evaluator(), data, "set") + "" //fix #673 - if (val !== element.oldValue) { - element.value = val - } - } - if (data.isChecked || $type === "radio") { - var IE6 = IEVersion === 6 - updateVModel = function() { - if ($elem.data("duplexObserve") !== false) { - var lastValue = data.pipe(element.value, data, "get") - evaluator(lastValue) - callback.call(element, lastValue) - } - } - data.handler = function() { - var val = evaluator() - var checked = data.isChecked ? !! val : val + "" === element.value - element.oldValue = checked - if (IE6) { - setTimeout(function() { - //IE8 checkbox, radio是使用defaultChecked控制选中状态, - //并且要先设置defaultChecked后设置checked - //并且必须设置延迟 - element.defaultChecked = checked - element.checked = checked - }, 31) - } else { - element.checked = checked - } - } - bound("click", updateVModel) - } else if ($type === "checkbox") { - updateVModel = function() { - if ($elem.data("duplexObserve") !== false) { - var method = element.checked ? "ensure" : "remove" - var array = evaluator() - if (!Array.isArray(array)) { - log("ms-duplex应用于checkbox上要对应一个数组") - array = [array] - } - var val = data.pipe(element.value, data, "get") - avalon.Array[method](array, val) - callback.call(element, array) - } - } - - data.handler = function() { - var array = [].concat(evaluator()) //强制转换为数组 - var val = data.pipe(element.value, data, "get") - element.checked = array.indexOf(val) > -1 - } - bound(W3C ? "change" : "click", updateVModel) - } else { - var events = element.getAttribute("data-duplex-event") || "input" - if (element.attributes["data-event"]) { - log("data-event指令已经废弃,请改用data-duplex-event") - } - - function delay(e) { // jshint ignore:line - setTimeout(function() { - updateVModel(e) - }) - } - events.replace(rword, function(name) { - switch (name) { - case "input": - if (!IEVersion) { // W3C - bound("input", updateVModel) - //非IE浏览器才用这个 - bound("compositionstart", compositionStart) - bound("compositionend", compositionEnd) - bound("DOMAutoComplete", updateVModel) - } else { //onpropertychange事件无法区分是程序触发还是用户触发 - // IE下通过selectionchange事件监听IE9+点击input右边的X的清空行为,及粘贴,剪切,删除行为 - if (IEVersion > 8) { - bound("input", updateVModel) //IE9使用propertychange无法监听中文输入改动 - } else { - bound("propertychange", function(e) { //IE6-8下第一次修改时不会触发,需要使用keydown或selectionchange修正 - if (e.propertyName === "value") { - updateVModel() - } - }) - } - bound("dragend", delay) - //http://www.cnblogs.com/rubylouvre/archive/2013/02/17/2914604.html - //http://www.matts411.com/post/internet-explorer-9-oninput/ - } - break - default: - bound(name, updateVModel) - break - } - }) - bound("focus", function() { - element.msFocus = true - }) - bound("blur", function() { - element.msFocus = false - }) - - if (rmsinput.test($type)) { - watchValueInTimer(function() { - if (root.contains(element)) { - if (!element.msFocus && element.oldValue !== element.value) { - updateVModel() - } - } else if (!element.msRetain) { - return false - } - }) - } - - element.avalonSetter = updateVModel //#765 - } - - element.oldValue = element.value - avalon.injectBinding(data) - callback.call(element, element.value) -} -duplexBinding.TEXTAREA = duplexBinding.INPUT -duplexBinding.SELECT = function(element, evaluator, data) { - var $elem = avalon(element) - - function updateVModel() { - if ($elem.data("duplexObserve") !== false) { - var val = $elem.val() //字符串或字符串数组 - if (Array.isArray(val)) { - val = val.map(function(v) { - return data.pipe(v, data, "get") - }) - } else { - val = data.pipe(val, data, "get") - } - if (val + "" !== element.oldValue) { - evaluator(val) - } - data.changed.call(element, val, data) - } - } - data.handler = function() { - var val = evaluator() - val = val && val.$model || val - if (Array.isArray(val)) { - if (!element.multiple) { - log("ms-duplex在不能对应一个数组") - } - } - //必须变成字符串后才能比较 - val = Array.isArray(val) ? val.map(String) : val + "" - if (val + "" !== element.oldValue) { - $elem.val(val) - element.oldValue = val + "" - } - } - data.bound("change", updateVModel) - element.msCallback = function() { - avalon.injectBinding(data) - data.changed.call(element, evaluator(), data) - } -} -// bindingHandlers.html 定义在if.js -bindingExecutors.html = function (val, elem, data) { - var isHtmlFilter = elem.nodeType !== 1 - var parent = isHtmlFilter ? elem.parentNode : elem - if (!parent) - return - val = val == null ? "" : val - if (data.oldText !== val) { - data.oldText = val - } else { - return - } - if (elem.nodeType === 3) { - var signature = generateID("html") - parent.insertBefore(DOC.createComment(signature), elem) - data.element = DOC.createComment(signature + ":end") - parent.replaceChild(data.element, elem) - elem = data.element - } - if (typeof val !== "object") {//string, number, boolean - var fragment = avalon.parseHTML(String(val)) - } else if (val.nodeType === 11) { //将val转换为文档碎片 - fragment = val - } else if (val.nodeType === 1 || val.item) { - var nodes = val.nodeType === 1 ? val.childNodes : val.item - fragment = avalonFragment.cloneNode(true) - while (nodes[0]) { - fragment.appendChild(nodes[0]) - } - } - - nodes = avalon.slice(fragment.childNodes) - //插入占位符, 如果是过滤器,需要有节制地移除指定的数量,如果是html指令,直接清空 - if (isHtmlFilter) { - var endValue = elem.nodeValue.slice(0, -4) - while (true) { - var node = elem.previousSibling - if (!node || node.nodeType === 8 && node.nodeValue === endValue) { - break - } else { - parent.removeChild(node) - } - } - parent.insertBefore(fragment, elem) - } else { - avalon.clearHTML(elem).appendChild(fragment) - } - scanNodeArray(nodes, data.vmodels) -} -bindingHandlers["if"] = - bindingHandlers.data = - bindingHandlers.text = - bindingHandlers.html = - function(data, vmodels) { - parseExprProxy(data.value, vmodels, data) -} - -bindingExecutors["if"] = function(val, elem, data) { - try { - if(!elem.parentNode) return - } catch(e) {return} - if (val) { //插回DOM树 - if (elem.nodeType === 8) { - elem.parentNode.replaceChild(data.template, elem) - // animate.enter(data.template, elem.parentNode) - elem = data.element = data.template //这时可能为null - } - if (elem.getAttribute(data.name)) { - elem.removeAttribute(data.name) - scanAttr(elem, data.vmodels) - } - data.rollback = null - } else { //移出DOM树,并用注释节点占据原位置 - if (elem.nodeType === 1) { - var node = data.element = DOC.createComment("ms-if") - elem.parentNode.replaceChild(node, elem) - // animate.leave(elem, node.parentNode, node) - data.template = elem //元素节点 - ifGroup.appendChild(elem) - data.rollback = function() { - if (elem.parentNode === ifGroup) { - ifGroup.removeChild(elem) - } - } - } - } -} -//ms-important绑定已经在scanTag 方法中实现 -//ms-include绑定已由ms-attr绑定实现 - -var rdash = /\(([^)]*)\)/ -bindingHandlers.on = function(data, vmodels) { - var value = data.value - data.type = "on" - var eventType = data.param.replace(/-\d+$/, "") // ms-on-mousemove-10 - if (typeof bindingHandlers.on[eventType + "Hook"] === "function") { - bindingHandlers.on[eventType + "Hook"](data) - } - if (value.indexOf("(") > 0 && value.indexOf(")") > -1) { - var matched = (value.match(rdash) || ["", ""])[1].trim() - if (matched === "" || matched === "$event") { // aaa() aaa($event)当成aaa处理 - value = value.replace(rdash, "") - } - } - parseExprProxy(value, vmodels, data) -} - -bindingExecutors.on = function(callback, elem, data) { - callback = function(e) { - var fn = data.evaluator || noop - return fn.apply(this, data.args.concat(e)) - } - var eventType = data.param.replace(/-\d+$/, "") // ms-on-mousemove-10 - if (eventType === "scan") { - callback.call(elem, { - type: eventType - }) - } else if (typeof data.specialBind === "function") { - data.specialBind(elem, callback) - } else { - var removeFn = avalon.bind(elem, eventType, callback) - } - data.rollback = function() { - if (typeof data.specialUnbind === "function") { - data.specialUnbind() - } else { - avalon.unbind(elem, eventType, removeFn) - } - } -} -bindingHandlers.repeat = function (data, vmodels) { - var type = data.type - parseExprProxy(data.value, vmodels, data, 0, 1) - data.proxies = [] - var freturn = false - try { - var $repeat = data.$repeat = data.evaluator.apply(0, data.args || []) - var xtype = avalon.type($repeat) - if (xtype !== "object" && xtype !== "array") { - freturn = true - avalon.log("warning:" + data.value + "只能是对象或数组") - } - } catch (e) { - freturn = true - } - var arr = data.value.split(".") || [] - if (arr.length > 1) { - arr.pop() - var n = arr[0] - for (var i = 0, v; v = vmodels[i++]; ) { - if (v && v.hasOwnProperty(n)) { - var events = v[n].$events || {} - events[subscribers] = events[subscribers] || [] - events[subscribers].push(data) - break - } - } - } - - var elem = data.element - if (elem.nodeType === 1) { - elem.removeAttribute(data.name) - data.sortedCallback = getBindingCallback(elem, "data-with-sorted", vmodels) - data.renderedCallback = getBindingCallback(elem, "data-" + type + "-rendered", vmodels) - var signature = generateID(type) - var start = DOC.createComment(signature) - var end = DOC.createComment(signature + ":end") - data.signature = signature - data.template = avalonFragment.cloneNode(false) - if (type === "repeat") { - var parent = elem.parentNode - parent.replaceChild(end, elem) - parent.insertBefore(start, end) - data.template.appendChild(elem) - } else { - while (elem.firstChild) { - data.template.appendChild(elem.firstChild) - } - elem.appendChild(start) - elem.appendChild(end) - } - data.element = end - data.handler = bindingExecutors.repeat - data.rollback = function () { - var elem = data.element - if (!elem) - return - data.handler("clear") - } - } - - if (freturn) { - return - } - - data.$outer = {} - var check0 = "$key" - var check1 = "$val" - if (Array.isArray($repeat)) { - check0 = "$first" - check1 = "$last" - } - - for (i = 0; v = vmodels[i++]; ) { - if (v.hasOwnProperty(check0) && v.hasOwnProperty(check1)) { - data.$outer = v - break - } - } - var $events = $repeat.$events - var $list = ($events || {})[subscribers] - injectDependency($list, data) - if (xtype === "object") { - data.$with = true - $repeat.$proxy || ($repeat.$proxy = {}) - data.handler("append", $repeat) - } else if ($repeat.length) { - data.handler("add", 0, $repeat.length) - } -} - -bindingExecutors.repeat = function (method, pos, el) { - if (!method && this.$with) { - method = "append" - var flag = "update" - } - if (method) { - var data = this, start, fragment - var end = data.element - var comments = getComments(data) - var parent = end.parentNode - var proxies = data.proxies - var transation = avalonFragment.cloneNode(false) - switch (method) { - case "add": //在pos位置后添加el数组(pos为插入位置,el为要插入的个数) - var n = pos + el - var fragments = [] - for (var i = pos; i < n; i++) { - var proxy = eachProxyAgent(i, data) - proxies.splice(i, 0, proxy) - shimController(data, transation, proxy, fragments) - } - var now = new Date() - 0 - avalon.optimize = avalon.optimize || now - for (i = 0; fragment = fragments[i++]; ) { - scanNodeArray(fragment.nodes, fragment.vmodels) - fragment.nodes = fragment.vmodels = null - } - if (avalon.optimize === now) { - avalon.optimize = null - } - parent.insertBefore(transation, comments[pos] || end) - avalon.profile("插入操作花费了 " + (new Date - now)) - break - case "del": //将pos后的el个元素删掉(pos, el都是数字) - sweepNodes(comments[pos], comments[pos + el] || end) - var removed = proxies.splice(pos, el) - recycleProxies(removed, "each") - break - case "clear": - start = comments[0] - if (start) { - sweepNodes(start, end) - if (data.$with) { - parent.insertBefore(start, end) - } - } - recycleProxies(proxies, "each") - break - case "move": - start = comments[0] - if (start) { - var signature = start.nodeValue - var rooms = [] - var room = [], - node - sweepNodes(start, end, function () { - room.unshift(this) - if (this.nodeValue === signature) { - rooms.unshift(room) - room = [] - } - }) - sortByIndex(rooms, pos) - sortByIndex(proxies, pos) - while (room = rooms.shift()) { - while (node = room.shift()) { - transation.appendChild(node) - } - } - parent.insertBefore(transation, end) - } - break - case "index": //将proxies中的第pos个起的所有元素重新索引 - var last = proxies.length - 1 - for (; el = proxies[pos]; pos++) { - el.$index = pos - el.$first = pos === 0 - el.$last = pos === last - } - return - case "set": //将proxies中的第pos个元素的VM设置为el(pos为数字,el任意) - proxy = proxies[pos] - if (proxy) { - fireDependencies(proxy.$events[data.param || "el"]) - } - break - case "append": - var object = data.$repeat //原来第2参数, 被循环对象 - var oldProxy = object.$proxy //代理对象组成的hash - var keys = [] - now = new Date() - 0 - avalon.optimize = avalon.optimize || now - if (flag === "update") { - if (!data.evaluator) { - parseExprProxy(data.value, data.vmodels, data, 0, 1) - } - object = data.$repeat = data.evaluator.apply(0, data.args || []) - object.$proxy = oldProxy - } - var pool = object.$proxy || {} - removed = [] - var nodes = data.element.parentNode.childNodes - var add = false - for (i = 0; node = nodes[i++]; ) { - if (node.nodeValue === data.signature) { - add = true - } else if (node.nodeValue === data.signature + ":end") { - add = false - } - if (add) { - removed.push(node) - } - } - - var indexNode = [], item - var keyIndex = data.keyIndex || (data.keyIndex = {}) - //将现有的节点全部移出DOM树 - for ( i = 0; i < removed.length; i++) { - el = removed[i] - if (el.nodeValue === data.signature) { - item = avalonFragment.cloneNode(false) - indexNode.push(item) - } - item.appendChild(el) - } - - - for (var key in object) { //当前对象的所有键名 - if (object.hasOwnProperty(key) && key !== "hasOwnProperty" && key !== "$proxy") { - keys.push(key) - } - } - - for (var i = 0; key = keys[i++]; ) { - if (!pool.hasOwnProperty(key)) {//添加缺失的代理VM - pool[key] = withProxyAgent(pool[key], key, data) - } else { - pool[key].$val = object[key] - } - } - - for ( key in pool) { - if (keys.indexOf(key) === -1) {//删除没用的代理VM - proxyRecycler(pool[key], withProxyPool) //去掉之前的代理VM - delete pool[key] - } - } - var fragments = [] - var renderKeys = keys //需要渲染到DOM树去的键名 - var end = data.element - if (data.sortedCallback) { //如果有回调,则让它们排序 - var keys2 = data.sortedCallback.call(parent, keys) - if (keys2 && Array.isArray(keys2)) { - renderKeys = keys2 - } - } - - for (i = 0; i < renderKeys.length; i++) { - key = renderKeys[i] - if (typeof keyIndex[key] === "number") { - transation.appendChild(indexNode[keyIndex[key]]) - fragments.push({}) - } else { - shimController(data, transation, pool[key], fragments) - } - } - - for (i = 0; i < renderKeys.length; i++) { - keyIndex[renderKeys[i]] = i - } - - for (i = 0; fragment = fragments[i++]; ) { - if (fragment.nodes) { - scanNodeArray(fragment.nodes, fragment.vmodels) - fragment.nodes = fragment.vmodels = null - } - } - if (avalon.optimize === now) { - avalon.optimize = null - } - parent.insertBefore(transation, end) - avalon.profile("插入操作花费了 " + (new Date - now)) - break - } - if (!data.$repeat || data.$repeat.hasOwnProperty("$lock")) //IE6-8 VBScript对象会报错, 有时候data.$repeat不存在 - return - if (method === "clear") - method = "del" - var callback = data.renderedCallback || noop, - args = arguments - if (parent.oldValue && parent.tagName === "SELECT") { //fix #503 - avalon(parent).val(parent.oldValue.split(",")) - } - callback.apply(parent, args) - } -} -"with,each".replace(rword, function (name) { - bindingHandlers[name] = bindingHandlers.repeat -}) - -function shimController(data, transation, proxy, fragments) { - var content = data.template.cloneNode(true) - var nodes = avalon.slice(content.childNodes) - content.insertBefore(DOC.createComment(data.signature), content.firstChild) - transation.appendChild(content) - var nv = [proxy].concat(data.vmodels) - var fragment = { - nodes: nodes, - vmodels: nv - } - fragments.push(fragment) -} - -function getComments(data) { - var ret = [] - var nodes = data.element.parentNode.childNodes - for(var i= 0, node; node = nodes[i++];){ - if(node.nodeValue === data.signature){ - ret.push( node ) - }else if(node.nodeValue === data.signature+":end"){ - break - } - } - return ret -} - - -//移除掉start与end之间的节点(保留end) -function sweepNodes(start, end, callback) { - while (true) { - var node = end.previousSibling - if (!node) - break - node.parentNode.removeChild(node) - callback && callback.call(node) - if (node === start) { - break - } - } -} - -// 为ms-each,ms-with, ms-repeat会创建一个代理VM, -// 通过它们保持一个下上文,让用户能调用$index,$first,$last,$remove,$key,$val,$outer等属性与方法 -// 所有代理VM的产生,消费,收集,存放通过xxxProxyFactory,xxxProxyAgent, recycleProxies,xxxProxyPool实现 -var withProxyPool = [] -function withProxyFactory() { - var proxy = modelFactory({ - $key: "", - $outer: {}, - $host: {}, - $val: { - get: function () { - return this.$host[this.$key] - }, - set: function (val) { - this.$host[this.$key] = val - } - } - }, { - $val: 1 - }) - proxy.$id = generateID("$proxy$with") - return proxy -} - -function withProxyAgent(proxy, key, data) { - proxy = proxy || withProxyPool.pop() - if (!proxy) { - proxy = withProxyFactory() - } else { - proxy.$reinitialize() - } - var host = data.$repeat - proxy.$key = key - proxy.$host = host - proxy.$outer = data.$outer - if (host.$events) { - proxy.$events.$val = host.$events[key] - } else { - proxy.$events = {} - } - return proxy -} - - -function recycleProxies(proxies) { - eachProxyRecycler(proxies) -} -function eachProxyRecycler(proxies) { - proxies.forEach(function (proxy) { - proxyRecycler(proxy, eachProxyPool) - }) - proxies.length = 0 -} - - -var eachProxyPool = [] -function eachProxyFactory(name) { - var source = { - $host: [], - $outer: {}, - $index: 0, - $first: false, - $last: false, - $remove: avalon.noop - } - source[name] = { - get: function () { - var e = this.$events - var array = e.$index - e.$index = e[name] //#817 通过$index为el收集依赖 - try { - return this.$host[this.$index] - } finally { - e.$index = array - } - }, - set: function (val) { - try { - var e = this.$events - var array = e.$index - e.$index = [] - this.$host.set(this.$index, val) - } finally { - e.$index = array - } - } - } - var second = { - $last: 1, - $first: 1, - $index: 1 - } - var proxy = modelFactory(source, second) - proxy.$id = generateID("$proxy$each") - return proxy -} - -function eachProxyAgent(index, data) { - var param = data.param || "el", - proxy - for (var i = 0, n = eachProxyPool.length; i < n; i++) { - var candidate = eachProxyPool[i] - if (candidate && candidate.hasOwnProperty(param)) { - proxy = candidate - eachProxyPool.splice(i, 1) - } - } - if (!proxy) { - proxy = eachProxyFactory(param) - } - var host = data.$repeat - var last = host.length - 1 - proxy.$index = index - proxy.$first = index === 0 - proxy.$last = index === last - proxy.$host = host - proxy.$outer = data.$outer - proxy.$remove = function () { - return host.removeAt(proxy.$index) - } - return proxy -} - - -function proxyRecycler(proxy, proxyPool) { - for (var i in proxy.$events) { - if (Array.isArray(proxy.$events[i])) { - proxy.$events[i].forEach(function (data) { - if (typeof data === "object") - disposeData(data) - })// jshint ignore:line - proxy.$events[i].length = 0 - } - } - proxy.$host = proxy.$outer = {} - if (proxyPool.unshift(proxy) > kernel.maxRepeatSize) { - proxyPool.pop() - } -} -/********************************************************************* - * 各种指令 * - **********************************************************************/ -//ms-skip绑定已经在scanTag 方法中实现 -// bindingHandlers.text 定义在if.js -bindingExecutors.text = function(val, elem) { - val = val == null ? "" : val //不在页面上显示undefined null - if (elem.nodeType === 3) { //绑定在文本节点上 - try { //IE对游离于DOM树外的节点赋值会报错 - elem.data = val - } catch (e) {} - } else { //绑定在特性节点上 - if ("textContent" in elem) { - elem.textContent = val - } else { - elem.innerText = val - } - } -} -function parseDisplay(nodeName, val) { - //用于取得此类标签的默认display值 - var key = "_" + nodeName - if (!parseDisplay[key]) { - var node = DOC.createElement(nodeName) - root.appendChild(node) - if (W3C) { - val = getComputedStyle(node, null).display - } else { - val = node.currentStyle.display - } - root.removeChild(node) - parseDisplay[key] = val - } - return parseDisplay[key] -} - -avalon.parseDisplay = parseDisplay - -bindingHandlers.visible = function(data, vmodels) { - var elem = data.element - var display = elem.style.display - if(display === "none"){ - display = parseDisplay(elem.nodeName) - } - data.display = display - parseExprProxy(data.value, vmodels, data) -} - -bindingExecutors.visible = function(val, elem, data) { - elem.style.display = val ? data.display : "none" -} -bindingHandlers.widget = function(data, vmodels) { - var args = data.value.match(rword) - var elem = data.element - var widget = args[0] - var id = args[1] - if (!id || id === "$") { //没有定义或为$时,取组件名+随机数 - id = generateID(widget) - } - var optName = args[2] || widget //没有定义,取组件名 - var constructor = avalon.ui[widget] - if (typeof constructor === "function") { //ms-widget="tabs,tabsAAA,optname" - vmodels = elem.vmodels || vmodels - for (var i = 0, v; v = vmodels[i++];) { - if (v.hasOwnProperty(optName) && typeof v[optName] === "object") { - var vmOptions = v[optName] - vmOptions = vmOptions.$model || vmOptions - break - } - } - if (vmOptions) { - var wid = vmOptions[widget + "Id"] - if (typeof wid === "string") { - log("warning!不再支持" + widget + "Id") - id = wid - } - } - //抽取data-tooltip-text、data-tooltip-attr属性,组成一个配置对象 - var widgetData = avalon.getWidgetData(elem, widget) - data.value = [widget, id, optName].join(",") - data[widget + "Id"] = id - data.evaluator = noop - elem.msData["ms-widget-id"] = id - var options = data[widget + "Options"] = avalon.mix({}, constructor.defaults, vmOptions || {}, widgetData) - elem.removeAttribute("ms-widget") - var vmodel = constructor(elem, data, vmodels) || {} //防止组件不返回VM - if (vmodel.$id) { - avalon.vmodels[id] = vmodel - createSignalTower(elem, vmodel) - try { - vmodel.$init(function() { - avalon.scan(elem, [vmodel].concat(vmodels)) - if (typeof options.onInit === "function") { - options.onInit.call(elem, vmodel, options, vmodels) - } - }) - } catch (e) {} - data.rollback = function() { - try { - vmodel.widgetElement = null - vmodel.$remove() - } catch (e) {} - elem.msData = {} - delete avalon.vmodels[vmodel.$id] - } - injectDisposeQueue(data, widgetList) - if (window.chrome) { - elem.addEventListener("DOMNodeRemovedFromDocument", function() { - setTimeout(rejectDisposeQueue) - }) - } - } else { - avalon.scan(elem, vmodels) - } - } else if (vmodels.length) { //如果该组件还没有加载,那么保存当前的vmodels - elem.vmodels = vmodels - } -} -var widgetList = [] -//不存在 bindingExecutors.widget -/********************************************************************* - * 自带过滤器 * - **********************************************************************/ -var rscripts = /]*>([\S\s]*?)<\/script\s*>/gim -var ron = /\s+(on[^=\s]+)(?:=("[^"]*"|'[^']*'|[^\s>]+))?/g -var ropen = /<\w+\b(?:(["'])[^"]*?(\1)|[^>])*>/ig -var rsanitize = { - a: /\b(href)\=("javascript[^"]*"|'javascript[^']*')/ig, - img: /\b(src)\=("javascript[^"]*"|'javascript[^']*')/ig, - form: /\b(action)\=("javascript[^"]*"|'javascript[^']*')/ig -} -var rsurrogate = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g -var rnoalphanumeric = /([^\#-~| |!])/g; - -function numberFormat(number, decimals, point, thousands) { - //form http://phpjs.org/functions/number_format/ - //number 必需,要格式化的数字 - //decimals 可选,规定多少个小数位。 - //point 可选,规定用作小数点的字符串(默认为 . )。 - //thousands 可选,规定用作千位分隔符的字符串(默认为 , ),如果设置了该参数,那么所有其他参数都是必需的。 - number = (number + '') - .replace(/[^0-9+\-Ee.]/g, '') - var n = !isFinite(+number) ? 0 : +number, - prec = !isFinite(+decimals) ? 3 : Math.abs(decimals), - sep = thousands || ",", - dec = point || ".", - s = '', - toFixedFix = function(n, prec) { - var k = Math.pow(10, prec) - return '' + (Math.round(n * k) / k) - .toFixed(prec) - } - // Fix for IE parseFloat(0.55).toFixed(0) = 0; - s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)) - .split('.') - if (s[0].length > 3) { - s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep) - } - if ((s[1] || '') - .length < prec) { - s[1] = s[1] || '' - s[1] += new Array(prec - s[1].length + 1) - .join('0') - } - return s.join(dec) -} - - -var filters = avalon.filters = { - uppercase: function(str) { - return str.toUpperCase() - }, - lowercase: function(str) { - return str.toLowerCase() - }, - truncate: function(str, length, truncation) { - //length,新字符串长度,truncation,新字符串的结尾的字段,返回新字符串 - length = length || 30 - truncation = typeof truncation === "string" ? truncation : "..." - return str.length > length ? str.slice(0, length - truncation.length) + truncation : String(str) - }, - $filter: function(val) { - for (var i = 1, n = arguments.length; i < n; i++) { - var array = arguments[i] - var fn = avalon.filters[array.shift()] - if (typeof fn === "function") { - var arr = [val].concat(array) - val = fn.apply(null, arr) - } - } - return val - }, - camelize: camelize, - //https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet - // chrome - // chrome - // IE67chrome - // IE67chrome - // IE67chrome - sanitize: function(str) { - return str.replace(rscripts, "").replace(ropen, function(a, b) { - var match = a.toLowerCase().match(/<(\w+)\s/) - if (match) { //处理a标签的href属性,img标签的src属性,form标签的action属性 - var reg = rsanitize[match[1]] - if (reg) { - a = a.replace(reg, function(s, name, value) { - var quote = value.charAt(0) - return name + "=" + quote + "javascript:void(0)" + quote// jshint ignore:line - }) - } - } - return a.replace(ron, " ").replace(/\s+/g, " ") //移除onXXX事件 - }) - }, - escape: function(str) { - //将字符串经过 str 转义得到适合在页面中显示的内容, 例如替换 < 为 < - return String(str). - replace(/&/g, '&'). - replace(rsurrogate, function(value) { - var hi = value.charCodeAt(0) - var low = value.charCodeAt(1) - return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';' - }). - replace(rnoalphanumeric, function(value) { - return '&#' + value.charCodeAt(0) + ';' - }). - replace(//g, '>') - }, - currency: function(amount, symbol, fractionSize) { - return (symbol || "\uFFE5") + numberFormat(amount, isFinite(fractionSize) ? fractionSize : 2) - }, - number: numberFormat -} -/* - 'yyyy': 4 digit representation of year (e.g. AD 1 => 0001, AD 2010 => 2010) - 'yy': 2 digit representation of year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10) - 'y': 1 digit representation of year, e.g. (AD 1 => 1, AD 199 => 199) - 'MMMM': Month in year (January-December) - 'MMM': Month in year (Jan-Dec) - 'MM': Month in year, padded (01-12) - 'M': Month in year (1-12) - 'dd': Day in month, padded (01-31) - 'd': Day in month (1-31) - 'EEEE': Day in Week,(Sunday-Saturday) - 'EEE': Day in Week, (Sun-Sat) - 'HH': Hour in day, padded (00-23) - 'H': Hour in day (0-23) - 'hh': Hour in am/pm, padded (01-12) - 'h': Hour in am/pm, (1-12) - 'mm': Minute in hour, padded (00-59) - 'm': Minute in hour (0-59) - 'ss': Second in minute, padded (00-59) - 's': Second in minute (0-59) - 'a': am/pm marker - 'Z': 4 digit (+sign) representation of the timezone offset (-1200-+1200) - format string can also be one of the following predefined localizable formats: - - 'medium': equivalent to 'MMM d, y h:mm:ss a' for en_US locale (e.g. Sep 3, 2010 12:05:08 pm) - 'short': equivalent to 'M/d/yy h:mm a' for en_US locale (e.g. 9/3/10 12:05 pm) - 'fullDate': equivalent to 'EEEE, MMMM d,y' for en_US locale (e.g. Friday, September 3, 2010) - 'longDate': equivalent to 'MMMM d, y' for en_US locale (e.g. September 3, 2010 - 'mediumDate': equivalent to 'MMM d, y' for en_US locale (e.g. Sep 3, 2010) - 'shortDate': equivalent to 'M/d/yy' for en_US locale (e.g. 9/3/10) - 'mediumTime': equivalent to 'h:mm:ss a' for en_US locale (e.g. 12:05:08 pm) - 'shortTime': equivalent to 'h:mm a' for en_US locale (e.g. 12:05 pm) - */ -new function() {// jshint ignore:line - function toInt(str) { - return parseInt(str, 10) || 0 - } - - function padNumber(num, digits, trim) { - var neg = "" - if (num < 0) { - neg = '-' - num = -num - } - num = "" + num - while (num.length < digits) - num = "0" + num - if (trim) - num = num.substr(num.length - digits) - return neg + num - } - - function dateGetter(name, size, offset, trim) { - return function(date) { - var value = date["get" + name]() - if (offset > 0 || value > -offset) - value += offset - if (value === 0 && offset === -12) { - value = 12 - } - return padNumber(value, size, trim) - } - } - - function dateStrGetter(name, shortForm) { - return function(date, formats) { - var value = date["get" + name]() - var get = (shortForm ? ("SHORT" + name) : name).toUpperCase() - return formats[get][value] - } - } - - function timeZoneGetter(date) { - var zone = -1 * date.getTimezoneOffset() - var paddedZone = (zone >= 0) ? "+" : "" - paddedZone += padNumber(Math[zone > 0 ? "floor" : "ceil"](zone / 60), 2) + padNumber(Math.abs(zone % 60), 2) - return paddedZone - } - //取得上午下午 - - function ampmGetter(date, formats) { - return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1] - } - var DATE_FORMATS = { - yyyy: dateGetter("FullYear", 4), - yy: dateGetter("FullYear", 2, 0, true), - y: dateGetter("FullYear", 1), - MMMM: dateStrGetter("Month"), - MMM: dateStrGetter("Month", true), - MM: dateGetter("Month", 2, 1), - M: dateGetter("Month", 1, 1), - dd: dateGetter("Date", 2), - d: dateGetter("Date", 1), - HH: dateGetter("Hours", 2), - H: dateGetter("Hours", 1), - hh: dateGetter("Hours", 2, -12), - h: dateGetter("Hours", 1, -12), - mm: dateGetter("Minutes", 2), - m: dateGetter("Minutes", 1), - ss: dateGetter("Seconds", 2), - s: dateGetter("Seconds", 1), - sss: dateGetter("Milliseconds", 3), - EEEE: dateStrGetter("Day"), - EEE: dateStrGetter("Day", true), - a: ampmGetter, - Z: timeZoneGetter - } - var rdateFormat = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/ - var raspnetjson = /^\/Date\((\d+)\)\/$/ - filters.date = function(date, format) { - var locate = filters.date.locate, - text = "", - parts = [], - fn, match - format = format || "mediumDate" - format = locate[format] || format - if (typeof date === "string") { - if (/^\d+$/.test(date)) { - date = toInt(date) - } else if (raspnetjson.test(date)) { - date = +RegExp.$1 - } else { - var trimDate = date.trim() - var dateArray = [0, 0, 0, 0, 0, 0, 0] - var oDate = new Date(0) - //取得年月日 - trimDate = trimDate.replace(/^(\d+)\D(\d+)\D(\d+)/, function(_, a, b, c) { - var array = c.length === 4 ? [c, a, b] : [a, b, c] - dateArray[0] = toInt(array[0]) //å¹´ - dateArray[1] = toInt(array[1]) - 1 //月 - dateArray[2] = toInt(array[2]) //日 - return "" - }) - var dateSetter = oDate.setFullYear - var timeSetter = oDate.setHours - trimDate = trimDate.replace(/[T\s](\d+):(\d+):?(\d+)?\.?(\d)?/, function(_, a, b, c, d) { - dateArray[3] = toInt(a) //小时 - dateArray[4] = toInt(b) //分钟 - dateArray[5] = toInt(c) //秒 - if (d) { //毫秒 - dateArray[6] = Math.round(parseFloat("0." + d) * 1000) - } - return "" - }) - var tzHour = 0 - var tzMin = 0 - trimDate = trimDate.replace(/Z|([+-])(\d\d):?(\d\d)/, function(z, symbol, c, d) { - dateSetter = oDate.setUTCFullYear - timeSetter = oDate.setUTCHours - if (symbol) { - tzHour = toInt(symbol + c) - tzMin = toInt(symbol + d) - } - return "" - }) - - dateArray[3] -= tzHour - dateArray[4] -= tzMin - dateSetter.apply(oDate, dateArray.slice(0, 3)) - timeSetter.apply(oDate, dateArray.slice(3)) - date = oDate - } - } - if (typeof date === "number") { - date = new Date(date) - } - if (avalon.type(date) !== "date") { - return - } - while (format) { - match = rdateFormat.exec(format) - if (match) { - parts = parts.concat(match.slice(1)) - format = parts.pop() - } else { - parts.push(format) - format = null - } - } - parts.forEach(function(value) { - fn = DATE_FORMATS[value] - text += fn ? fn(date, locate) : value.replace(/(^'|'$)/g, "").replace(/''/g, "'") - }) - return text - } - var locate = { - AMPMS: { - 0: "上午", - 1: "下午" - }, - DAY: { - 0: "星期日", - 1: "星期一", - 2: "星期二", - 3: "星期三", - 4: "星期四", - 5: "星期五", - 6: "星期六" - }, - MONTH: { - 0: "1月", - 1: "2月", - 2: "3月", - 3: "4月", - 4: "5月", - 5: "6月", - 6: "7月", - 7: "8月", - 8: "9月", - 9: "10月", - 10: "11月", - 11: "12月" - }, - SHORTDAY: { - "0": "周日", - "1": "周一", - "2": "周二", - "3": "周三", - "4": "周四", - "5": "周五", - "6": "周六" - }, - fullDate: "yå¹´M月d日EEEE", - longDate: "yå¹´M月d日", - medium: "yyyy-M-d H:mm:ss", - mediumDate: "yyyy-M-d", - mediumTime: "H:mm:ss", - "short": "yy-M-d ah:mm", - shortDate: "yy-M-d", - shortTime: "ah:mm" - } - locate.SHORTMONTH = locate.MONTH - filters.date.locate = locate -}// jshint ignore:line -/********************************************************************* - * AMD加载器 * - **********************************************************************/ -//https://www.devbridge.com/articles/understanding-amd-requirejs/ -//http://maxogden.com/nested-dependencies.html -var modules = avalon.modules = { - "domReady!": { - exports: avalon, - state: 3 - }, - "avalon": { - exports: avalon, - state: 4 - } -} -//Object(modules[id]).state拥有如下值 -// undefined 没有定义 -// 1(send) 已经发出请求 -// 2(loading) 已经被执行但还没有执行完成,在这个阶段define方法会被执行 -// 3(loaded) 执行完毕,通过onload/onreadystatechange回调判定,在这个阶段checkDeps方法会执行 -// 4(execute) 其依赖也执行完毕, 值放到exports对象上,在这个阶段fireFactory方法会执行 -modules.exports = modules.avalon - -new function () {// jshint ignore:line - var loadings = [] //正在加载中的模块列表 - var factorys = [] //放置define方法的factory函数 - var rjsext = /\.js$/i - function makeRequest(name, config) { -//1. 去掉资源前缀 - var res = "js" - name = name.replace(/^(\w+)\!/, function (a, b) { - res = b - return "" - }) - if (res === "ready") { - log("debug: ready!已经被废弃,请使用domReady!") - res = "domReady" - } -//2. 去掉querystring, hash - var query = "" - name = name.replace(rquery, function (a) { - query = a - return "" - }) - //3. 去掉扩展名 - var suffix = "." + res - var ext = /js|css/.test(suffix) ? suffix : "" - name = name.replace(/\.[a-z0-9]+$/g, function (a) { - if (a === suffix) { - ext = a - return "" - } else { - return a - } - }) - var req = avalon.mix({ - query: query, - ext: ext, - res: res, - name: name, - toUrl: toUrl - }, config) - req.toUrl(name) - return req - } - - function fireRequest(req) { - var name = req.name - var res = req.res - //1. 如果该模块已经发出请求,直接返回 - var module = modules[name] - var urlNoQuery = name && req.urlNoQuery - if (module && module.state >= 1) { - return name - } - module = modules[urlNoQuery] - if (module && module.state >= 3) { - innerRequire(module.deps || [], module.factory, urlNoQuery) - return urlNoQuery - } - if (name && !module) { - module = modules[urlNoQuery] = { - id: urlNoQuery, - state: 1 //send - } - var wrap = function (obj) { - resources[res] = obj - obj.load(name, req, function (a) { - if (arguments.length && a !== void 0) { - module.exports = a - } - module.state = 4 - checkDeps() - }) - } - - if (!resources[res]) { - innerRequire([res], wrap) - } else { - wrap(resources[res]) - } - } - return name ? urlNoQuery : res + "!" - } - -//核心API之一 require - var requireQueue = [] - var isUserFirstRequire = false - innerRequire = avalon.require = function (array, factory, parentUrl, defineConfig) { - if (!isUserFirstRequire) { - requireQueue.push(avalon.slice(arguments)) - if (arguments.length <= 2) { - isUserFirstRequire = true - var queue = requireQueue.splice(0, requireQueue.length), args - while (args = queue.shift()) { - innerRequire.apply(null, args) - } - } - return - } - - if (!Array.isArray(array)) { - avalon.error("require方法的第一个参数应为数组 " + array) - } - var deps = [] // 放置所有依赖项的完整路径 - var uniq = {} - var id = parentUrl || "callback" + setTimeout("1")// jshint ignore:line - defineConfig = defineConfig || {} - defineConfig.baseUrl = kernel.baseUrl - var isBuilt = !!defineConfig.built - if (parentUrl) { - defineConfig.parentUrl = parentUrl.substr(0, parentUrl.lastIndexOf("/")) - defineConfig.mapUrl = parentUrl.replace(rjsext, "") - } - if (isBuilt) { - var req = makeRequest(defineConfig.defineName, defineConfig) - id = req.urlNoQuery - } else { - array.forEach(function (name) { - var req = makeRequest(name, defineConfig) - var url = fireRequest(req) //加载资源,并返回该资源的完整地址 - if (url) { - if (!uniq[url]) { - deps.push(url) - uniq[url] = "司徒正美" //去重 - } - } - }) - } - - var module = modules[id] - if (!module || module.state !== 4) { - modules[id] = { - id: id, - deps: isBuilt ? array.concat() : deps, - factory: factory || noop, - state: 3 - } - } - if (!module) { - //如果此模块是定义在另一个JS文件中, 那必须等该文件加载完毕, 才能放到检测列队中 - loadings.push(id) - } - checkDeps() - } - -//核心API之二 require - innerRequire.define = function (name, deps, factory) { //模块名,依赖列表,模块本身 - if (typeof name !== "string") { - factory = deps - deps = name - name = "anonymous" - } - if (!Array.isArray(deps)) { - factory = deps - deps = [] - } - var config = { - built: !isUserFirstRequire, //用r.js打包后,所有define会放到requirejs之前 - defineName: name - } - var args = [deps, factory, config] - factory.require = function (url) { - args.splice(2, 0, url) - if (modules[url]) { - modules[url].state = 3 //loaded - var isCycle = false - try { - isCycle = checkCycle(modules[url].deps, url) - } catch (e) { - } - if (isCycle) { - avalon.error(url + "模块与之前的模块存在循环依赖,请不要直接用script标签引入" + url + "模块") - } - } - delete factory.require //释放内存 - innerRequire.apply(null, args) //0,1,2 --> 1,2,0 - } -//根据标准,所有遵循W3C标准的浏览器,script标签会按标签的出现顺序执行。 -//老的浏览器中,加载也是按顺序的:一个文件下载完成后,才开始下载下一个文件。 -//较新的浏览器中(IE8+ 、FireFox3.5+ 、Chrome4+ 、Safari4+),为了减小请求时间以优化体验, -//下载可以是并行的,但是执行顺序还是按照标签出现的顺序。 -//但如果script标签是动态插入的, 就未必按照先请求先执行的原则了,目测只有firefox遵守 -//唯一比较一致的是,IE10+及其他标准浏览器,一旦开始解析脚本, 就会一直堵在那里,直接脚本解析完毕 -//亦即,先进入loading阶段的script标签(模块)必然会先进入loaded阶段 - var url = config.built ? "unknown" : getCurrentScript() - if (url) { - var module = modules[url] - if (module) { - module.state = 2 - } - factory.require(url) - } else {//合并前后的safari,合并后的IE6-9走此分支 - factorys.push(factory) - } - } -//核心API之三 require.config(settings) - innerRequire.config = kernel - //核心API之四 define.amd 标识其符合AMD规范 - innerRequire.define.amd = modules - - //==========================对用户配置项进行再加工========================== - var allpaths = kernel["orig.paths"] = {} - var allmaps = kernel["orig.map"] = {} - var allpackages = kernel["packages"] = [] - var allargs = kernel["orig.args"] = {} - avalon.mix(plugins, { - paths: function (hash) { - avalon.mix(allpaths, hash) - kernel.paths = makeIndexArray(allpaths) - }, - map: function (hash) { - avalon.mix(allmaps, hash) - var list = makeIndexArray(allmaps, 1, 1) - avalon.each(list, function (_, item) { - item.val = makeIndexArray(item.val) - }) - kernel.map = list - }, - packages: function (array) { - array = array.concat(allpackages) - var uniq = {} - var ret = [] - for (var i = 0, pkg; pkg = array[i++]; ) { - pkg = typeof pkg === "string" ? {name: pkg} : pkg - var name = pkg.name - if (!uniq[name]) { - var url = joinPath(pkg.location || name, pkg.main || "main") - url = url.replace(rjsext, "") - ret.push(pkg) - uniq[name] = pkg.location = url - pkg.reg = makeMatcher(name) - } - } - kernel.packages = ret.sort() - }, - urlArgs: function (hash) { - if (typeof hash === "string") { - hash = {"*": hash} - } - avalon.mix(allargs, hash) - kernel.urlArgs = makeIndexArray(allargs, 1) - }, - baseUrl: function (url) { - if (!isAbsUrl(url)) { - var baseElement = head.getElementsByTagName("base")[0] - if (baseElement) { - head.removeChild(baseElement) - } - var node = DOC.createElement("a") - node.href = url - url = getFullUrl(node, "href") - if (baseElement) { - head.insertBefore(baseElement, head.firstChild) - } - } - if (url.length > 3) - kernel.baseUrl = url - }, - shim: function (obj) { - for (var i in obj) { - var value = obj[i] - if (Array.isArray(value)) { - value = obj[i] = { - deps: value - } - } - if (!value.exportsFn && (value.exports || value.init)) { - value.exportsFn = makeExports(value) - } - } - kernel.shim = obj - } - - }) - - - //==============================内部方法================================= - function checkCycle(deps, nick) { - //检测是否存在循环依赖 - for (var i = 0, id; id = deps[i++]; ) { - if (modules[id].state !== 4 && - (id === nick || checkCycle(modules[id].deps, nick))) { - return true - } - } - } - - function checkFail(node, onError, fuckIE) { - var id = trimQuery(node.src) //检测是否死链 - node.onload = node.onreadystatechange = node.onerror = null - if (onError || (fuckIE && modules[id] && !modules[id].state)) { - setTimeout(function () { - head.removeChild(node) - node = null // 处理旧式IE下的循环引用问题 - }) - log("debug: 加载 " + id + " 失败" + onError + " " + (!modules[id].state)) - } else { - return true - } - } - - function checkDeps() { - //检测此JS模块的依赖是否都已安装完毕,是则安装自身 - loop: for (var i = loadings.length, id; id = loadings[--i]; ) { - var obj = modules[id], - deps = obj.deps - if (!deps) - continue - for (var j = 0, key; key = deps[j]; j++) { - if (Object(modules[key]).state !== 4) { - continue loop - } - } - //如果deps是空对象或者其依赖的模块的状态都是2 - if (obj.state !== 4) { - loadings.splice(i, 1) //必须先移除再安装,防止在IE下DOM树建完后手动刷新页面,会多次执行它 - fireFactory(obj.id, obj.deps, obj.factory) - checkDeps() //如果成功,则再执行一次,以防有些模块就差本模块没有安装好 - } - } - } - - var rreadyState = /complete|loaded/ - function loadJS(url, id, callback) { - //通过script节点加载目标模块 - var node = DOC.createElement("script") - node.className = subscribers //让getCurrentScript只处理类名为subscribers的script节点 - var supportLoad = "onload" in node - var onEvent = supportLoad ? "onload" : "onreadystatechange" - function onload() { - var factory = factorys.pop() - factory && factory.require(id) - if (callback) { - callback() - } - if (checkFail(node, false, !supportLoad)) { - log("debug: 已成功加载 " + url) - id && loadings.push(id) - checkDeps() - } - } - var index = 0, loadID - node[onEvent] = supportLoad ? onload : function () { - if (rreadyState.test(node.readyState)) { - ++index - if (index === 1) { - loadID = setTimeout(onload, 500) - } else { - clearTimeout(loadID) - onload() - } - } - } - node.onerror = function () { - checkFail(node, true) - } - - head.insertBefore(node, head.firstChild) //chrome下第二个参数不能为null - node.src = url //插入到head的第一个节点前,防止IE6下head标签没闭合前使用appendChild抛错 - log("debug: 正准备加载 " + url) //更重要的是IE6下可以收窄getCurrentScript的寻找范围 - } - - var resources = innerRequire.plugins = { - //三大常用资源插件 js!, css!, text!, ready! - ready: { - load: noop - }, - js: { - load: function (name, req, onLoad) { - var url = req.url - var id = req.urlNoQuery - var shim = kernel.shim[name.replace(rjsext, "")] - if (shim) { //shim机制 - innerRequire(shim.deps || [], function () { - var args = avalon.slice(arguments) - loadJS(url, id, function () { - onLoad(shim.exportsFn ? shim.exportsFn.apply(0, args) : void 0) - }) - }) - } else { - loadJS(url, id) - } - } - }, - css: { - load: function (name, req, onLoad) { - var url = req.url - var node = DOC.createElement("link") - node.rel = "stylesheet" - node.href = url - head.insertBefore(node, head.firstChild) - log("debug: 已成功加载 " + url) - onLoad() - } - }, - text: { - load: function (name, req, onLoad) { - var url = req.url - var xhr = getXHR() - xhr.onreadystatechange = function () { - if (xhr.readyState === 4) { - var status = xhr.status; - if (status > 399 && status < 600) { - avalon.error(url + " 对应资源不存在或没有开启 CORS") - } else { - log("debug: 已成功加载 " + url) - onLoad(xhr.responseText) - } - } - } - var time = "_=" + (new Date() - 0) - var _url = url.indexOf("?") === -1 ? url + "?" + time : url + "&" + time - xhr.open("GET", _url, true) - if ("withCredentials" in xhr) {//这是处理跨域 - xhr.withCredentials = true - } - xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest")//告诉后端这是AJAX请求 - xhr.send() - log("debug: 正准备加载 " + url) - } - } - } - innerRequire.checkDeps = checkDeps - - var rquery = /(\?[^#]*)$/ - function trimQuery(url) { - return (url || "").replace(rquery, "") - } - - function isAbsUrl(path) { - //http://stackoverflow.com/questions/10687099/how-to-test-if-a-url-string-is-absolute-or-relative - return /^(?:[a-z]+:)?\/\//i.test(String(path)) - } - - function getFullUrl(node, src) { - return"1"[0] ? node[src] : node.getAttribute(src, 4) - } - - function getCurrentScript() { - // inspireb by https://github.com/samyk/jiagra/blob/master/jiagra.js - var stack - try { - a.b.c() //强制报错,以便捕获e.stack - } catch (e) { //safari5的sourceURL,firefox的fileName,它们的效果与e.stack不一样 - stack = e.stack - if (!stack && window.opera) { - //opera 9没有e.stack,但有e.Backtrace,但不能直接取得,需要对e对象转字符串进行抽取 - stack = (String(e).match(/of linked script \S+/g) || []).join(" ") - } - } - if (stack) { - /**e.stack最后一行在所有支持的浏览器大致如下: - *chrome23: - * at http://113.93.50.63/data.js:4:1 - *firefox17: - *@http://113.93.50.63/query.js:4 - *opera12:http://www.oldapps.com/opera.php?system=Windows_XP - *@http://113.93.50.63/data.js:4 - *IE10: - * at Global code (http://113.93.50.63/data.js:4:1) - * //firefox4+ 可以用document.currentScript - */ - stack = stack.split(/[@ ]/g).pop() //取得最后一行,最后一个空格或@之后的部分 - stack = stack[0] === "(" ? stack.slice(1, -1) : stack.replace(/\s/, "") //去掉换行符 - return trimQuery(stack.replace(/(:\d+)?:\d+$/i, "")) //去掉行号与或许存在的出错字符起始位置 - } - var nodes = head.getElementsByTagName("script") //只在head标签中寻找 - for (var i = nodes.length, node; node = nodes[--i]; ) { - if (node.className === subscribers && node.readyState === "interactive") { - var url = getFullUrl(node, "src") - return node.className = trimQuery(url) - } - } - } - - var rcallback = /^callback\d+$/ - function fireFactory(id, deps, factory) { - var module = Object(modules[id]) - module.state = 4 - for (var i = 0, array = [], d; d = deps[i++]; ) { - if (d === "exports") { - var obj = module.exports || (module.exports = {}) - array.push(obj) - } else { - array.push(modules[d].exports) - } - } - try { - var ret = factory.apply(window, array) - } catch (e) { - log("执行[" + id + "]模块的factory抛错: ", e) - } - if (ret !== void 0) { - module.exports = ret - } - if (rcallback.test(id)) { - delete modules[id] - } - delete module.factory - return ret - } - function toUrl(id) { - if (id.indexOf(this.res + "!") === 0) { - id = id.slice(this.res.length + 1) //处理define("css!style",[], function(){})的情况 - } - var url = id - //1. 是否命中paths配置项 - var usePath = 0 - var baseUrl = this.baseUrl - var rootUrl = this.parentUrl || baseUrl - eachIndexArray(id, kernel.paths, function (value, key) { - url = url.replace(key, value) - usePath = 1 - }) - //2. 是否命中packages配置项 - if (!usePath) { - eachIndexArray(id, kernel.packages, function (value, key, item) { - url = url.replace(item.name, item.location) - }) - } - //3. 是否命中map配置项 - if (this.mapUrl) { - eachIndexArray(this.mapUrl, kernel.map, function (array) { - eachIndexArray(url, array, function (mdValue, mdKey) { - url = url.replace(mdKey, mdValue) - rootUrl = baseUrl - }) - }) - } - var ext = this.ext - if (ext && usePath && url.slice(-ext.length) === ext) { - url = url.slice(0, -ext.length) - } - //4. 转换为绝对路径 - if (!isAbsUrl(url)) { - rootUrl = this.built || /^\w/.test(url) ? baseUrl : rootUrl - url = joinPath(rootUrl, url) - } - //5. 还原扩展名,query - var urlNoQuery = url + ext - url = urlNoQuery + this.query - //6. 处理urlArgs - eachIndexArray(id, kernel.urlArgs, function (value) { - url += (url.indexOf("?") === -1 ? "?" : "&") + value; - }) - this.url = url - return this.urlNoQuery = urlNoQuery - } - - function makeIndexArray(hash, useStar, part) { - //创建一个经过特殊算法排好序的数组 - var index = hash2array(hash, useStar, part) - index.sort(descSorterByName) - return index - } - - function makeMatcher(prefix) { - return new RegExp('^' + prefix + '(/|$)') - } - - function makeExports(value) { - return function () { - var ret - if (value.init) { - ret = value.init.apply(window, arguments) - } - return ret || (value.exports && getGlobal(value.exports)) - } - } - - - function hash2array(hash, useStar, part) { - var array = []; - for (var key in hash) { - if (ohasOwn.call(hash, key)) { - var item = { - name: key, - val: hash[key] - } - array.push(item) - item.reg = key === "*" && useStar ? /^/ : makeMatcher(key) - if (part && key !== "*") { - item.reg = new RegExp('\/' + key.replace(/^\//, "") + '(/|$)') - } - } - } - return array - } - - function eachIndexArray(moduleID, array, matcher) { - array = array || [] - for (var i = 0, el; el = array[i++]; ) { - if (el.reg.test(moduleID)) { - matcher(el.val, el.name, el) - return false - } - } - } - // 根据元素的name项进行数组字符数逆序的排序函数 - function descSorterByName(a, b) { - var aaa = a.name - var bbb = b.name - if (bbb === "*") { - return -1 - } - if (aaa === "*") { - return 1 - } - return bbb.length - aaa.length - } - - var rdeuce = /\/\w+\/\.\./ - function joinPath(a, b) { - if (a.charAt(a.length - 1) !== "/") { - a += "/" - } - if (b.slice(0, 2) === "./") { //相对于兄弟路径 - return a + b.slice(2) - } - if (b.slice(0, 2) === "..") { //相对于父路径 - a += b - while (rdeuce.test(a)) { - a = a.replace(rdeuce, "") - } - return a - } - if (b.slice(0, 1) === "/") { - return a + b.slice(1) - } - return a + b - } - - function getGlobal(value) { - if (!value) { - return value - } - var g = window - value.split(".").forEach(function (part) { - g = g[part] - }) - return g - } - - var mainNode = DOC.scripts[DOC.scripts.length - 1] - var dataMain = mainNode.getAttribute("data-main") - if (dataMain) { - plugins.baseUrl(dataMain) - var href = kernel.baseUrl - kernel.baseUrl = href.slice(0, href.lastIndexOf("/") + 1) - loadJS(href.replace(rjsext, "") + ".js") - } else { - var loaderUrl = trimQuery(getFullUrl(mainNode, "src")) - kernel.baseUrl = loaderUrl.slice(0, loaderUrl.lastIndexOf("/") + 1) - } -}// jshint ignore:line - -/********************************************************************* - * DOMReady * - **********************************************************************/ - -var readyList = [], isReady -var fireReady = function(fn) { - isReady = true - if (innerRequire) { - modules["domReady!"].state = 4 - innerRequire.checkDeps() - } - while(fn = readyList.shift()){ - fn(avalon) - } -} - -function doScrollCheck() { - try { //IE下通过doScrollCheck检测DOM树是否建完 - root.doScroll("left") - fireReady() - } catch (e) { - setTimeout(doScrollCheck) - } -} - -if (DOC.readyState === "complete") { - setTimeout(fireReady) //如果在domReady之外加载 -} else if (W3C) { - DOC.addEventListener("DOMContentLoaded", fireReady) -} else { - DOC.attachEvent("onreadystatechange", function() { - if (DOC.readyState === "complete") { - fireReady() - } - }) - try { - var isTop = window.frameElement === null - } catch (e) { - } - if (root.doScroll && isTop && window.external) {//fix IE iframe BUG - doScrollCheck() - } -} -avalon.bind(window, "load", fireReady) - -avalon.ready = function(fn) { - if (!isReady) { - readyList.push(fn) - } else { - fn(avalon) - } -} - -avalon.config({ - loader: true -}) - -avalon.ready(function() { - avalon.scan(DOC.body) -}) - -// Register as a named AMD module, since avalon can be concatenated with other -// files that may use define, but not via a proper concatenation script that -// understands anonymous AMD modules. A named AMD is safest and most robust -// way to register. Lowercase avalon is used because AMD module names are -// derived from file names, and Avalon is normally delivered in a lowercase -// file name. Do this after creating the global so that if an AMD module wants -// to call noConflict to hide this version of avalon, it will work. - -// Note that for maximum portability, libraries that are not avalon should -// declare themselves as anonymous modules, and avoid setting a global if an -// AMD loader is present. avalon is a special case. For more information, see -// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon - if (typeof define === "function" && define.amd) { - define("avalon", [], function() { - return avalon - }) - } -// Map over avalon in case of overwrite - var _avalon = window.avalon - avalon.noConflict = function(deep) { - if (deep && window.avalon === avalon) { - window.avalon = _avalon - } - return avalon - } -// Expose avalon identifiers, even in AMD -// and CommonJS for browser emulators - if (noGlobal === void 0) { - window.avalon = avalon - } - return avalon - -})); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/avalon/avalon.modern.js b/uiframe-iui/src/main/resources/webroot/vendor/avalon/avalon.modern.js deleted file mode 100644 index 5479d1a9..00000000 --- a/uiframe-iui/src/main/resources/webroot/vendor/avalon/avalon.modern.js +++ /dev/null @@ -1,4440 +0,0 @@ -/*================================================== - Copyright (c) 2013-2014 司徒正美 and other contributors - http://www.cnblogs.com/rubylouvre/ - https://github.com/RubyLouvre - http://weibo.com/jslouvre/ - - Released under the MIT license - avalon.modern.js 1.39 build in 2015.1.15 -______________________________ - support IE6+ and other browsers - ==================================================*/ -(function(global, factory) { - - if (typeof module === "object" && typeof module.exports === "object") { - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get avalon. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var avalon = require("avalon")(window); - module.exports = global.document ? factory(global, true) : function(w) { - if (!w.document) { - throw new Error("Avalon requires a window with a document") - } - return factory(w) - } - } else { - factory(global) - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function(window, noGlobal){ - -/********************************************************************* - * 全局变量及方法 * - **********************************************************************/ -var expose = Date.now() -//http://stackoverflow.com/questions/7290086/javascript-use-strict-and-nicks-find-global-function -var DOC = window.document -var head = DOC.head //HEAD元素 -head.insertAdjacentHTML("afterBegin", '') -var ifGroup = head.firstChild - -function log() { - if (avalon.config.debug) { -// http://stackoverflow.com/questions/8785624/how-to-safely-wrap-console-log - console.log.apply(console, arguments) - } -} - -var subscribers = "$" + expose -var otherRequire = window.require -var otherDefine = window.define -var stopRepeatAssign = false -var rword = /[^, ]+/g //切割字符串为一个个小块,以空格或豆号分开它们,结合replace实现字符串的forEach -var rcomplexType = /^(?:object|array)$/ -var rsvg = /^\[object SVG\w*Element\]$/ -var rwindow = /^\[object (?:Window|DOMWindow|global)\]$/ -var oproto = Object.prototype -var ohasOwn = oproto.hasOwnProperty -var serialize = oproto.toString -var ap = Array.prototype -var aslice = ap.slice -var Registry = {} //将函数曝光到此对象上,方便访问器收集依赖 -var W3C = window.dispatchEvent -var root = DOC.documentElement -var hyperspace = DOC.createDocumentFragment() -var cinerator = DOC.createElement("div") -var class2type = {} -"Boolean Number String Function Array Date RegExp Object Error".replace(rword, function(name) { - class2type["[object " + name + "]"] = name.toLowerCase() -}) - - -function noop() { -} - - -function oneObject(array, val) { - if (typeof array === "string") { - array = array.match(rword) || [] - } - var result = {}, - value = val !== void 0 ? val : 1 - for (var i = 0, n = array.length; i < n; i++) { - result[array[i]] = value - } - return result -} - -function createCache(maxLength) { - var keys = [] - function cache(key, value) { - if (keys.push(key) > maxLength) { - delete cache[keys.shift()] - } - return cache[key] = value; - } - return cache; -} -//生成UUID http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript -var generateID = function(prefix) { - prefix = prefix || "avalon" - return (prefix + Math.random() + Math.random()).replace(/0\./g, "") -} -function IE() { - if (window.VBArray) { - var mode = document.documentMode - return mode ? mode : window.XMLHttpRequest ? 7 : 6 - } else { - return 0 - } -} -var IEVersion = IE() -/********************************************************************* - * avalon的静态方法定义区 * - **********************************************************************/ -avalon = function(el) { //创建jQuery式的无new 实例化结构 - return new avalon.init(el) -} - -avalon.init = function(el) { - this[0] = this.element = el -} -avalon.fn = avalon.prototype = avalon.init.prototype - -avalon.type = function(obj) { //取得目标的类型 - if (obj == null) { - return String(obj) - } - // 早期的webkit内核浏览器实现了已废弃的ecma262v4标准,可以将正则字面量当作函数使用,因此typeof在判定正则时会返回function - return typeof obj === "object" || typeof obj === "function" ? - class2type[serialize.call(obj)] || "object" : - typeof obj -} - -var isFunction = function(fn) { - return serialize.call(fn) == "[object Function]" -} - -avalon.isFunction = isFunction - -avalon.isWindow = function(obj) { - return rwindow.test(serialize.call(obj)) -} - -/*判定是否是一个朴素的javascript对象(Object),不是DOM对象,不是BOM对象,不是自定义类的实例*/ - -avalon.isPlainObject = function(obj) { - // 简单的 typeof obj === "object"检测,会致使用isPlainObject(window)在opera下通不过 - return serialize.call(obj) === "[object Object]" && Object.getPrototypeOf(obj) === oproto -} - -//与jQuery.extend方法,可用于浅拷贝,深拷贝 -avalon.mix = avalon.fn.mix = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false - - // 如果第一个参数为布尔,判定是否深拷贝 - if (typeof target === "boolean") { - deep = target - target = arguments[1] || {} - i++ - } - - //确保接受方为一个复杂的数据类型 - if (typeof target !== "object" && !isFunction(target)) { - target = {} - } - - //如果只有一个参数,那么新成员添加于mix所在的对象上 - if (i === length) { - target = this - i-- - } - - for (; i < length; i++) { - //只处理非空参数 - if ((options = arguments[i]) != null) { - for (name in options) { - src = target[name] - copy = options[name] - // 防止环引用 - if (target === copy) { - continue - } - if (deep && copy && (avalon.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) { - - if (copyIsArray) { - copyIsArray = false - clone = src && Array.isArray(src) ? src : [] - - } else { - clone = src && avalon.isPlainObject(src) ? src : {} - } - - target[name] = avalon.mix(deep, clone, copy) - } else if (copy !== void 0) { - target[name] = copy - } - } - } - } - return target -} - -function _number(a, len) { //用于模拟slice, splice的效果 - a = Math.floor(a) || 0 - return a < 0 ? Math.max(len + a, 0) : Math.min(a, len); -} -avalon.mix({ - rword: rword, - subscribers: subscribers, - version: 1.39, - ui: {}, - log: log, - slice: function(nodes, start, end) { - return aslice.call(nodes, start, end) - }, - noop: noop, - /*如果不用Error对象封装一下,str在控制台下可能会乱码*/ - error: function(str, e) { - throw new (e || Error)(str) - }, - /*将一个以空格或逗号隔开的字符串或数组,转换成一个键值都为1的对象*/ - oneObject: oneObject, - /* avalon.range(10) - => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - avalon.range(1, 11) - => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] - avalon.range(0, 30, 5) - => [0, 5, 10, 15, 20, 25] - avalon.range(0, -10, -1) - => [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] - avalon.range(0) - => []*/ - range: function(start, end, step) { // 用于生成整数数组 - step || (step = 1) - if (end == null) { - end = start || 0 - start = 0 - } - var index = -1, - length = Math.max(0, Math.ceil((end - start) / step)), - result = Array(length) - while (++index < length) { - result[index] = start - start += step - } - return result - }, - eventHooks: {}, - /*绑定事件*/ - bind: function(el, type, fn, phase) { - var hooks = avalon.eventHooks - var hook = hooks[type] - if (typeof hook === "object") { - type = hook.type - if (hook.deel) { - fn = hook.deel(el, fn) - } - } - el.addEventListener(type, fn, !!phase) - return fn - }, - /*卸载事件*/ - unbind: function(el, type, fn, phase) { - var hooks = avalon.eventHooks - var hook = hooks[type] - var callback = fn || noop - if (typeof hook === "object") { - type = hook.type - } - el.removeEventListener(type, callback, !!phase) - }, - /*读写删除元素节点的样式*/ - css: function(node, name, value) { - if (node instanceof avalon) { - node = node[0] - } - var prop = /[_-]/.test(name) ? camelize(name) : name - name = avalon.cssName(prop) || prop - if (value === void 0 || typeof value === "boolean") { //获取样式 - var fn = cssHooks[prop + ":get"] || cssHooks["@:get"] - if (name === "background") { - name = "backgroundColor" - } - var val = fn(node, name) - return value === true ? parseFloat(val) || 0 : val - } else if (value === "") { //请除样式 - node.style[name] = "" - } else { //设置样式 - if (value == null || value !== value) { - return - } - if (isFinite(value) && !avalon.cssNumber[prop]) { - value += "px" - } - fn = cssHooks[prop + ":set"] || cssHooks["@:set"] - fn(node, name, value) - } - }, - /*遍历数组与对象,回调的第一个参数为索引或键名,第二个或元素或键值*/ - each: function(obj, fn) { - if (obj) { //排除null, undefined - var i = 0 - if (isArrayLike(obj)) { - for (var n = obj.length; i < n; i++) { - fn(i, obj[i]) - } - } else { - for (i in obj) { - if (obj.hasOwnProperty(i)) { - fn(i, obj[i]) - } - } - } - } - }, - //收集元素的data-{{prefix}}-*属性,并转换为对象 - getWidgetData: function(elem, prefix) { - var raw = avalon(elem).data() - var result = {} - for (var i in raw) { - if (i.indexOf(prefix) === 0) { - result[i.replace(prefix, "").replace(/\w/, function(a) { - return a.toLowerCase() - })] = raw[i] - } - } - return result - }, - Array: { - /*只有当前数组不存在此元素时只添加它*/ - ensure: function(target, item) { - if (target.indexOf(item) === -1) { - return target.push(item) - } - }, - /*移除数组中指定位置的元素,返回布尔表示成功与否*/ - removeAt: function(target, index) { - return !!target.splice(index, 1).length - }, - /*移除数组中第一个匹配传参的那个元素,返回布尔表示成功与否*/ - remove: function(target, item) { - var index = target.indexOf(item) - if (~index) - return avalon.Array.removeAt(target, index) - return false - } - } -}) - -var bindingHandlers = avalon.bindingHandlers = {} -var bindingExecutors = avalon.bindingExecutors = {} - -/*判定是否类数组,如节点集合,纯数组,arguments与拥有非负整数的length属性的纯JS对象*/ -function isArrayLike(obj) { - if (obj && typeof obj === "object") { - var n = obj.length, - str = serialize.call(obj) - if (/(Array|List|Collection|Map|Arguments)\]$/.test(str)) { - return true - } else if (str === "[object Object]" && n === (n >>> 0)) { - return true //由于ecma262v5能修改对象属性的enumerable,因此不能用propertyIsEnumerable来判定了 - } - } - return false -} -/*视浏览器情况采用最快的异步回调(在avalon.ready里,还有一个分支,用于处理IE6-9)*/ -avalon.nextTick = window.setImmediate ? setImmediate.bind(window) : function(callback) { - setTimeout(callback, 0) //IE10-11 or W3C -} - -/********************************************************************* - * DOM 底层补丁 * - **********************************************************************/ -if (!root.contains) { //safari5+是把contains方法放在Element.prototype上而不是Node.prototype - Node.prototype.contains = function(arg) { - return !!(this.compareDocumentPosition(arg) & 16) - } -} -avalon.contains = function(root, el) { - try { - while ((el = el.parentNode)) - if (el === root) - return true; - return false - } catch (e) { - return false - } -} -if (window.SVGElement) { - var svgns = "http://www.w3.org/2000/svg" - var svg = DOC.createElementNS(svgns, "svg") - svg.innerHTML = '' - if (!rsvg.test(svg.firstChild)) {// #409 - - function enumerateNode(node, targetNode) { - if (node && node.childNodes) { - var nodes = node.childNodes - for (var i = 0, el; el = nodes[i++]; ) { - if (el.tagName) { - var svg = DOC.createElementNS(svgns, - el.tagName.toLowerCase()) - // copy attrs - ap.forEach.call(el.attributes, function(attr) { - svg.setAttribute(attr.name, attr.value) - }) - // 递归处理子节点 - enumerateNode(el, svg) - targetNode.appendChild(svg) - } - } - } - } - Object.defineProperties(SVGElement.prototype, { - "outerHTML": {//IE9-11,firefox不支持SVG元素的innerHTML,outerHTML属性 - enumerable: true, - configurable: true, - get: function() { - return new XMLSerializer().serializeToString(this) - }, - set: function(html) { - var tagName = this.tagName.toLowerCase(), - par = this.parentNode, - frag = avalon.parseHTML(html) - // 操作的svg,直接插入 - if (tagName === "svg") { - par.insertBefore(frag, this) - // svg节点的子节点类似 - } else { - var newFrag = DOC.createDocumentFragment() - enumerateNode(frag, newFrag) - par.insertBefore(newFrag, this) - } - par.removeChild(this) - } - }, - "innerHTML": { - enumerable: true, - configurable: true, - get: function() { - var s = this.outerHTML - var ropen = new RegExp("<" + this.nodeName + '\\b(?:(["\'])[^"]*?(\\1)|[^>])*>', "i") - var rclose = new RegExp("<\/" + this.nodeName + ">$", "i") - return s.replace(ropen, "").replace(rclose, "") - }, - set: function(html) { - if (avalon.clearHTML) { - avalon.clearHTML(this) - var frag = avalon.parseHTML(html) - enumerateNode(frag, this) - } - } - } - }) - } -} -//========================= event binding ==================== -var eventHooks = avalon.eventHooks -//针对firefox, chrome修正mouseenter, mouseleave(chrome30+) -if (!("onmouseenter" in root)) { - avalon.each({ - mouseenter: "mouseover", - mouseleave: "mouseout" - }, function(origType, fixType) { - eventHooks[origType] = { - type: fixType, - deel: function(elem, fn) { - return function(e) { - var t = e.relatedTarget - if (!t || (t !== elem && !(elem.compareDocumentPosition(t) & 16))) { - delete e.type - e.type = origType - return fn.call(elem, e) - } - } - } - } - }) -} -//针对IE9+, w3c修正animationend -avalon.each({ - AnimationEvent: "animationend", - WebKitAnimationEvent: "webkitAnimationEnd" -}, function(construct, fixType) { - if (window[construct] && !eventHooks.animationend) { - eventHooks.animationend = { - type: fixType - } - } -}) - -if (DOC.onmousewheel === void 0) { - /* IE6-11 chrome mousewheel wheelDetla 下 -120 上 120 - firefox DOMMouseScroll detail 下3 上-3 - firefox wheel detlaY 下3 上-3 - IE9-11 wheel deltaY 下40 上-40 - chrome wheel deltaY 下100 上-100 */ - eventHooks.mousewheel = { - type: "wheel", - deel: function(elem, fn) { - return function(e) { - e.wheelDeltaY = e.wheelDelta = e.deltaY > 0 ? -120 : 120 - e.wheelDeltaX = 0 - Object.defineProperty(e, "type", { - value: "mousewheel" - }) - fn.call(elem, e) - } - } - } -} - -/********************************************************************* - * 配置系统 * - **********************************************************************/ - -function kernel(settings) { - for (var p in settings) { - if (!ohasOwn.call(settings, p)) - continue - var val = settings[p] - if (typeof kernel.plugins[p] === "function") { - kernel.plugins[p](val) - } else if (typeof kernel[p] === "object") { - avalon.mix(kernel[p], val) - } else { - kernel[p] = val - } - } - return this -} -var openTag, closeTag, rexpr, rexprg, rbind, rregexp = /[-.*+?^${}()|[\]\/\\]/g - -function escapeRegExp(target) { - //http://stevenlevithan.com/regex/xregexp/ - //将字符串安全格式化为正则表达式的源码 - return (target + "").replace(rregexp, "\\$&") -} -var innerRequire = noop -var plugins = { - loader: function(builtin) { - window.define = builtin ? innerRequire.define : otherDefine - window.require = builtin ? innerRequire : otherRequire - }, - interpolate: function(array) { - openTag = array[0] - closeTag = array[1] - if (openTag === closeTag) { - throw new SyntaxError("openTag!==closeTag") - } else if (array + "" === "") { - kernel.commentInterpolate = true - } else { - var test = openTag + "test" + closeTag - cinerator.innerHTML = test - if (cinerator.innerHTML !== test && cinerator.innerHTML.indexOf("<") > -1) { - throw new SyntaxError("此定界符不合法") - } - cinerator.innerHTML = "" - } - var o = escapeRegExp(openTag), - c = escapeRegExp(closeTag) - rexpr = new RegExp(o + "(.*?)" + c) - rexprg = new RegExp(o + "(.*?)" + c, "g") - rbind = new RegExp(o + ".*?" + c + "|\\sms-") - } -} - -kernel.debug = true -kernel.plugins = plugins -kernel.plugins['interpolate'](["{{", "}}"]) -kernel.paths = {} -kernel.shim = {} -kernel.maxRepeatSize = 100 -avalon.config = kernel -/********************************************************************* - * 事件总线 * - **********************************************************************/ -var EventBus = { - $watch: function(type, callback) { - if (typeof callback === "function") { - var callbacks = this.$events[type] - if (callbacks) { - callbacks.push(callback) - } else { - this.$events[type] = [callback] - } - } else { //重新开始监听此VM的第一重简单属性的变动 - this.$events = this.$watch.backup - } - return this - }, - $unwatch: function(type, callback) { - var n = arguments.length - if (n === 0) { //让此VM的所有$watch回调无效化 - this.$watch.backup = this.$events - this.$events = {} - } else if (n === 1) { - this.$events[type] = [] - } else { - var callbacks = this.$events[type] || [] - var i = callbacks.length - while (~--i < 0) { - if (callbacks[i] === callback) { - return callbacks.splice(i, 1) - } - } - } - return this - }, - $fire: function(type) { - var special - if (/^(\w+)!(\S+)$/.test(type)) { - special = RegExp.$1 - type = RegExp.$2 - } - var events = this.$events - var args = aslice.call(arguments, 1) - var detail = [type].concat(args) - if (special === "all") { - for (var i in avalon.vmodels) { - var v = avalon.vmodels[i] - if (v !== this) { - v.$fire.apply(v, detail) - } - } - } else if (special === "up" || special === "down") { - var elements = events.expr ? findNodes(events.expr) : [] - if (elements.length === 0) - return - for (var i in avalon.vmodels) { - var v = avalon.vmodels[i] - if (v !== this) { - if (v.$events.expr) { - var eventNodes = findNodes(v.$events.expr) - if (eventNodes.length === 0) { - continue - } - //循环两个vmodel中的节点,查找匹配(向上匹配或者向下匹配)的节点并设置标识 - Array.prototype.forEach.call(eventNodes, function(node) { - Array.prototype.forEach.call(elements, function(element) { - var ok = special === "down" ? element.contains(node) : //向下捕获 - node.contains(element) //向上冒泡 - - if (ok) { - node._avalon = v //符合条件的加一个标识 - } - }); - }) - } - } - } - var nodes = DOC.getElementsByTagName("*") //实现节点排序 - var alls = [] - Array.prototype.forEach.call(nodes, function(el) { - if (el._avalon) { - alls.push(el._avalon) - el._avalon = "" - el.removeAttribute("_avalon") - } - }) - if (special === "up") { - alls.reverse() - } - for (var i = 0, el; el = alls[i++]; ) { - if (el.$fire.apply(el, detail) === false) { - break - } - } - } else { - var callbacks = events[type] || [] - var all = events.$all || [] - for (var i = 0, callback; callback = callbacks[i++]; ) { - if (isFunction(callback)) - callback.apply(this, args) - } - for (var i = 0, callback; callback = all[i++]; ) { - if (isFunction(callback)) - callback.apply(this, arguments) - } - } - } -} - -var ravalon = /(\w+)\[(avalonctrl)="(\S+)"\]/ -var findNodes = function(str) { - //pc safari v5.1: typeof DOC.querySelectorAll(str) === 'function' - //https://gist.github.com/DavidBruant/1016007 - return DOC.querySelectorAll(str) -} -/********************************************************************* - * modelFactory * - **********************************************************************/ -//avalon最核心的方法的两个方法之一(另一个是avalon.scan),返回一个ViewModel(VM) -var VMODELS = avalon.vmodels = {} //所有vmodel都储存在这里 -avalon.define = function(id, factory) { - var $id = id.$id || id - if (!$id) { - log("warning: vm必须指定$id") - } - if (VMODELS[$id]) { - log("warning: " + $id + " 已经存在于avalon.vmodels中") - } - if (typeof id === "object") { - var model = modelFactory(id) - } else { - var scope = { - $watch: noop - } - factory(scope) //得到所有定义 - model = modelFactory(scope) //偷天换日,将scope换为model - stopRepeatAssign = true - factory(model) - stopRepeatAssign = false - } - model.$id = $id - return VMODELS[$id] = model -} - -//一些不需要被监听的属性 -var $$skipArray = String("$id,$watch,$unwatch,$fire,$events,$model,$skipArray").match(rword) - -function isObservable(name, value, $skipArray) { - if (isFunction(value) || value && value.nodeType) { - return false - } - if ($skipArray.indexOf(name) !== -1) { - return false - } - if ($$skipArray.indexOf(name) !== -1) { - return false - } - var $special = $skipArray.$special - if (name && name.charAt(0) === "$" && !$special[name]) { - return false - } - return true -} -//ms-with,ms-each, ms-repeat绑定生成的代理对象储存池 -var midway = {} -function getNewValue(accessor, name, value, $vmodel) { - switch (accessor.type) { - case 0://计算属性 - var getter = accessor.get - var setter = accessor.set - if (isFunction(setter)) { - var $events = $vmodel.$events - var lock = $events[name] - $events[name] = [] //清空回调,防止内部冒泡而触发多次$fire - setter.call($vmodel, value) - $events[name] = lock - } - return getter.call($vmodel) //同步$model - case 1://监控属性 - return value - case 2://对象属性(包括数组与哈希) - if (value !== $vmodel.$model[name]) { - var svmodel = accessor.svmodel = objectFactory($vmodel, name, value, accessor.valueType) - value = svmodel.$model //同步$model - var fn = midway[svmodel.$id] - fn && fn() //同步视图 - } - return value - } -} - -var defineProperty = Object.defineProperty -var canHideOwn = true -//如果浏览器不支持ecma262v5的Object.defineProperties或者存在BUG,比如IE8 -//标准浏览器使用__defineGetter__, __defineSetter__实现 -try { - defineProperty({}, "_", { - value: "x" - }) - var defineProperties = Object.defineProperties -} catch (e) { - canHideOwn = false -} -function modelFactory(source, $special, $model) { - if (Array.isArray(source)) { - var arr = source.concat() - source.length = 0 - var collection = Collection(source) - collection.pushArray(arr) - return collection - } - if (typeof source.nodeType === "number") { - return source - } - if (source.$id && source.$events) { //fix IE6-8 createWithProxy $val: val引发的BUG - return source - } - if (!Array.isArray(source.$skipArray)) { - source.$skipArray = [] - } - source.$skipArray.$special = $special || {} //强制要监听的属性 - var $vmodel = {} //要返回的对象, 它在IE6-8下可能被偷龙转凤 - $model = $model || {} //vmodels.$model属性 - var $events = {} //vmodel.$events属性 - var watchedProperties = {} //监控属性 - var initCallbacks = [] //初始化才执行的函数 - for (var i in source) { - (function(name, val) { - $model[name] = val - if (!isObservable(name, val, source.$skipArray)) { - return //过滤所有非监控属性 - } - //总共产生三种accessor - $events[name] = [] - var valueType = avalon.type(val) - var accessor = function(newValue) { - var name = accessor._name - var $vmodel = this - var $model = $vmodel.$model - var oldValue = $model[name] - var $events = $vmodel.$events - - if (arguments.length) { - if (stopRepeatAssign) { - return - } - //计算属性与对象属性需要重新计算newValue - if (accessor.type !== 1) { - newValue = getNewValue(accessor, name, newValue, $vmodel) - } - if (!isEqual(oldValue, newValue)) { - $model[name] = newValue - if ($events.$digest) { - if(accessor.pedding) - return - accessor.pedding = true - setTimeout(function() { - notifySubscribers($events[name]) //同步视图 - safeFire($vmodel, name, $model[name], oldValue) //触发$watch回调 - accessor.pedding = false - }) - } else { - notifySubscribers($events[name]) //同步视图 - safeFire($vmodel, name, newValue, oldValue) //触发$watch回调 - } - } - } else { - if (accessor.type === 0) { //type 0 计算属性 1 监控属性 2 对象属性 - //计算属性不需要收集视图刷新函数,都是由其他监控属性代劳 - return $model[name] = accessor.get.call($vmodel) - } else { - collectSubscribers($events[name]) //收集视图函数 - return accessor.svmodel || oldValue - } - } - } - //总共产生三种accessor - if (valueType === "object" && isFunction(val.get) && Object.keys(val).length <= 2) { - //第1种为计算属性, 因变量,通过其他监控属性触发其改变 - accessor.set = val.set - accessor.get = val.get - accessor.type = 0 - initCallbacks.push(function() { - var data = { - evaluator: function() { - data.element = null - data.type = new Date - 0 - $model[name] = accessor.get.call($vmodel) - }, - element: head, - type: new Date - 0, - handler: noop, - args: [] - } - Registry[expose] = data - accessor.call($vmodel) - delete Registry[expose] - }) - } else if (rcomplexType.test(valueType)) { - //第2种为对象属性,产生子VM与监控数组 - accessor.type = 2 - accessor.valueType = val.valueType - initCallbacks.push(function() { - var svmodel = modelFactory(val, 0, $model[name]) - accessor.svmodel = svmodel - svmodel.$events[subscribers] = $events[name] - }) - } else { - accessor.type = 1 - //第3种为监控属性,对应简单的数据类型,自变量 - } - accessor._name = name - watchedProperties[name] = accessor - })(i, source[i]) - } - - $$skipArray.forEach(function(name) { - delete source[name] - delete $model[name] //这些特殊属性不应该在$model中出现 - }) - - $vmodel = defineProperties($vmodel, descriptorFactory(watchedProperties), source) //生成一个空的ViewModel - for (var name in source) { - if (!watchedProperties[name]) { - $vmodel[name] = source[name] - } - } - //添加$id, $model, $events, $watch, $unwatch, $fire - $vmodel.$id = generateID() - $vmodel.$model = $model - $vmodel.$events = $events - for (var i in EventBus) { - var fn = EventBus[i] - if (!W3C) { //在IE6-8下,VB对象的方法里的this并不指向自身,需要用bind处理一下 - fn = fn.bind($vmodel) - } - $vmodel[i] = fn - } - - if (canHideOwn) { - Object.defineProperty($vmodel, "hasOwnProperty", { - value: function(name) { - return name in this.$model - }, - writable: false, - enumerable: false, - configurable: true - }) - - } else { - $vmodel.hasOwnProperty = function(name) { - return name in $vmodel.$model - } - } - initCallbacks.forEach(function(cb) { //收集依赖 - cb() - }) - return $vmodel -} - -//比较两个值是否相等 -var isEqual = Object.is || function(v1, v2) { - if (v1 === 0 && v2 === 0) { - return 1 / v1 === 1 / v2 - } else if (v1 !== v1) { - return v2 !== v2 - } else { - return v1 === v2 - } -} - -function safeFire(a, b, c, d) { - if (a.$events) { - EventBus.$fire.call(a, b, c, d) - } -} - -var descriptorFactory = W3C ? function(obj) { - var descriptors = {} - for (var i in obj) { - descriptors[i] = { - get: obj[i], - set: obj[i], - enumerable: true, - configurable: true - } - } - return descriptors -} : function(a) { - return a -} - - - -//应用于第2种accessor -function objectFactory(parent, name, value, valueType) { - //a为原来的VM, b为新数组或新对象 - var son = parent[name] - if (valueType === "array") { - if (!Array.isArray(value) || son === value) { - return son //fix https://github.com/RubyLouvre/avalon/issues/261 - } - son.clear() - son.pushArray(value.concat()) - return son - } else { - var iterators = parent.$events[name] - var pool = son.$events.$withProxyPool - if (pool) { - recycleProxies(pool, "with") - son.$events.$withProxyPool = null - } - var ret = modelFactory(value) - ret.$events[subscribers] = iterators - midway[ret.$id] = function(data) { - while (data = iterators.shift()) { - (function(el) { - avalon.nextTick(function() { - if (el.type) { //重新绑定 - el.rollback && el.rollback() //还原 ms-with ms-on - bindingHandlers[el.type](el, el.vmodels) - } - }) - })(data) - } - delete midway[ret.$id] - } - return ret - } -} -/********************************************************************* - * 监控数组(与ms-each, ms-repeat配合使用) * - **********************************************************************/ - -function Collection(model) { - var array = [] - array.$id = generateID() - array.$model = model //数据模型 - array.$events = {} - array.$events[subscribers] = [] - array._ = modelFactory({ - length: model.length - }) - array._.$watch("length", function(a, b) { - array.$fire("length", a, b) - }) - for (var i in EventBus) { - array[i] = EventBus[i] - } - avalon.mix(array, CollectionPrototype) - return array -} - -function mutateArray(method, pos, n, index, method2, pos2, n2) { - var oldLen = this.length, loop = 2 - while (--loop) { - switch (method) { - case "add": - var array = this.$model.slice(pos, pos + n).map(function(el) { - if (rcomplexType.test(avalon.type(el))) { - return el.$id ? el : modelFactory(el, 0, el) - } else { - return el - } - }) - _splice.apply(this, [pos, 0].concat(array)) - this._fire("add", pos, n) - break - case "del": - var ret = this._splice(pos, n) - this._fire("del", pos, n) - break - } - if (method2) { - method = method2 - pos = pos2 - n = n2 - loop = 2 - method2 = 0 - } - } - this._fire("index", index) - if (this.length !== oldLen) { - this._.length = this.length - } - return ret -} - -var _splice = ap.splice -var CollectionPrototype = { - _splice: _splice, - _fire: function(method, a, b) { - var list = this.$events[subscribers] - for (var i = 0, fn; fn = list[i++]; ) { - if (fn.$repeat) { - fn.handler.call(fn, method, a, b) //处理监控数组的方法 - } - } - }, - size: function() { //取得数组长度,这个函数可以同步视图,length不能 - return this._.length - }, - pushArray: function(array) { - var m = array.length, n = this.length - if (m) { - ap.push.apply(this.$model, array) - mutateArray.call(this, "add", n, m, n) - } - return m + n - }, - push: function() { - //http://jsperf.com/closure-with-arguments - var array = [] - var i, n = arguments.length - for (i = 0; i < n; i++) { - array[i] = arguments[i] - } - return this.pushArray(arguments) - }, - unshift: function() { - var m = arguments.length, n = this.length - if (m) { - ap.unshift.apply(this.$model, arguments) - mutateArray.call(this, "add", 0, m, 0) - } - return m + n //IE67的unshift不会返回长度 - }, - shift: function() { - if (this.length) { - var el = this.$model.shift() - mutateArray.call(this, "del", 0, 1, 0) - return el //返回被移除的元素 - } - }, - pop: function() { - var m = this.length - if (m) { - var el = this.$model.pop() - mutateArray.call(this, "del", m - 1, 1, Math.max(0, m - 2)) - return el //返回被移除的元素 - } - }, - splice: function(start) { - var m = arguments.length, args = [], change - var removed = _splice.apply(this.$model, arguments) - if (removed.length) { //如果用户删掉了元素 - args.push("del", start, removed.length, 0) - change = true - } - if (m > 2) { //如果用户添加了元素 - args.splice(3, 1, 0, "add", start, m - 2) - change = true - } - if (change) { //返回被移除的元素 - return mutateArray.apply(this, args) - } else { - return [] - } - }, - contains: function(el) { //判定是否包含 - return this.indexOf(el) !== -1 - }, - remove: function(el) { //移除第一个等于给定值的元素 - return this.removeAt(this.indexOf(el)) - }, - removeAt: function(index) { //移除指定索引上的元素 - if (index >= 0) { - this.$model.splice(index, 1) - return mutateArray.call(this, "del", index, 1, 0) - } - return [] - }, - clear: function() { - this.$model.length = this.length = this._.length = 0 //清空数组 - this._fire("clear", 0) - return this - }, - removeAll: function(all) { //移除N个元素 - if (Array.isArray(all)) { - all.forEach(function(el) { - this.remove(el) - }, this) - } else if (typeof all === "function") { - for (var i = this.length - 1; i >= 0; i--) { - var el = this[i] - if (all(el, i)) { - this.removeAt(i) - } - } - } else { - this.clear() - } - }, - ensure: function(el) { - if (!this.contains(el)) { //只有不存在才push - this.push(el) - } - return this - }, - set: function(index, val) { - if (index >= 0) { - var valueType = avalon.type(val) - if (val && val.$model) { - val = val.$model - } - var target = this[index] - if (valueType === "object") { - for (var i in val) { - if (target.hasOwnProperty(i)) { - target[i] = val[i] - } - } - } else if (valueType === "array") { - target.clear().push.apply(target, val) - } else if (target !== val) { - this[index] = val - this.$model[index] = val - this._fire("set", index, val) - } - } - return this - } -} - -function sortByIndex(array, indexes) { - var map = {}; - for (var i = 0, n = indexes.length; i < n; i++) { - map[i] = array[i] // preserve - var j = indexes[i] - if (j in map) { - array[i] = map[j] - delete map[j] - } else { - array[i] = array[j] - } - } -} - -"sort,reverse".replace(rword, function(method) { - CollectionPrototype[method] = function() { - var newArray = this.$model//这是要排序的新数组 - var oldArray = newArray.concat() //保持原来状态的旧数组 - var mask = Math.random() - var indexes = [] - var hasSort - ap[method].apply(newArray, arguments) //排序 - for (var i = 0, n = oldArray.length; i < n; i++) { - var neo = newArray[i] - var old = oldArray[i] - if (isEqual(neo, old)) { - indexes.push(i) - } else { - var index = oldArray.indexOf(neo) - indexes.push(index)//得到新数组的每个元素在旧数组对应的位置 - oldArray[index] = mask //屏蔽已经找过的元素 - hasSort = true - } - } - if (hasSort) { - sortByIndex(this, indexes) - this._fire("move", indexes) - this._fire("index", 0) - } - return this - } -}) - -/********************************************************************* - * 依赖调度系统 * - **********************************************************************/ -var ronduplex = /^(duplex|on)$/ - -function registerSubscriber(data) { - Registry[expose] = data //暴光此函数,方便collectSubscribers收集 - avalon.openComputedCollect = true - var fn = data.evaluator - if (fn) { //如果是求值函数 - try { - var c = ronduplex.test(data.type) ? data : fn.apply(0, data.args) - data.handler(c, data.element, data) - } catch (e) { - //log("warning:exception throwed in [registerSubscriber] " + e) - delete data.evaluator - var node = data.element - if (node.nodeType === 3) { - var parent = node.parentNode - if (kernel.commentInterpolate) { - parent.replaceChild(DOC.createComment(data.value), node) - } else { - node.data = openTag + data.value + closeTag - } - } - } - } - avalon.openComputedCollect = false - delete Registry[expose] -} - -function collectSubscribers(list) { //收集依赖于这个访问器的订阅者 - var data = Registry[expose] - if (list && data && avalon.Array.ensure(list, data) && data.element) { //只有数组不存在此元素才push进去 - addSubscribers(data, list) - } -} - - -function addSubscribers(data, list) { - data.$uuid = data.$uuid || generateID() - list.$uuid = list.$uuid || generateID() - var obj = { - data: data, - list: list, - $$uuid: data.$uuid + list.$uuid - } - if (!$$subscribers[obj.$$uuid]) { - $$subscribers[obj.$$uuid] = 1 - $$subscribers.push(obj) - } -} - -function disposeData(data) { - data.element = null - data.rollback && data.rollback() - for (var key in data) { - data[key] = null - } -} - -function isRemove(el) { - try {//IE下,如果文本节点脱离DOM树,访问parentNode会报错 - if (!el.parentNode) { - return true - } - } catch (e) { - return true - } - return el.msRetain ? 0 : (el.nodeType === 1 ? typeof el.sourceIndex === "number" ? - el.sourceIndex === 0 : !root.contains(el) : !avalon.contains(root, el)) -} -var $$subscribers = avalon.$$subscribers = [] -var beginTime = new Date() -var oldInfo = {} -function removeSubscribers() { - var i = $$subscribers.length - var n = i - var k = 0 - var obj - var types = [] - var newInfo = {} - var needTest = {} - while (obj = $$subscribers[--i]) { - var data = obj.data - var type = data.type - if (newInfo[type]) { - newInfo[type]++ - } else { - newInfo[type] = 1 - types.push(type) - } - } - var diff = false - types.forEach(function(type) { - if (oldInfo[type] !== newInfo[type]) { - needTest[type] = 1 - diff = true - } - }) - i = n - //avalon.log("需要检测的个数 " + i) - if (diff) { - //avalon.log("有需要移除的元素") - while (obj = $$subscribers[--i]) { - var data = obj.data - if (data.element === void 0) - continue - if (needTest[data.type] && isRemove(data.element)) { //如果它没有在DOM树 - k++ - $$subscribers.splice(i, 1) - delete $$subscribers[obj.$$uuid] - avalon.Array.remove(obj.list, data) - //log("debug: remove " + data.type) - disposeData(data) - obj.data = obj.list = null - } - } - } - oldInfo = newInfo - // avalon.log("已经移除的个数 " + k) - beginTime = new Date() -} - -function notifySubscribers(list) { //通知依赖于这个访问器的订阅者更新自身 - if (list && list.length) { - if (new Date() - beginTime > 444 && typeof list[0] === "object") { - removeSubscribers() - } - var args = aslice.call(arguments, 1) - for (var i = list.length, fn; fn = list[--i]; ) { - var el = fn.element - if (el && el.parentNode) { - if (fn.$repeat) { - fn.handler.apply(fn, args) //处理监控数组的方法 - } else if (fn.type !== "on") { //事件绑定只能由用户触发,不能由程序触发 - var fun = fn.evaluator || noop - fn.handler(fun.apply(0, fn.args || []), el, fn) - } - } - } - } -} - -/************************************************************************ - * HTML处理(parseHTML, innerHTML, clearHTML) * - **************************************************************************/ -//parseHTML的辅助变量 -var tagHooks = new function() { - avalon.mix(this, { - option: DOC.createElement("select"), - thead: DOC.createElement("table"), - td: DOC.createElement("tr"), - area: DOC.createElement("map"), - tr: DOC.createElement("tbody"), - col: DOC.createElement("colgroup"), - legend: DOC.createElement("fieldset"), - _default: DOC.createElement("div"), - "g": DOC.createElementNS("http://www.w3.org/2000/svg", "svg") - }) - this.optgroup = this.option - this.tbody = this.tfoot = this.colgroup = this.caption = this.thead - this.th = this.td -} - -tagHooks.optgroup = tagHooks.option -tagHooks.tbody = tagHooks.tfoot = tagHooks.colgroup = tagHooks.caption = tagHooks.thead -tagHooks.th = tagHooks.td - -String("circle,defs,ellipse,image,line,path,polygon,polyline,rect,symbol,text,use").replace(rword, function(tag) { - tagHooks[tag] = tagHooks.g //处理SVG -}) -var rtagName = /<([\w:]+)/ -var rxhtml = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig -var scriptTypes = oneObject(["", "text/javascript", "text/ecmascript", "application/ecmascript", "application/javascript"]) -var script = DOC.createElement("script") - -avalon.parseHTML = function(html) { - if (typeof html !== "string") { - html = html + "" - } - html = html.replace(rxhtml, "<$1>").trim() - var tag = (rtagName.exec(html) || ["", ""])[1].toLowerCase(), - //取得其标签名 - wrapper = tagHooks[tag] || tagHooks._default, - fragment = hyperspace.cloneNode(false), - firstChild - wrapper.innerHTML = html - var els = wrapper.getElementsByTagName("script") - if (els.length) { //使用innerHTML生成的script节点不会发出请求与执行text属性 - for (var i = 0, el; el = els[i++]; ) { - if (scriptTypes[el.type]) { - var neo = script.cloneNode(false) //FF不能省略参数 - ap.forEach.call(el.attributes, function(attr) { - neo.setAttribute(attr.name, attr.value) - }) - neo.text = el.text - el.parentNode.replaceChild(neo, el) - } - } - } - - while (firstChild = wrapper.firstChild) { // 将wrapper上的节点转移到文档碎片上! - fragment.appendChild(firstChild) - } - return fragment -} - -avalon.innerHTML = function(node, html) { - var a = this.parseHTML(html) - this.clearHTML(node).appendChild(a) -} - -avalon.clearHTML = function(node) { - node.textContent = "" - while (node.firstChild) { - node.removeChild(node.firstChild) - } - return node -} -/********************************************************************* - * 扫描系统 * - **********************************************************************/ - -avalon.scan = function(elem, vmodel, group) { - elem = elem || root - var vmodels = vmodel ? [].concat(vmodel) : [] - scanTag(elem, vmodels) -} - -//http://www.w3.org/TR/html5/syntax.html#void-elements -var stopScan = oneObject("area,base,basefont,br,col,command,embed,hr,img,input,link,meta,param,source,track,wbr,noscript,script,style,textarea".toUpperCase()) - -function checkScan(elem, callback, innerHTML) { - var id = setTimeout(function() { - var currHTML = elem.innerHTML - clearTimeout(id) - if (currHTML === innerHTML) { - callback() - } else { - checkScan(elem, callback, currHTML) - } - }) -} - - -function createSignalTower(elem, vmodel) { - var id = elem.getAttribute("avalonctrl") || vmodel.$id - elem.setAttribute("avalonctrl", id) - vmodel.$events.expr = elem.tagName + '[avalonctrl="' + id + '"]' -} - -var getBindingCallback = function(elem, name, vmodels) { - var callback = elem.getAttribute(name) - if (callback) { - for (var i = 0, vm; vm = vmodels[i++]; ) { - if (vm.hasOwnProperty(callback) && typeof vm[callback] === "function") { - return vm[callback] - } - } - } -} - -function executeBindings(bindings, vmodels) { - for (var i = 0, data; data = bindings[i++]; ) { - data.vmodels = vmodels - bindingHandlers[data.type](data, vmodels) - if (data.evaluator && data.element && data.element.nodeType === 1) { //移除数据绑定,防止被二次解析 - //chrome使用removeAttributeNode移除不存在的特性节点时会报错 https://github.com/RubyLouvre/avalon/issues/99 - data.element.removeAttribute(data.name) - } - } - bindings.length = 0 -} - -//https://github.com/RubyLouvre/avalon/issues/636 -var mergeTextNodes = IEVersion && window.MutationObserver ? function (elem) { - var node = elem.firstChild, text - while (node) { - var aaa = node.nextSibling - if (node.nodeType === 3) { - if (text) { - text.nodeValue += node.nodeValue - elem.removeChild(node) - } else { - text = node - } - } else { - text = null - } - node = aaa - } -} : 0 - -var rmsAttr = /ms-(\w+)-?(.*)/ -var priorityMap = { - "if": 10, - "repeat": 90, - "data": 100, - "widget": 110, - "each": 1400, - "with": 1500, - "duplex": 2000, - "on": 3000 -} - -var events = oneObject("animationend,blur,change,input,click,dblclick,focus,keydown,keypress,keyup,mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,scan,scroll,submit") -var obsoleteAttrs = oneObject("value,title,alt,checked,selected,disabled,readonly,enabled") -function bindingSorter(a, b) { - return a.priority - b.priority -} - -function scanTag(elem, vmodels, node) { - //扫描顺序 ms-skip(0) --> ms-important(1) --> ms-controller(2) --> ms-if(10) --> ms-repeat(100) - //--> ms-if-loop(110) --> ms-attr(970) ...--> ms-each(1400)-->ms-with(1500)--〉ms-duplex(2000)垫后 - var a = elem.getAttribute("ms-skip") - var b = elem.getAttributeNode("ms-important") - var c = elem.getAttributeNode("ms-controller") - if (typeof a === "string") { - return - } else if (node = b || c) { - var newVmodel = avalon.vmodels[node.value] - if (!newVmodel) { - return - } - //ms-important不包含父VM,ms-controller相反 - vmodels = node === b ? [newVmodel] : [newVmodel].concat(vmodels) - elem.removeAttribute(node.name) //removeAttributeNode不会刷新[ms-controller]样式规则 - elem.classList.remove(node.name) - createSignalTower(elem, newVmodel) - } - scanAttr(elem, vmodels) //扫描特性节点 -} -function scanNodeList(parent, vmodels) { - var node = parent.firstChild - while (node) { - var nextNode = node.nextSibling - scanNode(node, node.nodeType, vmodels) - node = nextNode - } -} - -function scanNodeArray(nodes, vmodels) { - for (var i = 0, node; node = nodes[i++]; ) { - scanNode(node, node.nodeType, vmodels) - } -} -function scanNode(node, nodeType, vmodels) { - if (nodeType === 1) { - scanTag(node, vmodels) //扫描元素节点 - } else if (nodeType === 3 && rexpr.test(node.data)){ - scanText(node, vmodels) //扫描文本节点 - } else if (kernel.commentInterpolate && nodeType === 8 && !rexpr.test(node.nodeValue)) { - scanText(node, vmodels) //扫描注释节点 - } -} -function scanAttr(elem, vmodels) { - //防止setAttribute, removeAttribute时 attributes自动被同步,导致for循环出错 - var attributes = elem.hasAttributes() ? avalon.slice(elem.attributes) : [] - var bindings = [], - msData = {}, - match - for (var i = 0, attr; attr = attributes[i++]; ) { - if (attr.specified) { - if (match = attr.name.match(rmsAttr)) { - //如果是以指定前缀命名的 - var type = match[1] - var param = match[2] || "" - var value = attr.value - var name = attr.name - msData[name] = value - if (events[type]) { - param = type - type = "on" - } else if (obsoleteAttrs[type]) { - log("ms-" + type + "已经被废弃,请使用ms-attr-*代替") - if (type === "enabled") {//吃掉ms-enabled绑定,用ms-disabled代替 - type = "disabled" - value = "!(" + value + ")" - } - param = type - type = "attr" - elem.removeAttribute(name) - name = "ms-attr-" + param - elem.setAttribute(name, value) - match = [name] - msData[name] = value - } - if (typeof bindingHandlers[type] === "function") { - var binding = { - type: type, - param: param, - element: elem, - name: match[0], - value: value, - priority: type in priorityMap ? priorityMap[type] : type.charCodeAt(0) * 10 + (Number(param) || 0) - } - if (type === "html" || type === "text") { - var token = getToken(value) - avalon.mix(binding, token) - binding.filters = binding.filters.replace(rhasHtml, function() { - binding.type = "html" - binding.group = 1 - return "" - }) - } - if (name === "ms-if-loop") { - binding.priority += 100 - } - if (vmodels.length) { - bindings.push(binding) - if (type === "widget") { - elem.msData = elem.msData || msData - } - } - } - } - } - } - if (msData["ms-attr-checked"] && msData["ms-duplex"]) { - log("warning!一个元素上不能同时定义ms-attr-checked与ms-duplex") - } - bindings.sort(bindingSorter) - var scanNode = true - for (var i = 0, binding; binding = bindings[i]; i++) { - var type = binding.type - if (rnoscanAttrBinding.test(type)) { - return executeBindings(bindings.slice(0, i + 1), vmodels) - } else if (scanNode) { - scanNode = !rnoscanNodeBinding.test(type) - } - } - executeBindings(bindings, vmodels) - if (scanNode && !stopScan[elem.tagName] && rbind.test(elem.innerHTML + elem.textContent)) { - mergeTextNodes && mergeTextNodes(elem) - scanNodeList(elem, vmodels) //扫描子孙元素 - } -} - -var rnoscanAttrBinding = /^if|widget|repeat$/ -var rnoscanNodeBinding = /^each|with|html|include$/ -var rhasHtml = /\|\s*html\s*/, - r11a = /\|\|/g, - rlt = /</g, - rgt = />/g - -function getToken(value) { - if (value.indexOf("|") > 0) { - var index = value.replace(r11a, "\u1122\u3344").indexOf("|") //干掉所有短路或 - if (index > -1) { - return { - filters: value.slice(index), - value: value.slice(0, index), - expr: true - } - } - } - return { - value: value, - filters: "", - expr: true - } -} - -function scanExpr(str) { - var tokens = [], - value, start = 0, - stop - do { - stop = str.indexOf(openTag, start) - if (stop === -1) { - break - } - value = str.slice(start, stop) - if (value) { // {{ 左边的文本 - tokens.push({ - value: value, - filters: "", - expr: false - }) - } - start = stop + openTag.length - stop = str.indexOf(closeTag, start) - if (stop === -1) { - break - } - value = str.slice(start, stop) - if (value) { //处理{{ }}插值表达式 - tokens.push(getToken(value)) - } - start = stop + closeTag.length - } while (1) - value = str.slice(start) - if (value) { //}} 右边的文本 - tokens.push({ - value: value, - expr: false, - filters: "" - }) - } - return tokens -} - -function scanText(textNode, vmodels) { - var bindings = [] - if (textNode.nodeType === 8) { - var token = getToken(textNode.nodeValue) - var tokens = [token] - } else { - tokens = scanExpr(textNode.data) - } - if (tokens.length) { - for (var i = 0, token; token = tokens[i++]; ) { - var node = DOC.createTextNode(token.value) //将文本转换为文本节点,并替换原来的文本节点 - if (token.expr) { - token.type = "text" - token.element = node - token.filters = token.filters.replace(rhasHtml, function() { - token.type = "html" - token.group = 1 - return "" - }) - bindings.push(token) //收集带有插值表达式的文本 - } - hyperspace.appendChild(node) - } - textNode.parentNode.replaceChild(hyperspace, textNode) - if (bindings.length) - executeBindings(bindings, vmodels) - } -} - - -/********************************************************************* - * avalon的原型方法定义区 * - **********************************************************************/ -function hyphen(target) { - //转换为连字符线风格 - return target.replace(/([a-z\d])([A-Z]+)/g, "$1-$2").toLowerCase() -} -function camelize(target) { - //转换为驼峰风格 - if (target.indexOf("-") < 0 && target.indexOf("_") < 0) { - return target //提前判断,提高getStyle等的效率 - } - return target.replace(/[-_][^-_]/g, function(match) { - return match.charAt(1).toUpperCase() - }) -} - -"add,remove".replace(rword, function(method) { - avalon.fn[method + "Class"] = function(cls) { - var el = this[0] - //https://developer.mozilla.org/zh-CN/docs/Mozilla/Firefox/Releases/26 - if (cls && typeof cls === "string" && el && el.nodeType === 1) { - cls.replace(/\S+/g, function(c) { - el.classList[method](c) - }) - } - return this - } -}) - -avalon.fn.mix({ - hasClass: function(cls) { - var el = this[0] || {} //IE10+, chrome8+, firefox3.6+, safari5.1+,opera11.5+支持classList,chrome24+,firefox26+支持classList2.0 - return el.nodeType === 1 && el.classList.contains(cls) - }, - toggleClass: function(value, stateVal) { - var className, i = 0 - var classNames = value.split(/\s+/) - var isBool = typeof stateVal === "boolean" - while ((className = classNames[i++])) { - var state = isBool ? stateVal : !this.hasClass(className) - this[state ? "addClass" : "removeClass"](className) - } - return this - }, - attr: function(name, value) { - if (arguments.length === 2) { - this[0].setAttribute(name, value) - return this - } else { - return this[0].getAttribute(name) - } - }, - data: function(name, value) { - name = "data-" + hyphen(name || "") - switch (arguments.length) { - case 2: - this.attr(name, value) - return this - case 1: - var val = this.attr(name) - return parseData(val) - case 0: - var ret = {} - ap.forEach.call(this[0].attributes, function(attr) { - if (attr) { - name = attr.name - if (!name.indexOf("data-")) { - name = camelize(name.slice(5)) - ret[name] = parseData(attr.value) - } - } - }) - return ret - } - }, - removeData: function(name) { - name = "data-" + hyphen(name) - this[0].removeAttribute(name) - return this - }, - css: function(name, value) { - if (avalon.isPlainObject(name)) { - for (var i in name) { - avalon.css(this, i, name[i]) - } - } else { - var ret = avalon.css(this, name, value) - } - return ret !== void 0 ? ret : this - }, - position: function() { - var offsetParent, offset, - elem = this[0], - parentOffset = { - top: 0, - left: 0 - }; - if (!elem) { - return - } - if (this.css("position") === "fixed") { - offset = elem.getBoundingClientRect() - } else { - offsetParent = this.offsetParent() //得到真正的offsetParent - offset = this.offset() // 得到正确的offsetParent - if (offsetParent[0].tagName !== "HTML") { - parentOffset = offsetParent.offset() - } - parentOffset.top += avalon.css(offsetParent[0], "borderTopWidth", true) - parentOffset.left += avalon.css(offsetParent[0], "borderLeftWidth", true) - } - return { - top: offset.top - parentOffset.top - avalon.css(elem, "marginTop", true), - left: offset.left - parentOffset.left - avalon.css(elem, "marginLeft", true) - } - }, - offsetParent: function() { - var offsetParent = this[0].offsetParent - while (offsetParent && avalon.css(offsetParent, "position") === "static") { - offsetParent = offsetParent.offsetParent; - } - return avalon(offsetParent) - }, - bind: function(type, fn, phase) { - if (this[0]) { //此方法不会链 - return avalon.bind(this[0], type, fn, phase) - } - }, - unbind: function(type, fn, phase) { - if (this[0]) { - avalon.unbind(this[0], type, fn, phase) - } - return this - }, - val: function(value) { - var node = this[0] - if (node && node.nodeType === 1) { - var get = arguments.length === 0 - var access = get ? ":get" : ":set" - var fn = valHooks[getValType(node) + access] - if (fn) { - var val = fn(node, value) - } else if (get) { - return (node.value || "").replace(/\r/g, "") - } else { - node.value = value - } - } - return get ? val : this - } -}) - -if (root.dataset) { - avalon.fn.data = function(name, val) { - var dataset = this[0].dataset - switch (arguments.length) { - case 2: - dataset[name] = val - return this - case 1: - val = dataset[name] - return parseData(val) - case 0: - var ret = {} - for (var name in dataset) { - ret[name] = parseData(dataset[name]) - } - return ret - } - } -} -var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/ -avalon.parseJSON = JSON.parse - -function parseData(data) { - try { - if (typeof data === "object") - return data - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : +data + "" === data ? +data : rbrace.test(data) ? JSON.parse(data) : data - } catch (e) { - } - return data -} -avalon.each({ - scrollLeft: "pageXOffset", - scrollTop: "pageYOffset" -}, function(method, prop) { - avalon.fn[method] = function(val) { - var node = this[0] || {}, win = getWindow(node), - top = method === "scrollTop" - if (!arguments.length) { - return win ? win[prop] : node[method] - } else { - if (win) { - win.scrollTo(!top ? val : avalon(win).scrollLeft(), top ? val : avalon(win).scrollTop()) - } else { - node[method] = val - } - } - } -}) - -function getWindow(node) { - return node.window && node.document ? node : node.nodeType === 9 ? node.defaultView : false -} - -//=============================css相关================================== -var cssHooks = avalon.cssHooks = {} -var prefixes = ["", "-webkit-", "-moz-", "-ms-"]//去掉opera-15的支持 -var cssMap = { - "float": "cssFloat" -} -avalon.cssNumber = oneObject("columnCount,order,fillOpacity,fontWeight,lineHeight,opacity,orphans,widows,zIndex,zoom") - -avalon.cssName = function(name, host, camelCase) { - if (cssMap[name]) { - return cssMap[name] - } - host = host || root.style - for (var i = 0, n = prefixes.length; i < n; i++) { - camelCase = camelize(prefixes[i] + name) - if (camelCase in host) { - return (cssMap[name] = camelCase) - } - } - return null -} -cssHooks["@:set"] = function(node, name, value) { - node.style[name] = value -} - -cssHooks["@:get"] = function(node, name) { - if (!node || !node.style) { - throw new Error("getComputedStyle要求传入一个节点 " + node) - } - var ret, computed = getComputedStyle(node, null) - if (computed) { - ret = name === "filter" ? computed.getPropertyValue(name) : computed[name] - if (ret === "") { - ret = node.style[name] //其他浏览器需要我们手动取内联样式 - } - } - return ret -} -cssHooks["opacity:get"] = function(node) { - var ret = cssHooks["@:get"](node, "opacity") - return ret === "" ? "1" : ret -} - -"top,left".replace(rword, function(name) { - cssHooks[name + ":get"] = function(node) { - var computed = cssHooks["@:get"](node, name) - return /px$/.test(computed) ? computed : - avalon(node).position()[name] + "px" - } -}) -var cssShow = { - position: "absolute", - visibility: "hidden", - display: "block" -} -var rdisplayswap = /^(none|table(?!-c[ea]).+)/ - -function showHidden(node, array) { - //http://www.cnblogs.com/rubylouvre/archive/2012/10/27/2742529.html - if (node.offsetWidth <= 0) { //opera.offsetWidth可能小于0 - var styles = getComputedStyle(node, null) - if (rdisplayswap.test(styles["display"])) { - var obj = { - node: node - } - for (var name in cssShow) { - obj[name] = styles[name] - node.style[name] = cssShow[name] - } - array.push(obj) - } - var parent = node.parentNode - if (parent && parent.nodeType === 1) { - showHidden(parent, array) - } - } -} - -"Width,Height".replace(rword, function(name) {//fix 481 - var method = name.toLowerCase(), - clientProp = "client" + name, - scrollProp = "scroll" + name, - offsetProp = "offset" + name - cssHooks[method + ":get"] = function(node, which, override) { - var boxSizing = -4 - if (typeof override === "number") { - boxSizing = override - } - which = name === "Width" ? ["Left", "Right"] : ["Top", "Bottom"] - var ret = node[offsetProp] // border-box 0 - if (boxSizing === 2) { // margin-box 2 - return ret - + avalon.css(node, "margin" + which[0], true) - + avalon.css(node, "margin" + which[1], true) - } - if (boxSizing < 0) { // padding-box -2 - ret = ret - - avalon.css(node, "border" + which[0] + "Width", true) - - avalon.css(node, "border" + which[1] + "Width", true) - } - if (boxSizing === -4) { // content-box -4 - ret = ret - - avalon.css(node, "padding" + which[0], true) - - avalon.css(node, "padding" + which[1], true) - } - return ret - } - cssHooks[method + "&get"] = function(node) { - var hidden = []; - showHidden(node, hidden); - var val = cssHooks[method + ":get"](node) - for (var i = 0, obj; obj = hidden[i++]; ) { - node = obj.node - for (var n in obj) { - if (typeof obj[n] === "string") { - node.style[n] = obj[n] - } - } - } - return val; - } - avalon.fn[method] = function(value) { //会忽视其display - var node = this[0] - if (arguments.length === 0) { - if (node.setTimeout) { //取得窗口尺寸,IE9后可以用node.innerWidth /innerHeight代替 - return node["inner" + name] || node.document.documentElement[clientProp] - } - if (node.nodeType === 9) { //取得页面尺寸 - var doc = node.documentElement - //FF chrome html.scrollHeight< body.scrollHeight - //IE 标准模式 : html.scrollHeight> body.scrollHeight - //IE 怪异模式 : html.scrollHeight 最大等于可视窗口多一点? - return Math.max(node.body[scrollProp], doc[scrollProp], node.body[offsetProp], doc[offsetProp], doc[clientProp]) - } - return cssHooks[method + "&get"](node) - } else { - return this.css(method, value) - } - } - avalon.fn["inner" + name] = function() { - return cssHooks[method + ":get"](this[0], void 0, -2) - } - avalon.fn["outer" + name] = function(includeMargin) { - return cssHooks[method + ":get"](this[0], void 0, includeMargin === true ? 2 : 0) - } -}) -avalon.fn.offset = function() { //取得距离页面左右角的坐标 - var node = this[0], box = { - left: 0, - top: 0 - } - if (!node || !node.tagName || !node.ownerDocument) { - return box - } - var doc = node.ownerDocument, - root = doc.documentElement, - win = doc.defaultView - if (!root.contains(node)) { - return box - } - if (node.getBoundingClientRect !== void 0) { - box = node.getBoundingClientRect() - } - return { - top: box.top + win.pageYOffset - root.clientTop, - left: box.left + win.pageXOffset - root.clientLeft - } -} -//=============================val相关======================= - -function getValType(el) { - var ret = el.tagName.toLowerCase() - return ret === "input" && /checkbox|radio/.test(el.type) ? "checked" : ret -} -var valHooks = { - "select:get": function(node, value) { - var option, options = node.options, - index = node.selectedIndex, - one = node.type === "select-one" || index < 0, - values = one ? null : [], - max = one ? index + 1 : options.length, - i = index < 0 ? max : one ? index : 0 - for (; i < max; i++) { - option = options[i] - //旧式IE在reset后不会改变selected,需要改用i === index判定 - //我们过滤所有disabled的option元素,但在safari5下,如果设置select为disable,那么其所有孩子都disable - //因此当一个元素为disable,需要检测其是否显式设置了disable及其父节点的disable情况 - if ((option.selected || i === index) && !option.disabled) { - value = option.value - if (one) { - return value - } - //收集所有selected值组成数组返回 - values.push(value) - } - } - return values - }, - "select:set": function(node, values, optionSet) { - values = [].concat(values) //强制转换为数组 - for (var i = 0, el; el = node.options[i++]; ) { - if ((el.selected = values.indexOf(el.value) > -1)) { - optionSet = true - } - } - if (!optionSet) { - node.selectedIndex = -1 - } - } -} - -/********************************************************************* - * 编译系统 * - **********************************************************************/ -var quote = JSON.stringify - -var keywords = - // 关键字 - "break,case,catch,continue,debugger,default,delete,do,else,false" + - ",finally,for,function,if,in,instanceof,new,null,return,switch,this" + - ",throw,true,try,typeof,var,void,while,with" - // 保留字 - + ",abstract,boolean,byte,char,class,const,double,enum,export,extends" + - ",final,float,goto,implements,import,int,interface,long,native" + - ",package,private,protected,public,short,static,super,synchronized" + - ",throws,transient,volatile" - // ECMA 5 - use strict - + ",arguments,let,yield" + ",undefined" -var rrexpstr = /\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|[\s\t\n]*\.[\s\t\n]*[$\w\.]+/g -var rsplit = /[^\w$]+/g -var rkeywords = new RegExp(["\\b" + keywords.replace(/,/g, '\\b|\\b') + "\\b"].join('|'), 'g') -var rnumber = /\b\d[^,]*/g -var rcomma = /^,+|,+$/g -var cacheVars = createCache(512) -var getVariables = function(code) { - var key = "," + code.trim() - if (cacheVars[key]) { - return cacheVars[key] - } - var match = code - .replace(rrexpstr, "") - .replace(rsplit, ",") - .replace(rkeywords, "") - .replace(rnumber, "") - .replace(rcomma, "") - .split(/^$|,+/) - return cacheVars(key, uniqSet(match)) -} -/*添加赋值语句*/ - -function addAssign(vars, scope, name, data) { - var ret = [], - prefix = " = " + name + "." - for (var i = vars.length, prop; prop = vars[--i]; ) { - if (scope.hasOwnProperty(prop)) { - ret.push(prop + prefix + prop) - data.vars.push(prop) - if (data.type === "duplex") { - vars.get = name + "." + prop - } - vars.splice(i, 1) - } - } - return ret -} - -function uniqSet(array) { - var ret = [], - unique = {} - for (var i = 0; i < array.length; i++) { - var el = array[i] - var id = el && typeof el.$id === "string" ? el.$id : el - if (!unique[id]) { - unique[id] = ret.push(el) - } - } - return ret -} -//缓存求值函数,以便多次利用 -var cacheExprs = createCache(128) -//取得求值函数及其传参 -var rduplex = /\w\[.*\]|\w\.\w/ -var rproxy = /(\$proxy\$[a-z]+)\d+$/ -var rthimRightParentheses = /\)\s*$/ -var rthimOtherParentheses = /\)\s*\|/g -var rquoteFilterName = /\|\s*([$\w]+)/g -var rpatchBracket = /"\s*\["/g -var rthimLeftParentheses = /"\s*\(/g -function parseFilter(val, filters) { - filters = filters - .replace(rthimRightParentheses, "")//处理最后的小括号 - .replace(rthimOtherParentheses, function() {//处理其他小括号 - return "],|" - }) - .replace(rquoteFilterName, function(a, b) { //处理|及它后面的过滤器的名字 - return "[" + quote(b) - }) - .replace(rpatchBracket, function() { - return '"],["' - }) - .replace(rthimLeftParentheses, function() { - return '",' - }) + "]" - return "return avalon.filters.$filter(" + val + ", " + filters + ")" -} - -function parseExpr(code, scopes, data) { - var dataType = data.type - var filters = data.filters || "" - var exprId = scopes.map(function(el) { - return String(el.$id).replace(rproxy, "$1") - }) + code + dataType + filters - var vars = getVariables(code).concat(), - assigns = [], - names = [], - args = [], - prefix = "" - //args 是一个对象数组, names 是将要生成的求值函数的参数 - scopes = uniqSet(scopes) - data.vars = [] - for (var i = 0, sn = scopes.length; i < sn; i++) { - if (vars.length) { - var name = "vm" + expose + "_" + i - names.push(name) - args.push(scopes[i]) - assigns.push.apply(assigns, addAssign(vars, scopes[i], name, data)) - } - } - if (!assigns.length && dataType === "duplex") { - return - } - if (dataType !== "duplex" && (code.indexOf("||") > -1 || code.indexOf("&&") > -1)) { - //https://github.com/RubyLouvre/avalon/issues/583 - data.vars.forEach(function(v) { - var reg = new RegExp("\\b" + v + "(?:\\.\\w+|\\[\\w+\\])+", "ig") - code = code.replace(reg, function(_) { - var c = _.charAt(v.length) - var r = IEVersion ? code.slice(arguments[1] + _.length) : RegExp.rightContext - var method = /^\s*\(/.test(r) - if (c === "." || c === "[" || method) {//比如v为aa,我们只匹配aa.bb,aa[cc],不匹配aaa.xxx - var name = "var" + String(Math.random()).replace(/^0\./, "") - if (method) {//array.size() - var array = _.split(".") - if (array.length > 2) { - var last = array.pop() - assigns.push(name + " = " + array.join(".")) - return name + "." + last - } else { - return _ - } - } - assigns.push(name + " = " + _) - return name - } else { - return _ - } - }) - }) - } - //---------------args---------------- - data.args = args - //---------------cache---------------- - var fn = cacheExprs[exprId] //直接从缓存,免得重复生成 - if (fn) { - data.evaluator = fn - return - } - var prefix = assigns.join(", ") - if (prefix) { - prefix = "var " + prefix - } - if (/\S/.test(filters)) { //文本绑定,双工绑定才有过滤器 - if (!/text|html/.test(data.type)) { - throw Error("ms-" + data.type + "不支持过滤器") - } - code = "\nvar ret" + expose + " = " + code + ";\r\n" - code += parseFilter("ret" + expose, filters) - } else if (dataType === "duplex") { //双工绑定 - var _body = "'use strict';\nreturn function(vvv){\n\t" + - prefix + - ";\n\tif(!arguments.length){\n\t\treturn " + - code + - "\n\t}\n\t" + (!rduplex.test(code) ? vars.get : code) + - "= vvv;\n} " - try { - fn = Function.apply(noop, names.concat(_body)) - data.evaluator = cacheExprs(exprId, fn) - } catch (e) { - log("debug: parse error," + e.message) - } - return - } else if (dataType === "on") { //事件绑定 - if (code.indexOf("(") === -1) { - code += ".call(this, $event)" - } else { - code = code.replace("(", ".call(this,") - } - names.push("$event") - code = "\nreturn " + code + ";" //IE全家 Function("return ")出错,需要Function("return ;") - var lastIndex = code.lastIndexOf("\nreturn") - var header = code.slice(0, lastIndex) - var footer = code.slice(lastIndex) - code = header + "\n" + footer - } else { //其他绑定 - code = "\nreturn " + code + ";" //IE全家 Function("return ")出错,需要Function("return ;") - } - try { - fn = Function.apply(noop, names.concat("'use strict';\n" + prefix + code)) - data.evaluator = cacheExprs(exprId, fn) - } catch (e) { - log("debug: parse error," + e.message) - } finally { - vars = textBuffer = names = null //释放内存 - } -} - - -//parseExpr的智能引用代理 - -function parseExprProxy(code, scopes, data, tokens, noregister) { - if (Array.isArray(tokens)) { - code = tokens.map(function(el) { - return el.expr ? "(" + el.value + ")" : quote(el.value) - }).join(" + ") - } - parseExpr(code, scopes, data) - if (data.evaluator && !noregister) { - data.handler = bindingExecutors[data.handlerName || data.type] - //方便调试 - //这里非常重要,我们通过判定视图刷新函数的element是否在DOM树决定 - //将它移出订阅者列表 - registerSubscriber(data) - } -} -avalon.parseExprProxy = parseExprProxy -/********************************************************************* - * 各种指令 * - **********************************************************************/ -//ms-skip绑定已经在scanTag 方法中实现 -//ms-controller绑定已经在scanTag 方法中实现 -//ms-important绑定已经在scanTag 方法中实现 -var bools = "autofocus,autoplay,async,allowTransparency,checked,controls,declare,disabled,defer,defaultChecked,defaultSelected" + - "contentEditable,isMap,loop,multiple,noHref,noResize,noShade,open,readOnly,selected" -var boolMap = {} -bools.replace(rword, function(name) { - boolMap[name.toLowerCase()] = name -}) - -var propMap = {//属性名映射 - "accept-charset": "acceptCharset", - "char": "ch", - "charoff": "chOff", - "class": "className", - "for": "htmlFor", - "http-equiv": "httpEquiv" -} - -var anomaly = "accessKey,bgColor,cellPadding,cellSpacing,codeBase,codeType,colSpan," + "dateTime,defaultValue,frameBorder,longDesc,maxLength,marginWidth,marginHeight," + "rowSpan,tabIndex,useMap,vSpace,valueType,vAlign" -anomaly.replace(rword, function(name) { - propMap[name.toLowerCase()] = name -}) - -var rnoscripts = /(?:[\s\S]+?)<\/noscript>/img -var rnoscriptText = /([\s\S]+?)<\/noscript>/im - -var getXHR = function() { - return new (window.XMLHttpRequest || ActiveXObject)("Microsoft.XMLHTTP") -} - -var cacheTmpls = avalon.templateCache = {} - -bindingHandlers.attr = function(data, vmodels) { - var text = data.value.trim(), - simple = true - if (text.indexOf(openTag) > -1 && text.indexOf(closeTag) > 2) { - simple = false - if (rexpr.test(text) && RegExp.rightContext === "" && RegExp.leftContext === "") { - simple = true - text = RegExp.$1 - } - } - if (data.type === "include") { - var elem = data.element - data.includeRendered = getBindingCallback(elem, "data-include-rendered", vmodels) - data.includeLoaded = getBindingCallback(elem, "data-include-loaded", vmodels) - var outer = data.includeReplaced = !!avalon(elem).data("includeReplace") - data.startInclude = DOC.createComment("ms-include") - data.endInclude = DOC.createComment("ms-include-end") - if (outer) { - data.element = data.startInclude - elem.parentNode.insertBefore(data.startInclude, elem) - elem.parentNode.insertBefore(data.endInclude, elem.nextSibling) - } else { - elem.insertBefore(data.startInclude, elem.firstChild) - elem.appendChild(data.endInclude) - } - } - data.handlerName = "attr" //handleName用于处理多种绑定共用同一种bindingExecutor的情况 - parseExprProxy(text, vmodels, data, (simple ? 0 : scanExpr(data.value))) -} - -bindingExecutors.attr = function(val, elem, data) { - var method = data.type, - attrName = data.param - if (method === "css") { - avalon(elem).css(attrName, val) - } else if (method === "attr") { - // ms-attr-class="xxx" vm.xxx="aaa bbb ccc"将元素的className设置为aaa bbb ccc - // ms-attr-class="xxx" vm.xxx=false 清空元素的所有类名 - // ms-attr-name="yyy" vm.yyy="ooo" 为元素设置name属性 - if (boolMap[attrName]) { - var bool = boolMap[attrName] - if (typeof elem[bool] === "boolean") { - // IE6-11不支持动态设置fieldset的disabled属性,IE11下样式是生效了,但无法阻止用户对其底下的input元素进行设值…… - return elem[bool] = !!val - } - } - var toRemove = (val === false) || (val === null) || (val === void 0) - - if (!W3C && propMap[attrName]) { //旧式IE下需要进行名字映射 - attrName = propMap[attrName] - } - if (toRemove) { - return elem.removeAttribute(attrName) - } - //SVG只能使用setAttribute(xxx, yyy), VML只能使用elem.xxx = yyy ,HTML的固有属性必须elem.xxx = yyy - var isInnate = rsvg.test(elem) ? false : (DOC.namespaces && isVML(elem)) ? true : attrName in elem.cloneNode(false) - if (isInnate) { - elem[attrName] = val - } else { - elem.setAttribute(attrName, val) - } - } else if (method === "include" && val) { - var vmodels = data.vmodels - var rendered = data.includeRendered - var loaded = data.includeLoaded - var replace = data.includeReplaced - var target = replace ? elem.parentNode : elem - function scanTemplate(text) { - if (loaded) { - text = loaded.apply(target, [text].concat(vmodels)) - } - if (rendered) { - checkScan(target, function() { - rendered.call(target) - }, NaN) - } - while (true) { - var node = data.startInclude.nextSibling - if (node && node !== data.endInclude) { - target.removeChild(node) - } else { - break - } - } - var dom = avalon.parseHTML(text) - var nodes = avalon.slice(dom.childNodes) - target.insertBefore(dom, data.endInclude) - scanNodeArray(nodes, vmodels) - } - if (data.param === "src") { - if (cacheTmpls[val]) { - avalon.nextTick(function() { - scanTemplate(cacheTmpls[val]) - }) - } else { - var xhr = getXHR() - xhr.onreadystatechange = function() { - if (xhr.readyState === 4) { - var s = xhr.status - if (s >= 200 && s < 300 || s === 304 || s === 1223) { - scanTemplate(cacheTmpls[val] = xhr.responseText) - } - } - } - xhr.open("GET", val, true) - if ("withCredentials" in xhr) { - xhr.withCredentials = true - } - xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest") - xhr.send(null) - } - } else { - //IE系列与够新的标准浏览器支持通过ID取得元素(firefox14+) - //http://tjvantoll.com/2012/07/19/dom-element-references-as-global-variables/ - var el = val && val.nodeType === 1 ? val : DOC.getElementById(val) - if (el) { - if (el.tagName === "NOSCRIPT" && !(el.innerHTML || el.fixIE78)) { //IE7-8 innerText,innerHTML都无法取得其内容,IE6能取得其innerHTML - var xhr = getXHR() //IE9-11与chrome的innerHTML会得到转义的内容,它们的innerText可以 - xhr.open("GET", location, false) //谢谢Nodejs 乱炖群 深圳-纯属虚构 - xhr.send(null) - //http://bbs.csdn.net/topics/390349046?page=1#post-393492653 - var noscripts = DOC.getElementsByTagName("noscript") - var array = (xhr.responseText || "").match(rnoscripts) || [] - var n = array.length - for (var i = 0; i < n; i++) { - var tag = noscripts[i] - if (tag) { //IE6-8中noscript标签的innerHTML,innerText是只读的 - tag.style.display = "none" //http://haslayout.net/css/noscript-Ghost-Bug - tag.fixIE78 = (array[i].match(rnoscriptText) || ["", " "])[1] - } - } - } - avalon.nextTick(function() { - scanTemplate(el.fixIE78 || el.value || el.innerText || el.innerHTML) - }) - } - } - } else { - if (!root.hasAttribute && typeof val === "string" && (method === "src" || method === "href")) { - val = val.replace(/&/g, "&") //处理IE67自动转义的问题 - } - elem[method] = val - if (window.chrome && elem.tagName === "EMBED") { - var parent = elem.parentNode //#525 chrome1-37下embed标签动态设置src不能发生请求 - var comment = document.createComment("ms-src") - parent.replaceChild(comment, elem) - parent.replaceChild(elem, comment) - } - } -} - -//这几个指令都可以使用插值表达式,如ms-src="aaa/{{b}}/{{c}}.html" -"title,alt,src,value,css,include,href".replace(rword, function(name) { - bindingHandlers[name] = bindingHandlers.attr -}) -//ms-include绑定已由ms-attr绑定实现 - -//根据VM的属性值或表达式的值切换类名,ms-class="xxx yyy zzz:flag" -//http://www.cnblogs.com/rubylouvre/archive/2012/12/17/2818540.html -bindingHandlers["class"] = function(data, vmodels) { - var oldStyle = data.param, - text = data.value, - rightExpr - data.handlerName = "class" - if (!oldStyle || isFinite(oldStyle)) { - data.param = "" //去掉数字 - var noExpr = text.replace(rexprg, function(a) { - return a.replace(/./g, "0") - //return Math.pow(10, a.length - 1) //将插值表达式插入10的N-1次方来占位 - }) - var colonIndex = noExpr.indexOf(":") //取得第一个冒号的位置 - if (colonIndex === -1) { // 比如 ms-class="aaa bbb ccc" 的情况 - var className = text - } else { // 比如 ms-class-1="ui-state-active:checked" 的情况 - className = text.slice(0, colonIndex) - rightExpr = text.slice(colonIndex + 1) - parseExpr(rightExpr, vmodels, data) //决定是添加还是删除 - if (!data.evaluator) { - log("debug: ms-class '" + (rightExpr || "").trim() + "' 不存在于VM中") - return false - } else { - data._evaluator = data.evaluator - data._args = data.args - } - } - var hasExpr = rexpr.test(className) //比如ms-class="width{{w}}"的情况 - if (!hasExpr) { - data.immobileClass = className - } - parseExprProxy("", vmodels, data, (hasExpr ? scanExpr(className) : 0)) - } else { - data.immobileClass = data.oldStyle = data.param - parseExprProxy(text, vmodels, data) - } -} - -bindingExecutors ["class"] = function(val, elem, data) { - var $elem = avalon(elem), - method = data.type - if (method === "class" && data.oldStyle) { //如果是旧风格 - $elem.toggleClass(data.oldStyle, !!val) - } else { - //如果存在冒号就有求值函数 - data.toggleClass = data._evaluator ? !!data._evaluator.apply(elem, data._args) : true - data.newClass = data.immobileClass || val - if (data.oldClass && data.newClass !== data.oldClass) { - $elem.removeClass(data.oldClass) - } - data.oldClass = data.newClass - switch (method) { - case "class": - $elem.toggleClass(data.newClass, data.toggleClass) - break - case "hover": - case "active": - if (!data.hasBindEvent) { //确保只绑定一次 - var activate = "mouseenter" //在移出移入时切换类名 - var abandon = "mouseleave" - if (method === "active") { //在聚焦失焦中切换类名 - elem.tabIndex = elem.tabIndex || -1 - activate = "mousedown" - abandon = "mouseup" - var fn0 = $elem.bind("mouseleave", function() { - data.toggleClass && $elem.removeClass(data.newClass) - }) - } - var fn1 = $elem.bind(activate, function() { - data.toggleClass && $elem.addClass(data.newClass) - }) - var fn2 = $elem.bind(abandon, function() { - data.toggleClass && $elem.removeClass(data.newClass) - }) - data.rollback = function() { - $elem.unbind("mouseleave", fn0) - $elem.unbind(activate, fn1) - $elem.unbind(abandon, fn2) - } - data.hasBindEvent = true - } - break; - } - } -} - -"hover,active".replace(rword, function(method) { - bindingHandlers[method] = bindingHandlers["class"] -}) -// bindingHandlers.data 定义在if.js -bindingExecutors.data = function(val, elem, data) { - var key = "data-" + data.param - if (val && typeof val === "object") { - elem[key] = val - } else { - elem.setAttribute(key, String(val)) - } -} - -// bindingHandlers.text 定义在if.js -bindingExecutors.text = function(val, elem) { - val = val == null ? "" : val //不在页面上显示undefined null - if (elem.nodeType === 3) { //绑定在文本节点上 - try { //IE对游离于DOM树外的节点赋值会报错 - elem.data = val - } catch (e) { - } - } else { //绑定在特性节点上 - elem.textContent = val - } -} - -// bindingHandlers.html 定义在if.js -bindingExecutors.html = function(val, elem, data) { - val = val == null ? "" : val - var isHtmlFilter = "group" in data - var parent = isHtmlFilter ? elem.parentNode : elem - if (!parent) - return - if (val.nodeType === 11) { //将val转换为文档碎片 - var fragment = val - } else if (val.nodeType === 1 || val.item) { - var nodes = val.nodeType === 1 ? val.childNodes : val.item ? val : [] - fragment = hyperspace.cloneNode(true) - while (nodes[0]) { - fragment.appendChild(nodes[0]) - } - } else { - fragment = avalon.parseHTML(val) - } - //插入占位符, 如果是过滤器,需要有节制地移除指定的数量,如果是html指令,直接清空 - var comment = DOC.createComment("ms-html") - if (isHtmlFilter) { - parent.insertBefore(comment, elem) - var n = data.group, i = 1 - while (i < n) { - var node = elem.nextSibling - if (node) { - parent.removeChild(node) - i++ - } - } - parent.removeChild(elem) - data.element = comment //防止被CG - } else { - avalon.clearHTML(parent).appendChild(comment) - } - if (isHtmlFilter) { - data.group = fragment.childNodes.length || 1 - } - var nodes = avalon.slice(fragment.childNodes) - if (nodes[0]) { - if (comment.parentNode) - comment.parentNode.replaceChild(fragment, comment) - if (isHtmlFilter) { - data.element = nodes[0] - } - } - scanNodeArray(nodes, data.vmodels) -} - -bindingHandlers["if"] = - bindingHandlers.data = - bindingHandlers.text = - bindingHandlers.html = - function(data, vmodels) { - parseExprProxy(data.value, vmodels, data) - } - -bindingExecutors["if"] = function(val, elem, data) { - if (val) { //插回DOM树 - if (elem.nodeType === 8) { - elem.parentNode.replaceChild(data.template, elem) - elem = data.element = data.template //这时可能为null - } - if (elem.getAttribute(data.name)) { - elem.removeAttribute(data.name) - scanAttr(elem, data.vmodels) - } - data.rollback = null - } else { //移出DOM树,并用注释节点占据原位置 - if (elem.nodeType === 1) { - var node = data.element = DOC.createComment("ms-if") - elem.parentNode.replaceChild(node, elem) - data.template = elem //元素节点 - ifGroup.appendChild(elem) - data.rollback = function() { - if (elem.parentNode === ifGroup) { - ifGroup.removeChild(elem) - } - } - } - } -} - - -function parseDisplay(nodeName, val) { - //用于取得此类标签的默认display值 - var key = "_" + nodeName - if (!parseDisplay[key]) { - var node = DOC.createElement(nodeName) - root.appendChild(node) - if (W3C) { - val = getComputedStyle(node, null).display - } else { - val = node.currentStyle.display - } - root.removeChild(node) - parseDisplay[key] = val - } - return parseDisplay[key] -} - -avalon.parseDisplay = parseDisplay - -bindingHandlers.visible = function(data, vmodels) { - var elem = avalon(data.element) - var display = elem.css("display") - if (display === "none") { - var style = elem[0].style - var has = /visibility/i.test(style.cssText) - var visible = elem.css("visibility") - style.display = "" - style.visibility = "hidden" - display = elem.css("display") - if (display === "none") { - display = parseDisplay(elem[0].nodeName) - } - style.visibility = has ? visible : "" - } - data.display = display - parseExprProxy(data.value, vmodels, data) -} - -bindingExecutors.visible = function(val, elem, data) { - elem.style.display = val ? data.display : "none" -} - -var rdash = /\(([^)]*)\)/ -bindingHandlers.on = function(data, vmodels) { - var value = data.value - var eventType = data.param.replace(/-\d+$/, "") // ms-on-mousemove-10 - if (typeof bindingHandlers.on[eventType + "Hook"] === "function") { - bindingHandlers.on[eventType + "Hook"](data) - } - if (value.indexOf("(") > 0 && value.indexOf(")") > -1) { - var matched = (value.match(rdash) || ["", ""])[1].trim() - if (matched === "" || matched === "$event") { // aaa() aaa($event)当成aaa处理 - value = value.replace(rdash, "") - } - } - parseExprProxy(value, vmodels, data) -} - -bindingExecutors.on = function(callback, elem, data) { - data.type = "on" - callback = function(e) { - var fn = data.evaluator || noop - return fn.apply(this, data.args.concat(e)) - } - var eventType = data.param.replace(/-\d+$/, "") // ms-on-mousemove-10 - if (eventType === "scan") { - callback.call(elem, { - type: eventType - }) - } else if (typeof data.specialBind === "function") { - data.specialBind(elem, callback) - } else { - var removeFn = avalon.bind(elem, eventType, callback) - } - data.rollback = function() { - if (typeof data.specialUnbind === "function") { - data.specialUnbind() - } else { - avalon.unbind(elem, eventType, removeFn) - } - } -} - - -bindingHandlers.widget = function(data, vmodels) { - var args = data.value.match(rword) - var elem = data.element - var widget = args[0] - var id = args[1] - if (!id || id === "$") {//没有定义或为$时,取组件名+随机数 - id = generateID(widget) - } - var optName = args[2] || widget//没有定义,取组件名 - var constructor = avalon.ui[widget] - if (typeof constructor === "function") { //ms-widget="tabs,tabsAAA,optname" - vmodels = elem.vmodels || vmodels - for (var i = 0, v; v = vmodels[i++]; ) { - if (v.hasOwnProperty(optName) && typeof v[optName] === "object") { - var vmOptions = v[optName] - vmOptions = vmOptions.$model || vmOptions - break - } - } - if (vmOptions) { - var wid = vmOptions[widget + "Id"] - if (typeof wid === "string") { - id = wid - } - } - //抽取data-tooltip-text、data-tooltip-attr属性,组成一个配置对象 - var widgetData = avalon.getWidgetData(elem, widget) - data.value = [widget, id, optName].join(",") - data[widget + "Id"] = id - data.evaluator = noop - elem.msData["ms-widget-id"] = id - var options = data[widget + "Options"] = avalon.mix({}, constructor.defaults, vmOptions || {}, widgetData) - elem.removeAttribute("ms-widget") - var vmodel = constructor(elem, data, vmodels) || {} //防止组件不返回VM - if (vmodel.$id) { - avalon.vmodels[id] = vmodel - createSignalTower(elem, vmodel) - if (vmodel.hasOwnProperty("$init")) { - vmodel.$init(function() { - avalon.scan(elem, [vmodel].concat(vmodels)) - if (typeof options.onInit === "function") { - options.onInit.call(elem, vmodel, options, vmodels) - } - }) - } - data.rollback = function() { - try { - vmodel.widgetElement = null - vmodel.$remove() - } catch (e) { - } - elem.msData = {} - delete avalon.vmodels[vmodel.$id] - } - addSubscribers(data, widgetList) - if (window.chrome) { - elem.addEventListener("DOMNodeRemovedFromDocument", function() { - setTimeout(removeSubscribers) - }) - } - } else { - avalon.scan(elem, vmodels) - } - } else if (vmodels.length) { //如果该组件还没有加载,那么保存当前的vmodels - elem.vmodels = vmodels - } -} -var widgetList = [] -//不存在 bindingExecutors.widget -//双工绑定 -var duplexBinding = bindingHandlers.duplex = function(data, vmodels) { - var elem = data.element, - hasCast - parseExprProxy(data.value, vmodels, data, 0, 1) - - data.changed = getBindingCallback(elem, "data-duplex-changed", vmodels) || noop - if (data.evaluator && data.args) { - var params = [] - var casting = oneObject("string,number,boolean,checked") - if (elem.type === "radio" && data.param === "") { - data.param = "checked" - } - if (elem.msData) { - elem.msData["ms-duplex"] = data.value - } - data.param.replace(/\w+/g, function(name) { - if (/^(checkbox|radio)$/.test(elem.type) && /^(radio|checked)$/.test(name)) { - if (name === "radio") - log("ms-duplex-radio已经更名为ms-duplex-checked") - name = "checked" - data.isChecked = true - } - if (name === "bool") { - name = "boolean" - log("ms-duplex-bool已经更名为ms-duplex-boolean") - } else if (name === "text") { - name = "string" - log("ms-duplex-text已经更名为ms-duplex-string") - } - if (casting[name]) { - hasCast = true - } - avalon.Array.ensure(params, name) - }) - if (!hasCast) { - params.push("string") - } - data.param = params.join("-") - data.bound = function(type, callback) { - if (elem.addEventListener) { - elem.addEventListener(type, callback, false) - } else { - elem.attachEvent("on" + type, callback) - } - var old = data.rollback - data.rollback = function() { - elem.avalonSetter = null - avalon.unbind(elem, type, callback) - old && old() - } - } - for (var i in avalon.vmodels) { - var v = avalon.vmodels[i] - v.$fire("avalon-ms-duplex-init", data) - } - var cpipe = data.pipe || (data.pipe = pipe) - cpipe(null, data, "init") - var tagName = elem.tagName - duplexBinding[tagName] && duplexBinding[tagName](elem, data.evaluator.apply(null, data.args), data) - } -} -//不存在 bindingExecutors.duplex -function fixNull(val) { - return val == null ? "" : val -} -avalon.duplexHooks = { - checked: { - get: function(val, data) { - return !data.element.oldValue - } - }, - string: { - get: function(val) { //同步到VM - return val - }, - set: fixNull - }, - "boolean": { - get: function(val) { - return val === "true" - }, - set: fixNull - }, - number: { - get: function(val) { - return isFinite(val) ? parseFloat(val) || 0 : val - }, - set: fixNull - } -} - -function pipe(val, data, action, e) { - data.param.replace(/\w+/g, function(name) { - var hook = avalon.duplexHooks[name] - if (hook && typeof hook[action] === "function") { - val = hook[action](val, data) - } - }) - return val -} - -var TimerID, ribbon = [] -function W3CFire(el, name, detail) { - var event = DOC.createEvent("Events") - event.initEvent(name, true, true) - event.fireByAvalon = true//签名,标记事件是由avalon触发 - //event.isTrusted = false 设置这个opera会报错 - if (detail) - event.detail = detail - el.dispatchEvent(event) -} - - -avalon.tick = function(fn) { - if (ribbon.push(fn) === 1) { - TimerID = setInterval(ticker, 60) - } -} - -function ticker() { - for (var n = ribbon.length - 1; n >= 0; n--) { - var el = ribbon[n] - if (el() === false) { - ribbon.splice(n, 1) - } - } - if (!ribbon.length) { - clearInterval(TimerID) - } -} - -var watchValueInTimer = noop -new function() { - try {//#272 IE9-IE11, firefox - var setters = {} - var aproto = HTMLInputElement.prototype - var bproto = HTMLTextAreaElement.prototype - function newSetter(value) { - if (avalon.contains(root, this)) { - setters[this.tagName].call(this, value) - if (this.avalonSetter) { - this.avalonSetter() - } - } - } - var inputProto = HTMLInputElement.prototype - Object.getOwnPropertyNames(inputProto) //故意引发IE6-8等浏览器报错 - setters["INPUT"] = Object.getOwnPropertyDescriptor(aproto, "value").set - Object.defineProperty(aproto, "value", { - set: newSetter - }) - setters["TEXTAREA"] = Object.getOwnPropertyDescriptor(bproto, "value").set - Object.defineProperty(bproto, "value", { - set: newSetter - }) - } catch (e) { - watchValueInTimer = avalon.tick - } -} - - -//处理radio, checkbox, text, textarea, password -duplexBinding.INPUT = function(element, evaluator, data) { - var type = element.type, - bound = data.bound, - $elem = avalon(element), - composing = false - function callback(value) { - data.changed.call(this, value, data) - } - function compositionStart() { - composing = true - } - function compositionEnd() { - composing = false - } - //当value变化时改变model的值 - function updateVModel() { - if (composing)//处理中文输入法在minlengh下引发的BUG - return - var val = element.oldValue = element.value //防止递归调用形成死循环 - var lastValue = data.pipe(val, data, "get") - if ($elem.data("duplex-observe") !== false) { - evaluator(lastValue) - callback.call(element, lastValue) - if ($elem.data("duplex-focus")) { - avalon.nextTick(function() { - element.focus() - }) - } - } - } - //当model变化时,它就会改变value的值 - data.handler = function() { - var val = data.pipe(evaluator(), data, "set") - if (val !== element.oldValue) { - element.value = val - } - } - if (data.isChecked || element.type === "radio") { - updateVModel = function() { - if ($elem.data("duplex-observe") !== false) { - var lastValue = data.pipe(element.value, data, "get") - evaluator(lastValue) - callback.call(element, lastValue) - } - } - data.handler = function() { - var val = evaluator() - var checked = data.isChecked ? !!val : val + "" === element.value - element.checked = element.oldValue = checked - } - bound("click", updateVModel) - } else if (type === "checkbox") { - updateVModel = function() { - if ($elem.data("duplex-observe") !== false) { - var method = element.checked ? "ensure" : "remove" - var array = evaluator() - if (!Array.isArray(array)) { - log("ms-duplex应用于checkbox上要对应一个数组") - array = [array] - } - avalon.Array[method](array, data.pipe(element.value, data, "get")) - callback.call(element, array) - } - } - data.handler = function() { - var array = [].concat(evaluator()) //强制转换为数组 - element.checked = array.indexOf(data.pipe(element.value, data, "get")) > -1 - } - bound("change", updateVModel) - } else { - var events = element.getAttribute("data-duplex-event") || element.getAttribute("data-event") || "input" - if (element.attributes["data-event"]) { - log("data-event指令已经废弃,请改用data-duplex-event") - } - events.replace(rword, function(name) { - switch (name) { - case "input": - bound("input", updateVModel) - bound("DOMAutoComplete", updateVModel) - if (!IEVersion) { - bound("compositionstart", compositionStart) - bound("compositionend", compositionEnd) - } - break - default: - bound(name, updateVModel) - break - } - }) - } - - if (/text|password/.test(element.type)) { - watchValueInTimer(function() { - if (root.contains(element)) { - if (element.value !== element.oldValue) { - updateVModel() - } - } else if (!element.msRetain) { - return false - } - }) - } - - element.avalonSetter = updateVModel - element.oldValue = element.value - registerSubscriber(data) - callback.call(element, element.value) -} -duplexBinding.TEXTAREA = duplexBinding.INPUT -duplexBinding.SELECT = function(element, evaluator, data) { - var $elem = avalon(element) - function updateVModel() { - if ($elem.data("duplex-observe") !== false) { - var val = $elem.val() //字符串或字符串数组 - if (Array.isArray(val)) { - val = val.map(function(v) { - return data.pipe(v, data, "get") - }) - } else { - val = data.pipe(val, data, "get") - } - if (val + "" !== element.oldValue) { - evaluator(val) - } - data.changed.call(element, val, data) - } - } - data.handler = function() { - var val = evaluator() - val = val && val.$model || val - if (Array.isArray(val)) { - if (!element.multiple) { - log("ms-duplex在不能对应一个数组") - } - } - //必须变成字符串后才能比较 - val = Array.isArray(val) ? val.map(String) : val + "" - if (val + "" !== element.oldValue) { - $elem.val(val) - element.oldValue = val + "" - } - } - data.bound("change", updateVModel) - checkScan(element, function() { - registerSubscriber(data) - data.changed.call(element, evaluator(), data) - }, NaN) -} - - -bindingHandlers.repeat = function(data, vmodels) { - var type = data.type - parseExprProxy(data.value, vmodels, data, 0, 1) - data.proxies = [] - var freturn = false - try { - var $repeat = data.$repeat = data.evaluator.apply(0, data.args || []) - var xtype = avalon.type($repeat) - if (xtype !== "object" && xtype !== "array") { - freturn = true - avalon.log("warning:" + data.value + "对应类型不正确") - } - } catch (e) { - freturn = true - avalon.log("warning:" + data.value + "编译出错") - } - - var arr = data.value.split(".") || [] - if (arr.length > 1) { - arr.pop() - var n = arr[0] - for (var i = 0, v; v = vmodels[i++]; ) { - if (v && v.hasOwnProperty(n)) { - var events = v[n].$events || {} - events[subscribers] = events[subscribers] || [] - events[subscribers].push(data) - break - } - } - } - var elem = data.element - elem.removeAttribute(data.name) - - data.sortedCallback = getBindingCallback(elem, "data-with-sorted", vmodels) - data.renderedCallback = getBindingCallback(elem, "data-" + type + "-rendered", vmodels) - var signature = generateID(type) - var comment = data.element = DOC.createComment(signature + ":end") - data.clone = DOC.createComment(signature) - hyperspace.appendChild(comment) - - if (type === "each" || type === "with") { - data.template = elem.innerHTML.trim() - avalon.clearHTML(elem).appendChild(comment) - } else { - data.template = elem.outerHTML.trim() - elem.parentNode.replaceChild(comment, elem) - } - data.template = avalon.parseHTML(data.template) - data.rollback = function() { - var elem = data.element - if (!elem) - return - bindingExecutors.repeat.call(data, "clear") - var parentNode = elem.parentNode - var content = data.template - var target = content.firstChild - parentNode.replaceChild(content, elem) - var start = data.$stamp - start && start.parentNode && start.parentNode.removeChild(start) - target = data.element = data.type === "repeat" ? target : parentNode - } - if (freturn) { - return - } - data.handler = bindingExecutors.repeat - data.$outer = {} - var check0 = "$key" - var check1 = "$val" - if (Array.isArray($repeat)) { - check0 = "$first" - check1 = "$last" - } - for (var i = 0, p; p = vmodels[i++]; ) { - if (p.hasOwnProperty(check0) && p.hasOwnProperty(check1)) { - data.$outer = p - break - } - } - var $events = $repeat.$events - var $list = ($events || {})[subscribers] - if ($list && avalon.Array.ensure($list, data)) { - addSubscribers(data, $list) - } - if (xtype === "object") { - data.$with = true - var pool = !$events ? {} : $events.$withProxyPool || ($events.$withProxyPool = {}) - data.handler("append", $repeat, pool) - } else if ($repeat.length) { - data.handler("add", 0, $repeat.length) - } -} - -bindingExecutors.repeat = function(method, pos, el) { - if (method) { - var data = this - var end = data.element - var parent = end.parentNode - var proxies = data.proxies - var transation = hyperspace.cloneNode(false) - switch (method) { - case "add": //在pos位置后添加el数组(pos为数字,el为数组) - var n = pos + el - var array = data.$repeat - var last = array.length - 1 - var fragments = [] - var start = locateNode(data, pos) - for (var i = pos; i < n; i++) { - var proxy = eachProxyAgent(i, data) - proxies.splice(i, 0, proxy) - shimController(data, transation, proxy, fragments) - } - parent.insertBefore(transation, start) - for (var i = 0, fragment; fragment = fragments[i++]; ) { - scanNodeArray(fragment.nodes, fragment.vmodels) - fragment.nodes = fragment.vmodels = null - } - break - case "del": //将pos后的el个元素删掉(pos, el都是数字) - start = proxies[pos].$stamp - end = locateNode(data, pos + el) - sweepNodes(start, end) - var removed = proxies.splice(pos, el) - recycleProxies(removed, "each") - break - case "clear": - var check = data.$stamp || proxies[0] - if (check) { - start = check.$stamp || check - sweepNodes(start, end) - } - recycleProxies(proxies, "each") - break - case "move": - start = proxies[0].$stamp - var signature = start.nodeValue - var rooms = [] - var room = [], node - sweepNodes(start, end, function() { - room.unshift(this) - if (this.nodeValue === signature) { - rooms.unshift(room) - room = [] - } - }) - sortByIndex(proxies, pos) - sortByIndex(rooms, pos) - while (room = rooms.shift()) { - while (node = room.shift()) { - transation.appendChild(node) - } - } - parent.insertBefore(transation, end) - break - case "index": //将proxies中的第pos个起的所有元素重新索引 - var last = proxies.length - 1 - for (; el = proxies[pos]; pos++) { - el.$index = pos - el.$first = pos === 0 - el.$last = pos === last - } - return - case "set": //将proxies中的第pos个元素的VM设置为el(pos为数字,el任意) - var proxy = proxies[pos] - if (proxy) { - notifySubscribers(proxy.$events.$index) - } - return - case "append": //将pos的键值对从el中取出(pos为一个普通对象,el为预先生成好的代理VM对象池) - var pool = el - var keys = [] - var fragments = [] - for (var key in pos) { //得到所有键名 - if (pos.hasOwnProperty(key) && key !== "hasOwnProperty") { - keys.push(key) - } - } - if (data.sortedCallback) { //如果有回调,则让它们排序 - var keys2 = data.sortedCallback.call(parent, keys) - if (keys2 && Array.isArray(keys2) && keys2.length) { - keys = keys2 - } - } - for (var i = 0, key; key = keys[i++]; ) { - if (key !== "hasOwnProperty") { - if (!pool[key]) { - pool[key] = withProxyAgent(key, data) - } - shimController(data, transation, pool[key], fragments) - } - } - var comment = data.$stamp = data.clone - parent.insertBefore(comment, end) - parent.insertBefore(transation, end) - for (var i = 0, fragment; fragment = fragments[i++]; ) { - scanNodeArray(fragment.nodes, fragment.vmodels) - fragment.nodes = fragment.vmodels = null - } - break - } - if (method === "clear") - method = "del" - var callback = data.renderedCallback || noop, - args = arguments - checkScan(parent, function() { - callback.apply(parent, args) - if (parent.oldValue && parent.tagName === "SELECT") { //fix #503 - avalon(parent).val(parent.oldValue.split(",")) - } - }, NaN) - } -} - -"with,each".replace(rword, function(name) { - bindingHandlers[name] = bindingHandlers.repeat -}) - -function shimController(data, transation, proxy, fragments) { - var content = data.template.cloneNode(true) - var nodes = avalon.slice(content.childNodes) - if (proxy.$stamp) { - content.insertBefore(proxy.$stamp, content.firstChild) - } - transation.appendChild(content) - var nv = [proxy].concat(data.vmodels) - var fragment = { - nodes: nodes, - vmodels: nv - } - fragments.push(fragment) -} - -function locateNode(data, pos) { - var proxy = data.proxies[pos] - return proxy ? proxy.$stamp : data.element -} - -function sweepNodes(start, end, callback) { - while (true) { - var node = end.previousSibling - if (!node) - break - node.parentNode.removeChild(node) - callback && callback.call(node) - if (node === start) { - break - } - } -} - -// 为ms-each,ms-with, ms-repeat会创建一个代理VM, -// 通过它们保持一个下上文,让用户能调用$index,$first,$last,$remove,$key,$val,$outer等属性与方法 -// 所有代理VM的产生,消费,收集,存放通过xxxProxyFactory,xxxProxyAgent, recycleProxies,xxxProxyPool实现 -var eachProxyPool = [] -var withProxyPool = [] -function eachProxyFactory(name) { - var source = { - $host: [], - $outer: {}, - $stamp: 1, - $index: 0, - $first: false, - $last: false, - $remove: avalon.noop - } - source[name] = { - get: function() { - return this.$host[this.$index] - }, - set: function(val) { - this.$host.set(this.$index, val) - } - } - var second = { - $last: 1, - $first: 1, - $index: 1 - } - var proxy = modelFactory(source, second) - var e = proxy.$events - e[name] = e.$first = e.$last = e.$index - proxy.$id = generateID("$proxy$each") - return proxy -} - -function eachProxyAgent(index, data) { - var param = data.param || "el", proxy - for (var i = 0, n = eachProxyPool.length; i < n; i++) { - var candidate = eachProxyPool[i] - if (candidate && candidate.hasOwnProperty(param)) { - proxy = candidate - eachProxyPool.splice(i, 1) - } - } - if (!proxy) { - proxy = eachProxyFactory(param) - } - var host = data.$repeat - var last = host.length - 1 - proxy.$index = index - proxy.$first = index === 0 - proxy.$last = index === last - proxy.$host = host - proxy.$outer = data.$outer - proxy.$stamp = data.clone.cloneNode(false) - proxy.$remove = function() { - return host.removeAt(proxy.$index) - } - return proxy -} - -function withProxyFactory() { - var proxy = modelFactory({ - $key: "", - $outer: {}, - $host: {}, - $val: { - get: function() { - return this.$host[this.$key] - }, - set: function(val) { - this.$host[this.$key] = val - } - } - }, { - $val: 1 - }) - proxy.$id = generateID("$proxy$with") - return proxy -} - -function withProxyAgent(key, data) { - var proxy = withProxyPool.pop() - if (!proxy) { - proxy = withProxyFactory() - } - var host = data.$repeat - proxy.$key = key - proxy.$host = host - proxy.$outer = data.$outer - if (host.$events) { - proxy.$events.$val = host.$events[key] - } else { - proxy.$events = {} - } - return proxy -} - -function recycleProxies(proxies, type) { - var proxyPool = type === "each" ? eachProxyPool : withProxyPool - avalon.each(proxies, function(key, proxy) { - if (proxy.$events) { - for (var i in proxy.$events) { - if (Array.isArray(proxy.$events[i])) { - proxy.$events[i].forEach(function(data) { - if (typeof data === "object") - disposeData(data) - }) - proxy.$events[i].length = 0 - } - } - proxy.$host = proxy.$outer = {} - if (proxyPool.unshift(proxy) > kernel.maxRepeatSize) { - proxyPool.pop() - } - } - }) - if (type === "each") - proxies.length = 0 -} - - - - -/********************************************************************* - * 自带过滤器 * - **********************************************************************/ -var rscripts = /]*>([\S\s]*?)<\/script\s*>/gim -var ron = /\s+(on[^=\s]+)(?:=("[^"]*"|'[^']*'|[^\s>]+))?/g -var ropen = /<\w+\b(?:(["'])[^"]*?(\1)|[^>])*>/ig -var rsanitize = { - a: /\b(href)\=("javascript[^"]*"|'javascript[^']*')/ig, - img: /\b(src)\=("javascript[^"]*"|'javascript[^']*')/ig, - form: /\b(action)\=("javascript[^"]*"|'javascript[^']*')/ig -} -var rsurrogate = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g -var rnoalphanumeric = /([^\#-~| |!])/g; - -function numberFormat(number, decimals, dec_point, thousands_sep) { - //form http://phpjs.org/functions/number_format/ - //number 必需,要格式化的数字 - //decimals 可选,规定多少个小数位。 - //dec_point 可选,规定用作小数点的字符串(默认为 . )。 - //thousands_sep 可选,规定用作千位分隔符的字符串(默认为 , ),如果设置了该参数,那么所有其他参数都是必需的。 - number = (number + '') - .replace(/[^0-9+\-Ee.]/g, '') - var n = !isFinite(+number) ? 0 : +number, - prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), - sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, - dec = (typeof dec_point === 'undefined') ? '.' : dec_point, - s = '', - toFixedFix = function(n, prec) { - var k = Math.pow(10, prec) - return '' + (Math.round(n * k) / k) - .toFixed(prec) - } - // Fix for IE parseFloat(0.55).toFixed(0) = 0; - s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)) - .split('.') - if (s[0].length > 3) { - s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep) - } - if ((s[1] || '') - .length < prec) { - s[1] = s[1] || '' - s[1] += new Array(prec - s[1].length + 1) - .join('0') - } - return s.join(dec) -} - - -var filters = avalon.filters = { - uppercase: function(str) { - return str.toUpperCase() - }, - lowercase: function(str) { - return str.toLowerCase() - }, - truncate: function(str, length, truncation) { - //length,新字符串长度,truncation,新字符串的结尾的字段,返回新字符串 - length = length || 30 - truncation = truncation === void(0) ? "..." : truncation - return str.length > length ? str.slice(0, length - truncation.length) + truncation : String(str) - }, - $filter: function(val) { - for (var i = 1, n = arguments.length; i < n; i++) { - var array = arguments[i] - var fn = avalon.filters[array.shift()] - if (typeof fn === "function") { - var arr = [val].concat(array) - val = fn.apply(null, arr) - } - } - return val - }, - camelize: camelize, - //https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet - // chrome - // chrome - // IE67chrome - // IE67chrome - // IE67chrome - sanitize: function(str) { - return str.replace(rscripts, "").replace(ropen, function(a, b) { - var match = a.toLowerCase().match(/<(\w+)\s/) - if (match) { //处理a标签的href属性,img标签的src属性,form标签的action属性 - var reg = rsanitize[match[1]] - if (reg) { - a = a.replace(reg, function(s, name, value) { - var quote = value.charAt(0) - return name + "=" + quote + "javascript:void(0)" + quote - }) - } - } - return a.replace(ron, " ").replace(/\s+/g, " ") //移除onXXX事件 - }) - }, - escape: function(str) { - //将字符串经过 str 转义得到适合在页面中显示的内容, 例如替换 < 为 < - return String(str). - replace(/&/g, '&'). - replace(rsurrogate, function(value) { - var hi = value.charCodeAt(0) - var low = value.charCodeAt(1) - return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';' - }). - replace(rnoalphanumeric, function(value) { - return '&#' + value.charCodeAt(0) + ';' - }). - replace(//g, '>') - }, - currency: function(amount, symbol, fractionSize) { - return (symbol || "\uFFE5") + numberFormat(amount, isFinite(fractionSize) ? fractionSize: 2) - }, - number: function(number, fractionSize) { - return numberFormat(number, isFinite(fractionSize) ? fractionSize: 3 ) - } -} -/* - 'yyyy': 4 digit representation of year (e.g. AD 1 => 0001, AD 2010 => 2010) - 'yy': 2 digit representation of year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10) - 'y': 1 digit representation of year, e.g. (AD 1 => 1, AD 199 => 199) - 'MMMM': Month in year (January-December) - 'MMM': Month in year (Jan-Dec) - 'MM': Month in year, padded (01-12) - 'M': Month in year (1-12) - 'dd': Day in month, padded (01-31) - 'd': Day in month (1-31) - 'EEEE': Day in Week,(Sunday-Saturday) - 'EEE': Day in Week, (Sun-Sat) - 'HH': Hour in day, padded (00-23) - 'H': Hour in day (0-23) - 'hh': Hour in am/pm, padded (01-12) - 'h': Hour in am/pm, (1-12) - 'mm': Minute in hour, padded (00-59) - 'm': Minute in hour (0-59) - 'ss': Second in minute, padded (00-59) - 's': Second in minute (0-59) - 'a': am/pm marker - 'Z': 4 digit (+sign) representation of the timezone offset (-1200-+1200) - format string can also be one of the following predefined localizable formats: - - 'medium': equivalent to 'MMM d, y h:mm:ss a' for en_US locale (e.g. Sep 3, 2010 12:05:08 pm) - 'short': equivalent to 'M/d/yy h:mm a' for en_US locale (e.g. 9/3/10 12:05 pm) - 'fullDate': equivalent to 'EEEE, MMMM d,y' for en_US locale (e.g. Friday, September 3, 2010) - 'longDate': equivalent to 'MMMM d, y' for en_US locale (e.g. September 3, 2010 - 'mediumDate': equivalent to 'MMM d, y' for en_US locale (e.g. Sep 3, 2010) - 'shortDate': equivalent to 'M/d/yy' for en_US locale (e.g. 9/3/10) - 'mediumTime': equivalent to 'h:mm:ss a' for en_US locale (e.g. 12:05:08 pm) - 'shortTime': equivalent to 'h:mm a' for en_US locale (e.g. 12:05 pm) - */ -new function() { - function toInt(str) { - return parseInt(str, 10) - } - - function padNumber(num, digits, trim) { - var neg = "" - if (num < 0) { - neg = '-' - num = -num - } - num = "" + num - while (num.length < digits) - num = "0" + num - if (trim) - num = num.substr(num.length - digits) - return neg + num - } - - function dateGetter(name, size, offset, trim) { - return function(date) { - var value = date["get" + name]() - if (offset > 0 || value > -offset) - value += offset - if (value === 0 && offset === -12) { - value = 12 - } - return padNumber(value, size, trim) - } - } - - function dateStrGetter(name, shortForm) { - return function(date, formats) { - var value = date["get" + name]() - var get = (shortForm ? ("SHORT" + name) : name).toUpperCase() - return formats[get][value] - } - } - - function timeZoneGetter(date) { - var zone = -1 * date.getTimezoneOffset() - var paddedZone = (zone >= 0) ? "+" : "" - paddedZone += padNumber(Math[zone > 0 ? "floor" : "ceil"](zone / 60), 2) + padNumber(Math.abs(zone % 60), 2) - return paddedZone - } - //取得上午下午 - - function ampmGetter(date, formats) { - return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1] - } - var DATE_FORMATS = { - yyyy: dateGetter("FullYear", 4), - yy: dateGetter("FullYear", 2, 0, true), - y: dateGetter("FullYear", 1), - MMMM: dateStrGetter("Month"), - MMM: dateStrGetter("Month", true), - MM: dateGetter("Month", 2, 1), - M: dateGetter("Month", 1, 1), - dd: dateGetter("Date", 2), - d: dateGetter("Date", 1), - HH: dateGetter("Hours", 2), - H: dateGetter("Hours", 1), - hh: dateGetter("Hours", 2, -12), - h: dateGetter("Hours", 1, -12), - mm: dateGetter("Minutes", 2), - m: dateGetter("Minutes", 1), - ss: dateGetter("Seconds", 2), - s: dateGetter("Seconds", 1), - sss: dateGetter("Milliseconds", 3), - EEEE: dateStrGetter("Day"), - EEE: dateStrGetter("Day", true), - a: ampmGetter, - Z: timeZoneGetter - } - var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/, - NUMBER_STRING = /^\d+$/ - var riso8601 = /^(\d{4})-?(\d+)-?(\d+)(?:T(\d+)(?::?(\d+)(?::?(\d+)(?:\.(\d+))?)?)?(Z|([+-])(\d+):?(\d+))?)?$/ - // 1 2 3 4 5 6 7 8 9 10 11 - - function jsonStringToDate(string) { - var match - if (match = string.match(riso8601)) { - var date = new Date(0), - tzHour = 0, - tzMin = 0, - dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear, - timeSetter = match[8] ? date.setUTCHours : date.setHours - if (match[9]) { - tzHour = toInt(match[9] + match[10]) - tzMin = toInt(match[9] + match[11]) - } - dateSetter.call(date, toInt(match[1]), toInt(match[2]) - 1, toInt(match[3])) - var h = toInt(match[4] || 0) - tzHour - var m = toInt(match[5] || 0) - tzMin - var s = toInt(match[6] || 0) - var ms = Math.round(parseFloat('0.' + (match[7] || 0)) * 1000) - timeSetter.call(date, h, m, s, ms) - return date - } - return string - } - var rfixYMD = /^(\d+)\D(\d+)\D(\d+)/ - filters.date = function(date, format) { - var locate = filters.date.locate, - text = "", - parts = [], - fn, match - format = format || "mediumDate" - format = locate[format] || format - if (typeof date === "string") { - if (NUMBER_STRING.test(date)) { - date = toInt(date) - } else { - var trimDate = date.trim() - date = trimDate.replace(rfixYMD, function(a, b, c, d) { - var array = d.length === 4 ? [d, b, c] : [b, c, d] - return array.join("-") - }) - date = jsonStringToDate(date) - } - date = new Date(date) - } - if (typeof date === "number") { - date = new Date(date) - } - if (avalon.type(date) !== "date") { - return - } - while (format) { - match = DATE_FORMATS_SPLIT.exec(format) - if (match) { - parts = parts.concat(match.slice(1)) - format = parts.pop() - } else { - parts.push(format) - format = null - } - } - parts.forEach(function(value) { - fn = DATE_FORMATS[value] - text += fn ? fn(date, locate) : value.replace(/(^'|'$)/g, "").replace(/''/g, "'") - }) - return text - } - var locate = { - AMPMS: { - 0: "上午", - 1: "下午" - }, - DAY: { - 0: "星期日", - 1: "星期一", - 2: "星期二", - 3: "星期三", - 4: "星期四", - 5: "星期五", - 6: "星期六" - }, - MONTH: { - 0: "1月", - 1: "2月", - 2: "3月", - 3: "4月", - 4: "5月", - 5: "6月", - 6: "7月", - 7: "8月", - 8: "9月", - 9: "10月", - 10: "11月", - 11: "12月" - }, - SHORTDAY: { - "0": "周日", - "1": "周一", - "2": "周二", - "3": "周三", - "4": "周四", - "5": "周五", - "6": "周六" - }, - fullDate: "yå¹´M月d日EEEE", - longDate: "yå¹´M月d日", - medium: "yyyy-M-d H:mm:ss", - mediumDate: "yyyy-M-d", - mediumTime: "H:mm:ss", - "short": "yy-M-d ah:mm", - shortDate: "yy-M-d", - shortTime: "ah:mm" - } - locate.SHORTMONTH = locate.MONTH - filters.date.locate = locate -} -/********************************************************************* - * AMD加载器 * - **********************************************************************/ -var modules = avalon.modules = { - "ready!": { - exports: avalon - }, - "avalon": { - exports: avalon, - state: 2 - } -} - -new function() { - var loadings = [] //正在加载中的模块列表 - var factorys = [] //储存需要绑定ID与factory对应关系的模块(标准浏览器下,先parse的script节点会先onload) - var basepath - - function trimHashAndQuery(url) { - return (url || "").replace(/[?#].*/, "") - } - - var cur = getCurrentScript(true) //求得当前avalon.js 所在的JS文件的路径 - if (!cur) { //处理window safari的Error没有stack的问题 - cur = avalon.slice(DOC.scripts).pop().src - } - var url = trimHashAndQuery(cur) - basepath = kernel.base = url.slice(0, url.lastIndexOf("/") + 1) - - function getCurrentScript(base) { - // 参考 https://github.com/samyk/jiagra/blob/master/jiagra.js - var stack - try { - a.b.c() //强制报错,以便捕获e.stack - } catch (e) { //safari的错误对象只有line,sourceId,sourceURL - stack = e.stack - if (!stack && window.opera) { - //opera 9没有e.stack,但有e.Backtrace,但不能直接取得,需要对e对象转字符串进行抽取 - stack = (String(e).match(/of linked script \S+/g) || []).join(" ") - } - } - if (stack) { - /**e.stack最后一行在所有支持的浏览器大致如下: - *chrome23: - * at http://113.93.50.63/data.js:4:1 - *firefox17: - *@http://113.93.50.63/query.js:4 - *opera12:http://www.oldapps.com/opera.php?system=Windows_XP - *@http://113.93.50.63/data.js:4 - *IE10: - * at Global code (http://113.93.50.63/data.js:4:1) - * //firefox4+ 可以用document.currentScript - */ - stack = stack.split(/[@ ]/g).pop() //取得最后一行,最后一个空格或@之后的部分 - stack = stack[0] === "(" ? stack.slice(1, -1) : stack.replace(/\s/, "") //去掉换行符 - return stack.replace(/(:\d+)?:\d+$/i, "") //去掉行号与或许存在的出错字符起始位置 - } - var nodes = (base ? DOC : head).getElementsByTagName("script") //只在head标签中寻找 - for (var i = nodes.length, node; node = nodes[--i]; ) { - if ((base || node.className === subscribers) && node.readyState === "interactive") { - return node.className = node.src - } - } - } - - innerRequire = avalon.require = function(array, factory, parent) { - if (!Array.isArray(array)) { - avalon.error("require的第一个参数必须是依赖列数,类型为数组 " + array) - } - var args = [] // 放置所有依赖项的完整路径 - var deps = {} // args的另一种表现形式,为的是方便去重 - var dn = 0 //需要安装的模块数 - var cn = 0 // 已安装完的模块数 - var id = parent || "callback" + setTimeout("1") - parent = parent || basepath - - array.forEach(function(el) { - var url = loadResources(el, parent) //加载资源,并返回能加载资源的完整路径 - if (url) { - dn++ - if (modules[url] && modules[url].state === 2) { - cn++ - } - if (!deps[url]) { - args.push(url) - deps[url] = "司徒正美" //去重 - } - } - }) - modules[id] = {//保存此模块的相关信息 - id: id, - factory: factory, - deps: deps, - args: args, - state: 1 - } - if (dn === cn) { //如果需要安装的等于已安装好的 - fireFactory(id, args, factory) //安装到框架中 - } else { - //放到检测列队中,等待checkDeps处理 - loadings.unshift(id) - } - checkDeps() - } - - innerRequire.define = function(urlOrId, deps, factory) { //模块名,依赖列表,模块本身 - var args = aslice.call(arguments) - if (typeof urlOrId === "string") { - var id = args.shift() - } - if (typeof args[0] === "function") { - args.unshift([]) - } - //上线合并后能直接得到模块ID,否则寻找当前正在解析中的script节点的src作为模块ID - //现在除了safari5,1-外,我们都能直接通过getCurrentScript一步到位得到当前执行的script节点, - //safari可通过onload+delay闭包组合解决 - var url = modules[id] && modules[id].state >= 1 ? id : trimHashAndQuery(getCurrentScript()) - if (!modules[url] && id) { - modules[url] = { - id: url, - factory: factory, - state: 1 - } - } - factory = args[1] - factory.id = id //用于调试 - factory.delay = function(d) { - args.push(d) - var isCycle = true - try { - isCycle = checkCycle(modules[d].deps, d) - } catch (e) { - } - if (isCycle) { - avalon.error(d + "模块与之前的模块存在循环依赖,请不要直接用script标签引入" + d + "模块") - } - delete factory.delay //释放内存 - innerRequire.apply(null, args) //0,1,2 --> 1,2,0 - } - if (url) { - factory.delay(url) - } else { //先进先出 - factorys.push(factory) - } - } - innerRequire.define.amd = modules - - function checkCycle(deps, nick) { - //检测是否存在循环依赖 - for (var id in deps) { - if (deps[id] === "司徒正美" && modules[id].state !== 2 && (id === nick || checkCycle(modules[id].deps, nick))) { - return true - } - } - } - - function checkDeps() { - //检测此JS模块的依赖是否都已安装完毕,是则安装自身 - loop: for (var i = loadings.length, id; id = loadings[--i]; ) { - - var obj = modules[id], - deps = obj.deps - for (var key in deps) { - if (ohasOwn.call(deps, key) && modules[key].state !== 2) { - continue loop - } - } - //如果deps是空对象或者其依赖的模块的状态都是2 - if (obj.state !== 2) { - loadings.splice(i, 1) //必须先移除再安装,防止在IE下DOM树建完后手动刷新页面,会多次执行它 - fireFactory(obj.id, obj.args, obj.factory) - checkDeps() //如果成功,则再执行一次,以防有些模块就差本模块没有安装好 - } - } - } - - function checkFail(node, onError, fuckIE) { - var id = trimHashAndQuery(node.src) //检测是否死链 - node.onload = node.onreadystatechange = node.onerror = null - if (onError || (fuckIE && !modules[id].state)) { - setTimeout(function() { - head.removeChild(node) - node = null // 处理旧式IE下的循环引用问题 - }) - log("debug: 加载 " + id + " 失败" + onError + " " + (!modules[id].state)) - } else { - return true - } - } - var rdeuce = /\/\w+\/\.\./ - - function loadResources(url, parent, ret, shim) { - //1. 特别处理mass|ready标识符 - if (url === "ready!" || (modules[url] && modules[url].state === 2)) { - return url - } - //2. 处理text! css! 等资源 - var plugin - url = url.replace(/^\w+!/, function(a) { - plugin = a.slice(0, -1) - return "" - }) - plugin = plugin || "js" - plugin = plugins[plugin] || noop - //3. 转化为完整路径 - if (typeof kernel.shim[url] === "object") { - shim = kernel.shim[url] - } - url = url.split('/'); - //For each module name segment, see if there is a path - //registered for it. Start with most specific name - //and work up from it. - for (var i = url.length, parentModule, parentPath; i > 0; i -= 1) { - parentModule = url.slice(0, i).join('/'); - - parentPath = kernel.paths[parentModule]; - if (parentPath) { - //If an array, it means there are a few choices, - //Choose the one that is desired - if (Array.isArray(parentPath)) { - parentPath = parentPath[0]; - } - url.splice(0, i, parentPath); - break; - } - } - //Join the path parts together, then figure out if baseUrl is needed. - url = url.join('/'); - - //4. 补全路径 - if (/^(\w+)(\d)?:.*/.test(url)) { - ret = url - } else { - parent = parent.substr(0, parent.lastIndexOf("/")) - var tmp = url.charAt(0) - if (tmp !== "." && tmp !== "/") { //相对于根路径 - ret = basepath + url - } else if (url.slice(0, 2) === "./") { //相对于兄弟路径 - ret = parent + url.slice(1) - } else if (url.slice(0, 2) === "..") { //相对于父路径 - ret = parent + "/" + url - while (rdeuce.test(ret)) { - ret = ret.replace(rdeuce, "") - } - } else if (tmp === "/") { - ret = url //相对于根路径 - } else { - avalon.error("不符合模块标识规则: " + url) - } - } - //5. 补全扩展名 - url = trimHashAndQuery(ret) - var ext = plugin.ext - if (ext) { - if (url.slice(0 - ext.length) !== ext) { - ret += ext - } - } - //6. 缓存处理 - if (kernel.nocache) { - ret += (ret.indexOf("?") === -1 ? "?" : "&") + (new Date - 0) - } - return plugin(ret, shim) - } - - function loadJS(url, id, callback) { - //通过script节点加载目标模块 - var node = DOC.createElement("script") - node.className = subscribers //让getCurrentScript只处理类名为subscribers的script节点 - node[W3C ? "onload" : "onreadystatechange"] = function() { - if (W3C || /loaded|complete/i.test(node.readyState)) { - //mass Framework会在_checkFail把它上面的回调清掉,尽可能释放回存,尽管DOM0事件写法在IE6下GC无望 - var factory = factorys.pop() - factory && factory.delay(id) - if (callback) { - callback() - } - if (checkFail(node, false, !W3C)) { - log("debug: 已成功加载 " + url) - } - } - } - node.onerror = function() { - checkFail(node, true) - } - node.src = url //插入到head的第一个节点前,防止IE6下head标签没闭合前使用appendChild抛错 - head.insertBefore(node, head.firstChild) //chrome下第二个参数不能为null - log("debug: 正准备加载 " + url) //更重要的是IE6下可以收窄getCurrentScript的寻找范围 - } - - function fireFactory(id, deps, factory) { - for (var i = 0, array = [], d; d = deps[i++]; ) { - array.push(modules[d].exports) - } - var module = Object(modules[id]), - ret = factory.apply(window, array) - module.state = 2 - if (ret !== void 0) { - modules[id].exports = ret - } - return ret - } - - plugins.js = function(url, shim) { - var id = trimHashAndQuery(url) - if (!modules[id]) { //如果之前没有加载过 - modules[id] = { - id: id, - exports: {} - } - if (shim) { //shim机制 - innerRequire(shim.deps || "", function() { - loadJS(url, id, function() { - modules[id].state = 2 - var s = shim.exports - if (s && modules[id].exports === void 0) { - modules[id].exports = typeof s === "function" ? - s() : window[s] - } - innerRequire.checkDeps() - }) - }) - } else { - loadJS(url, id) - } - } - return id - } - plugins.css = function(url) { - var id = trimHashAndQuery(url).replace(/\W/g, "_") ////用于处理掉href中的hash与所有特殊符号 - if (!DOC.getElementById(id)) { - var node = DOC.createElement("link") - node.rel = "stylesheet" - node.href = url - node.id = id - head.insertBefore(node, head.firstChild) - } - } - plugins.css.ext = ".css" - plugins.js.ext = ".js" - - plugins.text = function(url) { - var xhr = getXHR() - var id = trimHashAndQuery(url) - modules[id] = {} - xhr.onreadystatechange = function() { - if (xhr.readyState === 4) { - var status = xhr.status; - if (status > 399 && status < 600) { - avalon.error(url + " 对应资源不存在或没有开启 CORS") - } else { - modules[id].state = 2 - modules[id].exports = xhr.responseText - innerRequire.checkDeps() - } - } - } - xhr.open("GET", url, true) - if ("withCredentials" in xhr) { - xhr.withCredentials = true - } - xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest") - xhr.send() - return id - } - - innerRequire.config = kernel - innerRequire.checkDeps = checkDeps -} - -/********************************************************************* - * DOMReady * - **********************************************************************/ -var readyList = [] -function fireReady() { - if (innerRequire) { - modules["ready!"].state = 2 - innerRequire.checkDeps()//隋性函数,防止IE9二次调用_checkDeps - } else { - readyList.forEach(function(a) { - a(avalon) - }) - } - fireReady = noop //隋性函数,防止IE9二次调用_checkDeps -} - -if (DOC.readyState === "complete") { - setTimeout(fireReady) //如果在domReady之外加载 -} else { - DOC.addEventListener("DOMContentLoaded", fireReady) - window.addEventListener("load", fireReady) -} -avalon.ready = function(fn) { - if (innerRequire) { - innerRequire(["ready!"], fn) - } else if (fireReady === noop) { - fn(avalon) - } else { - readyList.push(fn) - } -} -avalon.config({ - loader: true -}) -avalon.ready(function() { - avalon.scan(DOC.body) -}) - -// Register as a named AMD module, since avalon can be concatenated with other -// files that may use define, but not via a proper concatenation script that -// understands anonymous AMD modules. A named AMD is safest and most robust -// way to register. Lowercase avalon is used because AMD module names are -// derived from file names, and Avalon is normally delivered in a lowercase -// file name. Do this after creating the global so that if an AMD module wants -// to call noConflict to hide this version of avalon, it will work. - -// Note that for maximum portability, libraries that are not avalon should -// declare themselves as anonymous modules, and avoid setting a global if an -// AMD loader is present. avalon is a special case. For more information, see -// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon - if (typeof define === "function" && define.amd) { - define("avalon", [], function() { - return avalon - }) - } -// Map over avalon in case of overwrite - var _avalon = window.avalon - avalon.noConflict = function(deep) { - if (deep && window.avalon === avalon) { - window.avalon = avalon - } - return avalon - } -// Expose avalon and $ identifiers, even in AMD -// and CommonJS for browser emulators - if (noGlobal === void 0) { - window.avalon = avalon - } - return avalon - -})); diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/daterangepicker-bs3.css b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/daterangepicker-bs3.css deleted file mode 100644 index 8df7b075..00000000 --- a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/daterangepicker-bs3.css +++ /dev/null @@ -1,319 +0,0 @@ -/*! - * Stylesheet for the Date Range Picker, for use with Bootstrap 3.x - * - * Copyright 2013-2015 Dan Grossman ( http://www.dangrossman.info ) - * Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php - * - * Built for http://www.improvely.com - */ - - .daterangepicker.dropdown-menu { - max-width: none; - z-index: 3000; -} - -.daterangepicker.opensleft .ranges, .daterangepicker.opensleft .calendar { - float: left; - margin: 4px; -} - -.daterangepicker.opensright .ranges, .daterangepicker.opensright .calendar, -.daterangepicker.openscenter .ranges, .daterangepicker.openscenter .calendar { - float: right; - margin: 4px; -} - -.daterangepicker.single .ranges, .daterangepicker.single .calendar { - float: none; -} - -.daterangepicker .ranges { - width: 165px; - text-align: left; -} - -.daterangepicker .ranges .range_inputs>div { - float: left; -} - -.daterangepicker .ranges .range_inputs>div:nth-child(2) { - padding-left: 11px; -} - -.daterangepicker .calendar { - display: none; - max-width: 270px; -} - -.daterangepicker.show-calendar .calendar { - display: block; -} - -.daterangepicker .calendar.single .calendar-date { - border: none; -} - -.daterangepicker .calendar th, .daterangepicker .calendar td { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - white-space: nowrap; - text-align: center; - min-width: 32px; -} - -.daterangepicker .daterangepicker_start_input label, -.daterangepicker .daterangepicker_end_input label { - color: #333; - display: block; - font-size: 11px; - font-weight: normal; - height: 20px; - line-height: 20px; - margin-bottom: 2px; - text-shadow: #fff 1px 1px 0px; - text-transform: uppercase; - width: 74px; -} - -.daterangepicker .ranges input { - font-size: 11px; -} - -.daterangepicker .ranges .input-mini { - border: 1px solid #ccc; - border-radius: 4px; - color: #555; - display: block; - font-size: 11px; - height: 30px; - line-height: 30px; - vertical-align: middle; - margin: 0 0 10px 0; - padding: 0 6px; - width: 77px; -} - -.daterangepicker .ranges ul { - list-style: none; - margin: 0; - padding: 0; -} - -.daterangepicker .ranges li { - font-size: 13px; - background: #f5f5f5; - border: 1px solid #f5f5f5; - color: #08c; - padding: 3px 12px; - margin-bottom: 8px; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - cursor: pointer; -} - -.daterangepicker .ranges li.active, .daterangepicker .ranges li:hover { - background: #08c; - border: 1px solid #08c; - color: #fff; -} - -.daterangepicker .calendar-date { - border: 1px solid #ddd; - padding: 4px; - border-radius: 4px; - background: #fff; -} - -.daterangepicker .calendar-time { - text-align: center; - margin: 8px auto 0 auto; - line-height: 30px; -} - -.daterangepicker { - position: absolute; - background: #fff; - top: 100px; - left: 20px; - padding: 4px; - margin-top: 1px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.daterangepicker.opensleft:before { - position: absolute; - top: -7px; - right: 9px; - display: inline-block; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-left: 7px solid transparent; - border-bottom-color: rgba(0, 0, 0, 0.2); - content: ''; -} - -.daterangepicker.opensleft:after { - position: absolute; - top: -6px; - right: 10px; - display: inline-block; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - border-left: 6px solid transparent; - content: ''; -} - -.daterangepicker.openscenter:before { - position: absolute; - top: -7px; - left: 0; - right: 0; - width: 0; - margin-left: auto; - margin-right: auto; - display: inline-block; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-left: 7px solid transparent; - border-bottom-color: rgba(0, 0, 0, 0.2); - content: ''; -} - -.daterangepicker.openscenter:after { - position: absolute; - top: -6px; - left: 0; - right: 0; - width: 0; - margin-left: auto; - margin-right: auto; - display: inline-block; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - border-left: 6px solid transparent; - content: ''; -} - -.daterangepicker.opensright:before { - position: absolute; - top: -7px; - left: 9px; - display: inline-block; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-left: 7px solid transparent; - border-bottom-color: rgba(0, 0, 0, 0.2); - content: ''; -} - -.daterangepicker.opensright:after { - position: absolute; - top: -6px; - left: 10px; - display: inline-block; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - border-left: 6px solid transparent; - content: ''; -} - -.daterangepicker table { - width: 100%; - margin: 0; -} - -.daterangepicker td, .daterangepicker th { - text-align: center; - width: 20px; - height: 20px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - cursor: pointer; - white-space: nowrap; -} - -.daterangepicker td.off { - color: #999; -} - -.daterangepicker td.disabled, .daterangepicker option.disabled { - color: #999; -} - -.daterangepicker td.available:hover, .daterangepicker th.available:hover { - background: #eee; -} - -.daterangepicker td.in-range { - background: #ebf4f8; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} - -.daterangepicker td.start-date { - -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; -} - -.daterangepicker td.end-date { - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; -} - -.daterangepicker td.start-date.end-date { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.daterangepicker td.active, .daterangepicker td.active:hover { - background-color: #357ebd; - border-color: #3071a9; - color: #fff; -} - -.daterangepicker td.week, .daterangepicker th.week { - font-size: 80%; - color: #ccc; -} - -.daterangepicker select.monthselect, .daterangepicker select.yearselect { - font-size: 12px; - padding: 1px; - height: auto; - margin: 0; - cursor: default; -} - -.daterangepicker select.monthselect { - margin-right: 2%; - width: 56%; -} - -.daterangepicker select.yearselect { - width: 40%; -} - -.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect { - width: 50px; - margin-bottom: 0; -} - -.daterangepicker_start_input { - float: left; -} - -.daterangepicker_end_input { - float: left; - padding-left: 11px -} - -.daterangepicker th.month { - width: auto; -} diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/daterangepicker.js b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/daterangepicker.js deleted file mode 100644 index e2bc86d7..00000000 --- a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/daterangepicker.js +++ /dev/null @@ -1,1257 +0,0 @@ -/** -* @version: 1.3.17 -* @author: Dan Grossman http://www.dangrossman.info/ -* @date: 2014-11-25 -* @copyright: Copyright (c) 2012-2014 Dan Grossman. All rights reserved. -* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php -* @website: http://www.improvely.com/ -*/ - -(function(root, factory) { - - if (typeof define === 'function' && define.amd) { - define(['moment', 'jquery', 'exports'], function(momentjs, $, exports) { - root.daterangepicker = factory(root, exports, momentjs, $); - }); - - } else if (typeof exports !== 'undefined') { - var momentjs = require('moment'); - var jQuery; - try { - jQuery = require('jquery'); - } catch (err) { - jQuery = window.jQuery; - if (!jQuery) throw new Error('jQuery dependency not found'); - } - - factory(root, exports, momentjs, jQuery); - - // Finally, as a browser global. - } else { - root.daterangepicker = factory(root, {}, root.moment, (root.jQuery || root.Zepto || root.ender || root.$)); - } - -}(this, function(root, daterangepicker, moment, $) { - - var DateRangePicker = function (element, options, cb) { - - // by default, the daterangepicker element is placed at the bottom of HTML body - this.parentEl = 'body'; - - //element that triggered the date range picker - this.element = $(element); - - //tracks visible state - this.isShowing = false; - - //create the picker HTML object - var DRPTemplate = ''; - - //custom options - if (typeof options !== 'object' || options === null) - options = {}; - - this.parentEl = (typeof options === 'object' && options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl); - this.container = $(DRPTemplate).appendTo(this.parentEl); - - this.setOptions(options, cb); - - //apply CSS classes and labels to buttons - var c = this.container; - $.each(this.buttonClasses, function (idx, val) { - c.find('button').addClass(val); - }); - this.container.find('.daterangepicker_start_input label').html(this.locale.fromLabel); - this.container.find('.daterangepicker_end_input label').html(this.locale.toLabel); - if (this.applyClass.length) - this.container.find('.applyBtn').addClass(this.applyClass); - if (this.cancelClass.length) - this.container.find('.cancelBtn').addClass(this.cancelClass); - this.container.find('.applyBtn').html(this.locale.applyLabel); - this.container.find('.cancelBtn').html(this.locale.cancelLabel); - - //event listeners - - this.container.find('.calendar') - .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this)) - .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this)) - .on('click.daterangepicker', 'td.available', $.proxy(this.clickDate, this)) - .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this)) - .on('mouseleave.daterangepicker', 'td.available', $.proxy(this.updateFormInputs, this)) - .on('change.daterangepicker', 'select.yearselect', $.proxy(this.updateMonthYear, this)) - .on('change.daterangepicker', 'select.monthselect', $.proxy(this.updateMonthYear, this)) - .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.updateTime, this)); - - this.container.find('.ranges') - .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this)) - .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this)) - .on('click.daterangepicker', '.daterangepicker_start_input,.daterangepicker_end_input', $.proxy(this.showCalendars, this)) - .on('change.daterangepicker', '.daterangepicker_start_input,.daterangepicker_end_input', $.proxy(this.inputsChanged, this)) - .on('keydown.daterangepicker', '.daterangepicker_start_input,.daterangepicker_end_input', $.proxy(this.inputsKeydown, this)) - .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this)) - .on('mouseenter.daterangepicker', 'li', $.proxy(this.enterRange, this)) - .on('mouseleave.daterangepicker', 'li', $.proxy(this.updateFormInputs, this)); - - if (this.element.is('input')) { - this.element.on({ - 'click.daterangepicker': $.proxy(this.show, this), - 'focus.daterangepicker': $.proxy(this.show, this), - 'keyup.daterangepicker': $.proxy(this.updateFromControl, this) - }); - } else { - this.element.on('click.daterangepicker', $.proxy(this.toggle, this)); - } - - }; - - DateRangePicker.prototype = { - - constructor: DateRangePicker, - - setOptions: function(options, callback) { - - this.startDate = moment().startOf('day'); - this.endDate = moment().endOf('day'); - this.timeZone = moment().zone(); - this.minDate = false; - this.maxDate = false; - this.dateLimit = false; - - this.showDropdowns = false; - this.showWeekNumbers = false; - this.timePicker = false; - this.timePickerSeconds = false; - this.timePickerIncrement = 30; - this.timePicker12Hour = true; - this.singleDatePicker = false; - this.ranges = {}; - - this.opens = 'right'; - if (this.element.hasClass('pull-right')) - this.opens = 'left'; - - this.buttonClasses = ['btn', 'btn-small btn-sm']; - this.applyClass = 'btn-success'; - this.cancelClass = 'btn-default'; - - this.format = 'MM/DD/YYYY'; - this.separator = ' - '; - - this.locale = { - applyLabel: 'Apply', - cancelLabel: 'Cancel', - fromLabel: 'From', - toLabel: 'To', - weekLabel: 'W', - customRangeLabel: 'Custom Range', - daysOfWeek: moment.weekdaysMin(), - monthNames: moment.monthsShort(), - firstDay: moment.localeData()._week.dow - }; - - this.cb = function () { }; - - if (typeof options.format === 'string') - this.format = options.format; - - if (typeof options.separator === 'string') - this.separator = options.separator; - - if (typeof options.startDate === 'string') - this.startDate = moment(options.startDate, this.format); - - if (typeof options.endDate === 'string') - this.endDate = moment(options.endDate, this.format); - - if (typeof options.minDate === 'string') - this.minDate = moment(options.minDate, this.format); - - if (typeof options.maxDate === 'string') - this.maxDate = moment(options.maxDate, this.format); - - if (typeof options.startDate === 'object') - this.startDate = moment(options.startDate); - - if (typeof options.endDate === 'object') - this.endDate = moment(options.endDate); - - if (typeof options.minDate === 'object') - this.minDate = moment(options.minDate); - - if (typeof options.maxDate === 'object') - this.maxDate = moment(options.maxDate); - - if (typeof options.applyClass === 'string') - this.applyClass = options.applyClass; - - if (typeof options.cancelClass === 'string') - this.cancelClass = options.cancelClass; - - if (typeof options.dateLimit === 'object') - this.dateLimit = options.dateLimit; - - if (typeof options.locale === 'object') { - - if (typeof options.locale.daysOfWeek === 'object') { - // Create a copy of daysOfWeek to avoid modification of original - // options object for reusability in multiple daterangepicker instances - this.locale.daysOfWeek = options.locale.daysOfWeek.slice(); - } - - if (typeof options.locale.monthNames === 'object') { - this.locale.monthNames = options.locale.monthNames.slice(); - } - - if (typeof options.locale.firstDay === 'number') { - this.locale.firstDay = options.locale.firstDay; - } - - if (typeof options.locale.applyLabel === 'string') { - this.locale.applyLabel = options.locale.applyLabel; - } - - if (typeof options.locale.cancelLabel === 'string') { - this.locale.cancelLabel = options.locale.cancelLabel; - } - - if (typeof options.locale.fromLabel === 'string') { - this.locale.fromLabel = options.locale.fromLabel; - } - - if (typeof options.locale.toLabel === 'string') { - this.locale.toLabel = options.locale.toLabel; - } - - if (typeof options.locale.weekLabel === 'string') { - this.locale.weekLabel = options.locale.weekLabel; - } - - if (typeof options.locale.customRangeLabel === 'string') { - this.locale.customRangeLabel = options.locale.customRangeLabel; - } - } - - if (typeof options.opens === 'string') - this.opens = options.opens; - - if (typeof options.showWeekNumbers === 'boolean') { - this.showWeekNumbers = options.showWeekNumbers; - } - - if (typeof options.buttonClasses === 'string') { - this.buttonClasses = [options.buttonClasses]; - } - - if (typeof options.buttonClasses === 'object') { - this.buttonClasses = options.buttonClasses; - } - - if (typeof options.showDropdowns === 'boolean') { - this.showDropdowns = options.showDropdowns; - } - - if (typeof options.singleDatePicker === 'boolean') { - this.singleDatePicker = options.singleDatePicker; - if (this.singleDatePicker) { - this.endDate = this.startDate.clone(); - } - } - - if (typeof options.timePicker === 'boolean') { - this.timePicker = options.timePicker; - } - - if (typeof options.timePickerSeconds === 'boolean') { - this.timePickerSeconds = options.timePickerSeconds; - } - - if (typeof options.timePickerIncrement === 'number') { - this.timePickerIncrement = options.timePickerIncrement; - } - - if (typeof options.timePicker12Hour === 'boolean') { - this.timePicker12Hour = options.timePicker12Hour; - } - - // update day names order to firstDay - if (this.locale.firstDay != 0) { - var iterator = this.locale.firstDay; - while (iterator > 0) { - this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift()); - iterator--; - } - } - - var start, end, range; - - //if no start/end dates set, check if an input element contains initial values - if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') { - if ($(this.element).is('input[type=text]')) { - var val = $(this.element).val(), - split = val.split(this.separator); - - start = end = null; - - if (split.length == 2) { - start = moment(split[0], this.format); - end = moment(split[1], this.format); - } else if (this.singleDatePicker && val !== "") { - start = moment(val, this.format); - end = moment(val, this.format); - } - if (start !== null && end !== null) { - this.startDate = start; - this.endDate = end; - } - } - } - - // bind the time zone used to build the calendar to either the timeZone passed in through the options or the zone of the startDate (which will be the local time zone by default) - if (typeof options.timeZone === 'string' || typeof options.timeZone === 'number') { - this.timeZone = options.timeZone; - this.startDate.zone(this.timeZone); - this.endDate.zone(this.timeZone); - } else { - this.timeZone = moment(this.startDate).zone(); - } - - if (typeof options.ranges === 'object') { - for (range in options.ranges) { - - if (typeof options.ranges[range][0] === 'string') - start = moment(options.ranges[range][0], this.format); - else - start = moment(options.ranges[range][0]); - - if (typeof options.ranges[range][1] === 'string') - end = moment(options.ranges[range][1], this.format); - else - end = moment(options.ranges[range][1]); - - // If we have a min/max date set, bound this range - // to it, but only if it would otherwise fall - // outside of the min/max. - if (this.minDate && start.isBefore(this.minDate)) - start = moment(this.minDate); - - if (this.maxDate && end.isAfter(this.maxDate)) - end = moment(this.maxDate); - - // If the end of the range is before the minimum (if min is set) OR - // the start of the range is after the max (also if set) don't display this - // range option. - if ((this.minDate && end.isBefore(this.minDate)) || (this.maxDate && start.isAfter(this.maxDate))) { - continue; - } - - this.ranges[range] = [start, end]; - } - - var list = '
      '; - for (range in this.ranges) { - list += '
    • ' + range + '
    • '; - } - list += '
    • ' + this.locale.customRangeLabel + '
    • '; - list += '
    '; - this.container.find('.ranges ul').remove(); - this.container.find('.ranges').prepend(list); - } - - if (typeof callback === 'function') { - this.cb = callback; - } - - if (!this.timePicker) { - this.startDate = this.startDate.startOf('day'); - this.endDate = this.endDate.endOf('day'); - } - - if (this.singleDatePicker) { - this.opens = 'right'; - this.container.addClass('single'); - this.container.find('.calendar.right').show(); - this.container.find('.calendar.left').hide(); - if (!this.timePicker) { - this.container.find('.ranges').hide(); - } else { - this.container.find('.ranges .daterangepicker_start_input, .ranges .daterangepicker_end_input').hide(); - } - if (!this.container.find('.calendar.right').hasClass('single')) - this.container.find('.calendar.right').addClass('single'); - } else { - this.container.removeClass('single'); - this.container.find('.calendar.right').removeClass('single'); - this.container.find('.ranges').show(); - } - - this.oldStartDate = this.startDate.clone(); - this.oldEndDate = this.endDate.clone(); - this.oldChosenLabel = this.chosenLabel; - - this.leftCalendar = { - month: moment([this.startDate.year(), this.startDate.month(), 1, this.startDate.hour(), this.startDate.minute(), this.startDate.second()]), - calendar: [] - }; - - this.rightCalendar = { - month: moment([this.endDate.year(), this.endDate.month(), 1, this.endDate.hour(), this.endDate.minute(), this.endDate.second()]), - calendar: [] - }; - - if (this.opens == 'right' || this.opens == 'center') { - //swap calendar positions - var first = this.container.find('.calendar.first'); - var second = this.container.find('.calendar.second'); - - if (second.hasClass('single')) { - second.removeClass('single'); - first.addClass('single'); - } - - first.removeClass('left').addClass('right'); - second.removeClass('right').addClass('left'); - - if (this.singleDatePicker) { - first.show(); - second.hide(); - } - } - - if (typeof options.ranges === 'undefined' && !this.singleDatePicker) { - this.container.addClass('show-calendar'); - } - - this.container.addClass('opens' + this.opens); - - this.updateView(); - this.updateCalendars(); - - }, - - setStartDate: function(startDate) { - if (typeof startDate === 'string') - this.startDate = moment(startDate, this.format).zone(this.timeZone); - - if (typeof startDate === 'object') - this.startDate = moment(startDate); - - if (!this.timePicker) - this.startDate = this.startDate.startOf('day'); - - this.oldStartDate = this.startDate.clone(); - - this.updateView(); - this.updateCalendars(); - this.updateInputText(); - }, - - setEndDate: function(endDate) { - if (typeof endDate === 'string') - this.endDate = moment(endDate, this.format).zone(this.timeZone); - - if (typeof endDate === 'object') - this.endDate = moment(endDate); - - if (!this.timePicker) - this.endDate = this.endDate.endOf('day'); - - this.oldEndDate = this.endDate.clone(); - - this.updateView(); - this.updateCalendars(); - this.updateInputText(); - }, - - updateView: function () { - this.leftCalendar.month.month(this.startDate.month()).year(this.startDate.year()).hour(this.startDate.hour()).minute(this.startDate.minute()); - this.rightCalendar.month.month(this.endDate.month()).year(this.endDate.year()).hour(this.endDate.hour()).minute(this.endDate.minute()); - this.updateFormInputs(); - }, - - updateFormInputs: function () { - this.container.find('input[name=daterangepicker_start]').val(this.startDate.format(this.format)); - this.container.find('input[name=daterangepicker_end]').val(this.endDate.format(this.format)); - - if (this.startDate.isSame(this.endDate) || this.startDate.isBefore(this.endDate)) { - this.container.find('button.applyBtn').removeAttr('disabled'); - } else { - this.container.find('button.applyBtn').attr('disabled', 'disabled'); - } - }, - - updateFromControl: function () { - if (!this.element.is('input')) return; - if (!this.element.val().length) return; - - var dateString = this.element.val().split(this.separator), - start = null, - end = null; - - if(dateString.length === 2) { - start = moment(dateString[0], this.format).zone(this.timeZone); - end = moment(dateString[1], this.format).zone(this.timeZone); - } - - if (this.singleDatePicker || start === null || end === null) { - start = moment(this.element.val(), this.format).zone(this.timeZone); - end = start; - } - - if (end.isBefore(start)) return; - - this.oldStartDate = this.startDate.clone(); - this.oldEndDate = this.endDate.clone(); - - this.startDate = start; - this.endDate = end; - - if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate)) - this.notify(); - - this.updateCalendars(); - }, - - notify: function () { - this.updateView(); - this.cb(this.startDate, this.endDate, this.chosenLabel); - }, - - move: function () { - var parentOffset = { top: 0, left: 0 }; - var parentRightEdge = $(window).width(); - if (!this.parentEl.is('body')) { - parentOffset = { - top: this.parentEl.offset().top - this.parentEl.scrollTop(), - left: this.parentEl.offset().left - this.parentEl.scrollLeft() - }; - parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left; - } - - if (this.opens == 'left') { - this.container.css({ - top: this.element.offset().top + this.element.outerHeight() - parentOffset.top, - right: parentRightEdge - this.element.offset().left - this.element.outerWidth(), - left: 'auto' - }); - if (this.container.offset().left < 0) { - this.container.css({ - right: 'auto', - left: 9 - }); - } - } else if (this.opens == 'center') { - this.container.css({ - top: this.element.offset().top + this.element.outerHeight() - parentOffset.top, - left: this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2 - - this.container.outerWidth() / 2, - right: 'auto' - }); - if (this.container.offset().left < 0) { - this.container.css({ - right: 'auto', - left: 9 - }); - } - } else { - this.container.css({ - top: this.element.offset().top + this.element.outerHeight() - parentOffset.top, - left: this.element.offset().left - parentOffset.left, - right: 'auto' - }); - if (this.container.offset().left + this.container.outerWidth() > $(window).width()) { - this.container.css({ - left: 'auto', - right: 0 - }); - } - } - }, - - toggle: function (e) { - if (this.element.hasClass('active')) { - this.hide(); - } else { - this.show(); - } - }, - - show: function (e) { - if (this.isShowing) return; - - this.element.addClass('active'); - this.container.show(); - this.move(); - - // Create a click proxy that is private to this instance of datepicker, for unbinding - this._outsideClickProxy = $.proxy(function (e) { this.outsideClick(e); }, this); - // Bind global datepicker mousedown for hiding and - $(document) - .on('mousedown.daterangepicker', this._outsideClickProxy) - // also support mobile devices - .on('touchend.daterangepicker', this._outsideClickProxy) - // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them - .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy) - // and also close when focus changes to outside the picker (eg. tabbing between controls) - .on('focusin.daterangepicker', this._outsideClickProxy); - - this.isShowing = true; - this.element.trigger('show.daterangepicker', this); - }, - - outsideClick: function (e) { - var target = $(e.target); - // if the page is clicked anywhere except within the daterangerpicker/button - // itself then call this.hide() - if ( - // ie modal dialog fix - e.type == "focusin" || - target.closest(this.element).length || - target.closest(this.container).length || - target.closest('.calendar-date').length - ) return; - this.hide(); - }, - - hide: function (e) { - if (!this.isShowing) return; - - $(document) - .off('.daterangepicker'); - - this.element.removeClass('active'); - this.container.hide(); - - if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate)) - this.notify(); - - this.oldStartDate = this.startDate.clone(); - this.oldEndDate = this.endDate.clone(); - - this.isShowing = false; - this.element.trigger('hide.daterangepicker', this); - }, - - enterRange: function (e) { - // mouse pointer has entered a range label - var label = e.target.innerHTML; - if (label == this.locale.customRangeLabel) { - this.updateView(); - } else { - var dates = this.ranges[label]; - this.container.find('input[name=daterangepicker_start]').val(dates[0].format(this.format)); - this.container.find('input[name=daterangepicker_end]').val(dates[1].format(this.format)); - } - }, - - showCalendars: function() { - this.container.addClass('show-calendar'); - this.move(); - this.element.trigger('showCalendar.daterangepicker', this); - }, - - hideCalendars: function() { - this.container.removeClass('show-calendar'); - this.element.trigger('hideCalendar.daterangepicker', this); - }, - - // when a date is typed into the start to end date textboxes - inputsChanged: function (e) { - var el = $(e.target); - var date = moment(el.val(), this.format); - if (!date.isValid()) return; - - var startDate, endDate; - if (el.attr('name') === 'daterangepicker_start') { - startDate = date; - endDate = this.endDate; - } else { - startDate = this.startDate; - endDate = date; - } - this.setCustomDates(startDate, endDate); - }, - - inputsKeydown: function(e) { - if (e.keyCode === 13) { - this.inputsChanged(e); - this.notify(); - } - }, - - updateInputText: function() { - if (this.element.is('input') && !this.singleDatePicker) { - this.element.val(this.startDate.format(this.format) + this.separator + this.endDate.format(this.format)); - } else if (this.element.is('input')) { - this.element.val(this.endDate.format(this.format)); - } - }, - - clickRange: function (e) { - var label = e.target.innerHTML; - this.chosenLabel = label; - if (label == this.locale.customRangeLabel) { - this.showCalendars(); - } else { - var dates = this.ranges[label]; - - this.startDate = dates[0]; - this.endDate = dates[1]; - - if (!this.timePicker) { - this.startDate.startOf('day'); - this.endDate.endOf('day'); - } - - this.leftCalendar.month.month(this.startDate.month()).year(this.startDate.year()).hour(this.startDate.hour()).minute(this.startDate.minute()); - this.rightCalendar.month.month(this.endDate.month()).year(this.endDate.year()).hour(this.endDate.hour()).minute(this.endDate.minute()); - this.updateCalendars(); - - this.updateInputText(); - - this.hideCalendars(); - this.hide(); - this.element.trigger('apply.daterangepicker', this); - } - }, - - clickPrev: function (e) { - var cal = $(e.target).parents('.calendar'); - if (cal.hasClass('left')) { - this.leftCalendar.month.subtract(1, 'month'); - } else { - this.rightCalendar.month.subtract(1, 'month'); - } - this.updateCalendars(); - }, - - clickNext: function (e) { - var cal = $(e.target).parents('.calendar'); - if (cal.hasClass('left')) { - this.leftCalendar.month.add(1, 'month'); - } else { - this.rightCalendar.month.add(1, 'month'); - } - this.updateCalendars(); - }, - - hoverDate: function (e) { - var title = $(e.target).attr('data-title'); - var row = title.substr(1, 1); - var col = title.substr(3, 1); - var cal = $(e.target).parents('.calendar'); - - if (cal.hasClass('left')) { - this.container.find('input[name=daterangepicker_start]').val(this.leftCalendar.calendar[row][col].format(this.format)); - } else { - this.container.find('input[name=daterangepicker_end]').val(this.rightCalendar.calendar[row][col].format(this.format)); - } - }, - - setCustomDates: function(startDate, endDate) { - this.chosenLabel = this.locale.customRangeLabel; - if (startDate.isAfter(endDate)) { - var difference = this.endDate.diff(this.startDate); - endDate = moment(startDate).add(difference, 'ms'); - if (this.maxDate && endDate.isAfter(this.maxDate)) { - endDate = this.maxDate; - } - } - this.startDate = startDate; - this.endDate = endDate; - - this.updateView(); - this.updateCalendars(); - }, - - clickDate: function (e) { - var title = $(e.target).attr('data-title'); - var row = title.substr(1, 1); - var col = title.substr(3, 1); - var cal = $(e.target).parents('.calendar'); - - var startDate, endDate; - if (cal.hasClass('left')) { - startDate = this.leftCalendar.calendar[row][col]; - endDate = this.endDate; - if (typeof this.dateLimit === 'object') { - var maxDate = moment(startDate).add(this.dateLimit).startOf('day'); - if (endDate.isAfter(maxDate)) { - endDate = maxDate; - } - } - } else { - startDate = this.startDate; - endDate = this.rightCalendar.calendar[row][col]; - if (typeof this.dateLimit === 'object') { - var minDate = moment(endDate).subtract(this.dateLimit).startOf('day'); - if (startDate.isBefore(minDate)) { - startDate = minDate; - } - } - } - - if (this.singleDatePicker && cal.hasClass('left')) { - endDate = startDate.clone(); - } else if (this.singleDatePicker && cal.hasClass('right')) { - startDate = endDate.clone(); - } - - cal.find('td').removeClass('active'); - - $(e.target).addClass('active'); - - this.setCustomDates(startDate, endDate); - - if (!this.timePicker) - endDate.endOf('day'); - - if (this.singleDatePicker && !this.timePicker) - this.clickApply(); - }, - - clickApply: function (e) { - this.updateInputText(); - this.hide(); - this.element.trigger('apply.daterangepicker', this); - }, - - clickCancel: function (e) { - this.startDate = this.oldStartDate; - this.endDate = this.oldEndDate; - this.chosenLabel = this.oldChosenLabel; - this.updateView(); - this.updateCalendars(); - this.hide(); - this.element.trigger('cancel.daterangepicker', this); - }, - - updateMonthYear: function (e) { - var isLeft = $(e.target).closest('.calendar').hasClass('left'), - leftOrRight = isLeft ? 'left' : 'right', - cal = this.container.find('.calendar.'+leftOrRight); - - // Month must be Number for new moment versions - var month = parseInt(cal.find('.monthselect').val(), 10); - var year = cal.find('.yearselect').val(); - - this[leftOrRight+'Calendar'].month.month(month).year(year); - this.updateCalendars(); - }, - - updateTime: function(e) { - - var cal = $(e.target).closest('.calendar'), - isLeft = cal.hasClass('left'); - - var hour = parseInt(cal.find('.hourselect').val(), 10); - var minute = parseInt(cal.find('.minuteselect').val(), 10); - var second = 0; - - if (this.timePickerSeconds) { - second = parseInt(cal.find('.secondselect').val(), 10); - } - - if (this.timePicker12Hour) { - var ampm = cal.find('.ampmselect').val(); - if (ampm === 'PM' && hour < 12) - hour += 12; - if (ampm === 'AM' && hour === 12) - hour = 0; - } - - if (isLeft) { - var start = this.startDate.clone(); - start.hour(hour); - start.minute(minute); - start.second(second); - this.startDate = start; - this.leftCalendar.month.hour(hour).minute(minute).second(second); - if (this.singleDatePicker) - this.endDate = start.clone(); - } else { - var end = this.endDate.clone(); - end.hour(hour); - end.minute(minute); - end.second(second); - this.endDate = end; - if (this.singleDatePicker) - this.startDate = end.clone(); - this.rightCalendar.month.hour(hour).minute(minute).second(second); - } - - this.updateView(); - this.updateCalendars(); - }, - - updateCalendars: function () { - this.leftCalendar.calendar = this.buildCalendar(this.leftCalendar.month.month(), this.leftCalendar.month.year(), this.leftCalendar.month.hour(), this.leftCalendar.month.minute(), this.leftCalendar.month.second(), 'left'); - this.rightCalendar.calendar = this.buildCalendar(this.rightCalendar.month.month(), this.rightCalendar.month.year(), this.rightCalendar.month.hour(), this.rightCalendar.month.minute(), this.rightCalendar.month.second(), 'right'); - this.container.find('.calendar.left').empty().html(this.renderCalendar(this.leftCalendar.calendar, this.startDate, this.minDate, this.maxDate, 'left')); - this.container.find('.calendar.right').empty().html(this.renderCalendar(this.rightCalendar.calendar, this.endDate, this.singleDatePicker ? this.minDate : this.startDate, this.maxDate, 'right')); - - this.container.find('.ranges li').removeClass('active'); - var customRange = true; - var i = 0; - for (var range in this.ranges) { - if (this.timePicker) { - if (this.startDate.isSame(this.ranges[range][0]) && this.endDate.isSame(this.ranges[range][1])) { - customRange = false; - this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')') - .addClass('active').html(); - } - } else { - //ignore times when comparing dates if time picker is not enabled - if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) { - customRange = false; - this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')') - .addClass('active').html(); - } - } - i++; - } - if (customRange) { - this.chosenLabel = this.container.find('.ranges li:last').addClass('active').html(); - this.showCalendars(); - } - }, - - buildCalendar: function (month, year, hour, minute, second, side) { - var daysInMonth = moment([year, month]).daysInMonth(); - var firstDay = moment([year, month, 1]); - var lastDay = moment([year, month, daysInMonth]); - var lastMonth = moment(firstDay).subtract(1, 'month').month(); - var lastYear = moment(firstDay).subtract(1, 'month').year(); - - var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth(); - - var dayOfWeek = firstDay.day(); - - var i; - - //initialize a 6 rows x 7 columns array for the calendar - var calendar = []; - calendar.firstDay = firstDay; - calendar.lastDay = lastDay; - - for (i = 0; i < 6; i++) { - calendar[i] = []; - } - - //populate the calendar with date objects - var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1; - if (startDay > daysInLastMonth) - startDay -= 7; - - if (dayOfWeek == this.locale.firstDay) - startDay = daysInLastMonth - 6; - - var curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]).zone(this.timeZone); - - var col, row; - for (i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) { - if (i > 0 && col % 7 === 0) { - col = 0; - row++; - } - calendar[row][col] = curDate.clone().hour(hour); - curDate.hour(12); - - if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') { - calendar[row][col] = this.minDate.clone(); - } - - if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') { - calendar[row][col] = this.maxDate.clone(); - } - - } - - return calendar; - }, - - renderDropdowns: function (selected, minDate, maxDate) { - var currentMonth = selected.month(); - var currentYear = selected.year(); - var maxYear = (maxDate && maxDate.year()) || (currentYear + 5); - var minYear = (minDate && minDate.year()) || (currentYear - 50); - - var monthHtml = '"; - - var yearHtml = ''; - - return monthHtml + yearHtml; - }, - - renderCalendar: function (calendar, selected, minDate, maxDate, side) { - - var html = '
    '; - html += ''; - html += ''; - html += ''; - - // add empty cell for week number - if (this.showWeekNumbers) - html += ''; - - if (!minDate || minDate.isBefore(calendar.firstDay)) { - html += ''; - } else { - html += ''; - } - - var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(" YYYY"); - - if (this.showDropdowns) { - dateHtml = this.renderDropdowns(calendar[1][1], minDate, maxDate); - } - - html += ''; - if (!maxDate || maxDate.isAfter(calendar.lastDay)) { - html += ''; - } else { - html += ''; - } - - html += ''; - html += ''; - - // add week number label - if (this.showWeekNumbers) - html += ''; - - $.each(this.locale.daysOfWeek, function (index, dayOfWeek) { - html += ''; - }); - - html += ''; - html += ''; - html += ''; - - for (var row = 0; row < 6; row++) { - html += ''; - - // add week number - if (this.showWeekNumbers) - html += ''; - - for (var col = 0; col < 7; col++) { - var cname = 'available '; - cname += (calendar[row][col].month() == calendar[1][1].month()) ? '' : 'off'; - - if ((minDate && calendar[row][col].isBefore(minDate, 'day')) || (maxDate && calendar[row][col].isAfter(maxDate, 'day'))) { - cname = ' off disabled '; - } else if (calendar[row][col].format('YYYY-MM-DD') == selected.format('YYYY-MM-DD')) { - cname += ' active '; - if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD')) { - cname += ' start-date '; - } - if (calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD')) { - cname += ' end-date '; - } - } else if (calendar[row][col] >= this.startDate && calendar[row][col] <= this.endDate) { - cname += ' in-range '; - if (calendar[row][col].isSame(this.startDate)) { cname += ' start-date '; } - if (calendar[row][col].isSame(this.endDate)) { cname += ' end-date '; } - } - - var title = 'r' + row + 'c' + col; - html += ''; - } - html += ''; - } - - html += ''; - html += '
    ' + dateHtml + '
    ' + this.locale.weekLabel + '' + dayOfWeek + '
    ' + calendar[row][0].week() + '' + calendar[row][col].date() + '
    '; - html += '
    '; - - var i; - if (this.timePicker) { - - html += '
    '; - html += ' : '; - - html += ' '; - - if (this.timePickerSeconds) { - html += ': '; - } - - if (this.timePicker12Hour) { - html += ''; - } - - html += '
    '; - - } - - return html; - - }, - - remove: function() { - - this.container.remove(); - this.element.off('.daterangepicker'); - this.element.removeData('daterangepicker'); - - } - - }; - - $.fn.daterangepicker = function (options, cb) { - this.each(function () { - var el = $(this); - if (el.data('daterangepicker')) - el.data('daterangepicker').remove(); - el.data('daterangepicker', new DateRangePicker(el, options, cb)); - }); - return this; - }; - -})); diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/moment.js b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/moment.js deleted file mode 100644 index 6d94b173..00000000 --- a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/moment.js +++ /dev/null @@ -1,2808 +0,0 @@ -//! moment.js -//! version : 2.8.1 -//! authors : Tim Wood, Iskren Chernev, Moment.js contributors -//! license : MIT -//! momentjs.com - -(function (undefined) { - /************************************ - Constants - ************************************/ - - var moment, - VERSION = '2.8.1', - // the global-scope this is NOT the global object in Node.js - globalScope = typeof global !== 'undefined' ? global : this, - oldGlobalMoment, - round = Math.round, - i, - - YEAR = 0, - MONTH = 1, - DATE = 2, - HOUR = 3, - MINUTE = 4, - SECOND = 5, - MILLISECOND = 6, - - // internal storage for locale config files - locales = {}, - - // extra moment internal properties (plugins register props here) - momentProperties = [], - - // check for nodeJS - hasModule = (typeof module !== 'undefined' && module.exports), - - // ASP.NET json date format regex - aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, - aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, - - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, - - // format tokens - formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g, - localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g, - - // parsing token regexes - parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 - parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 - parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 - parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 - parseTokenDigits = /\d+/, // nonzero number of digits - parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. - parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z - parseTokenT = /T/i, // T (ISO separator) - parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - parseTokenOrdinal = /\d{1,2}/, - - //strict parsing regexes - parseTokenOneDigit = /\d/, // 0 - 9 - parseTokenTwoDigits = /\d\d/, // 00 - 99 - parseTokenThreeDigits = /\d{3}/, // 000 - 999 - parseTokenFourDigits = /\d{4}/, // 0000 - 9999 - parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 - parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf - - // iso 8601 regex - // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) - isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, - - isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', - - isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], - ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], - ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], - ['GGGG-[W]WW', /\d{4}-W\d{2}/], - ['YYYY-DDD', /\d{4}-\d{3}/] - ], - - // iso time formats and regexes - isoTimes = [ - ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] - ], - - // timezone chunker "+10:00" > ["10", "00"] or "-1530" > ["-15", "30"] - parseTimezoneChunker = /([\+\-]|\d\d)/gi, - - // getter and setter names - proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), - unitMillisecondFactors = { - 'Milliseconds' : 1, - 'Seconds' : 1e3, - 'Minutes' : 6e4, - 'Hours' : 36e5, - 'Days' : 864e5, - 'Months' : 2592e6, - 'Years' : 31536e6 - }, - - unitAliases = { - ms : 'millisecond', - s : 'second', - m : 'minute', - h : 'hour', - d : 'day', - D : 'date', - w : 'week', - W : 'isoWeek', - M : 'month', - Q : 'quarter', - y : 'year', - DDD : 'dayOfYear', - e : 'weekday', - E : 'isoWeekday', - gg: 'weekYear', - GG: 'isoWeekYear' - }, - - camelFunctions = { - dayofyear : 'dayOfYear', - isoweekday : 'isoWeekday', - isoweek : 'isoWeek', - weekyear : 'weekYear', - isoweekyear : 'isoWeekYear' - }, - - // format function strings - formatFunctions = {}, - - // default relative time thresholds - relativeTimeThresholds = { - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month - M: 11 // months to year - }, - - // tokens to ordinalize and pad - ordinalizeTokens = 'DDD w W M D d'.split(' '), - paddedTokens = 'M D H h m s w W'.split(' '), - - formatTokenFunctions = { - M : function () { - return this.month() + 1; - }, - MMM : function (format) { - return this.localeData().monthsShort(this, format); - }, - MMMM : function (format) { - return this.localeData().months(this, format); - }, - D : function () { - return this.date(); - }, - DDD : function () { - return this.dayOfYear(); - }, - d : function () { - return this.day(); - }, - dd : function (format) { - return this.localeData().weekdaysMin(this, format); - }, - ddd : function (format) { - return this.localeData().weekdaysShort(this, format); - }, - dddd : function (format) { - return this.localeData().weekdays(this, format); - }, - w : function () { - return this.week(); - }, - W : function () { - return this.isoWeek(); - }, - YY : function () { - return leftZeroFill(this.year() % 100, 2); - }, - YYYY : function () { - return leftZeroFill(this.year(), 4); - }, - YYYYY : function () { - return leftZeroFill(this.year(), 5); - }, - YYYYYY : function () { - var y = this.year(), sign = y >= 0 ? '+' : '-'; - return sign + leftZeroFill(Math.abs(y), 6); - }, - gg : function () { - return leftZeroFill(this.weekYear() % 100, 2); - }, - gggg : function () { - return leftZeroFill(this.weekYear(), 4); - }, - ggggg : function () { - return leftZeroFill(this.weekYear(), 5); - }, - GG : function () { - return leftZeroFill(this.isoWeekYear() % 100, 2); - }, - GGGG : function () { - return leftZeroFill(this.isoWeekYear(), 4); - }, - GGGGG : function () { - return leftZeroFill(this.isoWeekYear(), 5); - }, - e : function () { - return this.weekday(); - }, - E : function () { - return this.isoWeekday(); - }, - a : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), true); - }, - A : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), false); - }, - H : function () { - return this.hours(); - }, - h : function () { - return this.hours() % 12 || 12; - }, - m : function () { - return this.minutes(); - }, - s : function () { - return this.seconds(); - }, - S : function () { - return toInt(this.milliseconds() / 100); - }, - SS : function () { - return leftZeroFill(toInt(this.milliseconds() / 10), 2); - }, - SSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - SSSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - Z : function () { - var a = -this.zone(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); - }, - ZZ : function () { - var a = -this.zone(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); - }, - z : function () { - return this.zoneAbbr(); - }, - zz : function () { - return this.zoneName(); - }, - X : function () { - return this.unix(); - }, - Q : function () { - return this.quarter(); - } - }, - - deprecations = {}, - - lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin']; - - // Pick the first defined of two or three arguments. dfl comes from - // default. - function dfl(a, b, c) { - switch (arguments.length) { - case 2: return a != null ? a : b; - case 3: return a != null ? a : b != null ? b : c; - default: throw new Error('Implement me'); - } - } - - function defaultParsingFlags() { - // We need to deep clone this object, and es5 standard is not very - // helpful. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso: false - }; - } - - function printMsg(msg) { - if (moment.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && console.warn) { - console.warn("Deprecation warning: " + msg); - } - } - - function deprecate(msg, fn) { - var firstTime = true; - return extend(function () { - if (firstTime) { - printMsg(msg); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } - - function deprecateSimple(name, msg) { - if (!deprecations[name]) { - printMsg(msg); - deprecations[name] = true; - } - } - - function padToken(func, count) { - return function (a) { - return leftZeroFill(func.call(this, a), count); - }; - } - function ordinalizeToken(func, period) { - return function (a) { - return this.localeData().ordinal(func.call(this, a), period); - }; - } - - while (ordinalizeTokens.length) { - i = ordinalizeTokens.pop(); - formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); - } - while (paddedTokens.length) { - i = paddedTokens.pop(); - formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); - } - formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); - - - /************************************ - Constructors - ************************************/ - - function Locale() { - } - - // Moment prototype object - function Moment(config, skipOverflow) { - if (skipOverflow !== false) { - checkOverflow(config); - } - copyConfig(this, config); - this._d = new Date(+config._d); - } - - // Duration Constructor - function Duration(duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; - - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; - - this._data = {}; - - this._locale = moment.localeData(); - - this._bubble(); - } - - /************************************ - Helpers - ************************************/ - - - function extend(a, b) { - for (var i in b) { - if (b.hasOwnProperty(i)) { - a[i] = b[i]; - } - } - - if (b.hasOwnProperty('toString')) { - a.toString = b.toString; - } - - if (b.hasOwnProperty('valueOf')) { - a.valueOf = b.valueOf; - } - - return a; - } - - function copyConfig(to, from) { - var i, prop, val; - - if (typeof from._isAMomentObject !== 'undefined') { - to._isAMomentObject = from._isAMomentObject; - } - if (typeof from._i !== 'undefined') { - to._i = from._i; - } - if (typeof from._f !== 'undefined') { - to._f = from._f; - } - if (typeof from._l !== 'undefined') { - to._l = from._l; - } - if (typeof from._strict !== 'undefined') { - to._strict = from._strict; - } - if (typeof from._tzm !== 'undefined') { - to._tzm = from._tzm; - } - if (typeof from._isUTC !== 'undefined') { - to._isUTC = from._isUTC; - } - if (typeof from._offset !== 'undefined') { - to._offset = from._offset; - } - if (typeof from._pf !== 'undefined') { - to._pf = from._pf; - } - if (typeof from._locale !== 'undefined') { - to._locale = from._locale; - } - - if (momentProperties.length > 0) { - for (i in momentProperties) { - prop = momentProperties[i]; - val = from[prop]; - if (typeof val !== 'undefined') { - to[prop] = val; - } - } - } - - return to; - } - - function absRound(number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); - } - } - - // left zero fill a number - // see http://jsperf.com/left-zero-filling for performance comparison - function leftZeroFill(number, targetLength, forceSign) { - var output = '' + Math.abs(number), - sign = number >= 0; - - while (output.length < targetLength) { - output = '0' + output; - } - return (sign ? (forceSign ? '+' : '') : '-') + output; - } - - function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; - - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; - } - - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - - return res; - } - - function momentsDifference(base, other) { - var res; - other = makeAs(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; - } - - return res; - } - - // TODO: remove 'name' arg after deprecation is removed - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, "moment()." + name + "(period, number) is deprecated. Please use moment()." + name + "(number, period)."); - tmp = val; val = period; period = tmp; - } - - val = typeof val === 'string' ? +val : val; - dur = moment.duration(val, period); - addOrSubtractDurationFromMoment(this, dur, direction); - return this; - }; - } - - function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; - - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); - } - if (days) { - rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); - } - if (months) { - rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); - } - if (updateOffset) { - moment.updateOffset(mom, days || months); - } - } - - // check if is an array - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; - } - - function isDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || - input instanceof Date; - } - - // compare two arrays, return the number of differences - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } - } - return diffs + lengthDiff; - } - - function normalizeUnits(units) { - if (units) { - var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); - units = unitAliases[units] || camelFunctions[lowered] || lowered; - } - return units; - } - - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; - - for (prop in inputObject) { - if (inputObject.hasOwnProperty(prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } - - return normalizedInput; - } - - function makeList(field) { - var count, setter; - - if (field.indexOf('week') === 0) { - count = 7; - setter = 'day'; - } - else if (field.indexOf('month') === 0) { - count = 12; - setter = 'month'; - } - else { - return; - } - - moment[field] = function (format, index) { - var i, getter, - method = moment._locale[field], - results = []; - - if (typeof format === 'number') { - index = format; - format = undefined; - } - - getter = function (i) { - var m = moment().utc().set(setter, i); - return method.call(moment._locale, m, format || ''); - }; - - if (index != null) { - return getter(index); - } - else { - for (i = 0; i < count; i++) { - results.push(getter(i)); - } - return results; - } - }; - } - - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - if (coercedNumber >= 0) { - value = Math.floor(coercedNumber); - } else { - value = Math.ceil(coercedNumber); - } - } - - return value; - } - - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); - } - - function weeksInYear(year, dow, doy) { - return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; - } - - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } - - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } - - function checkOverflow(m) { - var overflow; - if (m._a && m._pf.overflow === -2) { - overflow = - m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : - m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : - m._a[HOUR] < 0 || m._a[HOUR] > 23 ? HOUR : - m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : - m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : - m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : - -1; - - if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } - - m._pf.overflow = overflow; - } - } - - function isValid(m) { - if (m._isValid == null) { - m._isValid = !isNaN(m._d.getTime()) && - m._pf.overflow < 0 && - !m._pf.empty && - !m._pf.invalidMonth && - !m._pf.nullInput && - !m._pf.invalidFormat && - !m._pf.userInvalidated; - - if (m._strict) { - m._isValid = m._isValid && - m._pf.charsLeftOver === 0 && - m._pf.unusedTokens.length === 0; - } - } - return m._isValid; - } - - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; - } - - // pick the locale from the array - // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - function chooseLocale(names) { - var i = 0, j, next, locale, split; - - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; - } - return null; - } - - function loadLocale(name) { - var oldLocale = null; - if (!locales[name] && hasModule) { - try { - oldLocale = moment.locale(); - require('./locale/' + name); - // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales - moment.locale(oldLocale); - } catch (e) { } - } - return locales[name]; - } - - // Return a moment from input, that is local/utc/zone equivalent to model. - function makeAs(input, model) { - return model._isUTC ? moment(input).zone(model._offset || 0) : - moment(input).local(); - } - - /************************************ - Locale - ************************************/ - - - extend(Locale.prototype, { - - set : function (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - }, - - _months : '1_2_3_4_May_June_July_August_September_October_November_December'.split('_'), - months : function (m) { - return this._months[m.month()]; - }, - - _monthsShort : '1_2_3_4_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - monthsShort : function (m) { - return this._monthsShort[m.month()]; - }, - - monthsParse : function (monthName) { - var i, mom, regex; - - if (!this._monthsParse) { - this._monthsParse = []; - } - - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - if (!this._monthsParse[i]) { - mom = moment.utc([2000, i]); - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._monthsParse[i].test(monthName)) { - return i; - } - } - }, - - _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdays : function (m) { - return this._weekdays[m.day()]; - }, - - _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysShort : function (m) { - return this._weekdaysShort[m.day()]; - }, - - _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - weekdaysMin : function (m) { - return this._weekdaysMin[m.day()]; - }, - - weekdaysParse : function (weekdayName) { - var i, mom, regex; - - if (!this._weekdaysParse) { - this._weekdaysParse = []; - } - - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - if (!this._weekdaysParse[i]) { - mom = moment([2000, 1]).day(i); - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { - return i; - } - } - }, - - _longDateFormat : { - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY LT', - LLLL : 'dddd, MMMM D, YYYY LT' - }, - longDateFormat : function (key) { - var output = this._longDateFormat[key]; - if (!output && this._longDateFormat[key.toUpperCase()]) { - output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - this._longDateFormat[key] = output; - } - return output; - }, - - isPM : function (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); - }, - - _meridiemParse : /[ap]\.?m?\.?/i, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } - }, - - _calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - calendar : function (key, mom) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.apply(mom) : output; - }, - - _relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - - relativeTime : function (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - }, - - pastFuture : function (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - }, - - ordinal : function (number) { - return this._ordinal.replace('%d', number); - }, - _ordinal : '%d', - - preparse : function (string) { - return string; - }, - - postformat : function (string) { - return string; - }, - - week : function (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - }, - - _week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - }, - - _invalidDate: 'Invalid date', - invalidDate: function () { - return this._invalidDate; - } - }); - - /************************************ - Formatting - ************************************/ - - - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); - } - - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; - - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } - } - - return function (mom) { - var output = ''; - for (i = 0; i < length; i++) { - output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; - } - return output; - }; - } - - // format date using native date object - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); - } - - format = expandFormat(format, m.localeData()); - - if (!formatFunctions[format]) { - formatFunctions[format] = makeFormatFunction(format); - } - - return formatFunctions[format](m); - } - - function expandFormat(format, locale) { - var i = 5; - - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } - - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } - - return format; - } - - - /************************************ - Parsing - ************************************/ - - - // get the regex to find the next token - function getParseRegexForToken(token, config) { - var a, strict = config._strict; - switch (token) { - case 'Q': - return parseTokenOneDigit; - case 'DDDD': - return parseTokenThreeDigits; - case 'YYYY': - case 'GGGG': - case 'gggg': - return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; - case 'Y': - case 'G': - case 'g': - return parseTokenSignedNumber; - case 'YYYYYY': - case 'YYYYY': - case 'GGGGG': - case 'ggggg': - return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; - case 'S': - if (strict) { - return parseTokenOneDigit; - } - /* falls through */ - case 'SS': - if (strict) { - return parseTokenTwoDigits; - } - /* falls through */ - case 'SSS': - if (strict) { - return parseTokenThreeDigits; - } - /* falls through */ - case 'DDD': - return parseTokenOneToThreeDigits; - case 'MMM': - case 'MMMM': - case 'dd': - case 'ddd': - case 'dddd': - return parseTokenWord; - case 'a': - case 'A': - return config._locale._meridiemParse; - case 'X': - return parseTokenTimestampMs; - case 'Z': - case 'ZZ': - return parseTokenTimezone; - case 'T': - return parseTokenT; - case 'SSSS': - return parseTokenDigits; - case 'MM': - case 'DD': - case 'YY': - case 'GG': - case 'gg': - case 'HH': - case 'hh': - case 'mm': - case 'ss': - case 'ww': - case 'WW': - return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; - case 'M': - case 'D': - case 'd': - case 'H': - case 'h': - case 'm': - case 's': - case 'w': - case 'W': - case 'e': - case 'E': - return parseTokenOneOrTwoDigits; - case 'Do': - return parseTokenOrdinal; - default : - a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); - return a; - } - } - - function timezoneMinutesFromString(string) { - string = string || ''; - var possibleTzMatches = (string.match(parseTokenTimezone) || []), - tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], - parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], - minutes = +(parts[1] * 60) + toInt(parts[2]); - - return parts[0] === '+' ? -minutes : minutes; - } - - // function to convert string input to date - function addTimeToArrayFromToken(token, input, config) { - var a, datePartArray = config._a; - - switch (token) { - // QUARTER - case 'Q': - if (input != null) { - datePartArray[MONTH] = (toInt(input) - 1) * 3; - } - break; - // MONTH - case 'M' : // fall through to MM - case 'MM' : - if (input != null) { - datePartArray[MONTH] = toInt(input) - 1; - } - break; - case 'MMM' : // fall through to MMMM - case 'MMMM' : - a = config._locale.monthsParse(input); - // if we didn't find a month name, mark the date as invalid. - if (a != null) { - datePartArray[MONTH] = a; - } else { - config._pf.invalidMonth = input; - } - break; - // DAY OF MONTH - case 'D' : // fall through to DD - case 'DD' : - if (input != null) { - datePartArray[DATE] = toInt(input); - } - break; - case 'Do' : - if (input != null) { - datePartArray[DATE] = toInt(parseInt(input, 10)); - } - break; - // DAY OF YEAR - case 'DDD' : // fall through to DDDD - case 'DDDD' : - if (input != null) { - config._dayOfYear = toInt(input); - } - - break; - // YEAR - case 'YY' : - datePartArray[YEAR] = moment.parseTwoDigitYear(input); - break; - case 'YYYY' : - case 'YYYYY' : - case 'YYYYYY' : - datePartArray[YEAR] = toInt(input); - break; - // AM / PM - case 'a' : // fall through to A - case 'A' : - config._isPm = config._locale.isPM(input); - break; - // 24 HOUR - case 'H' : // fall through to hh - case 'HH' : // fall through to hh - case 'h' : // fall through to hh - case 'hh' : - datePartArray[HOUR] = toInt(input); - break; - // MINUTE - case 'm' : // fall through to mm - case 'mm' : - datePartArray[MINUTE] = toInt(input); - break; - // SECOND - case 's' : // fall through to ss - case 'ss' : - datePartArray[SECOND] = toInt(input); - break; - // MILLISECOND - case 'S' : - case 'SS' : - case 'SSS' : - case 'SSSS' : - datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); - break; - // UNIX TIMESTAMP WITH MS - case 'X': - config._d = new Date(parseFloat(input) * 1000); - break; - // TIMEZONE - case 'Z' : // fall through to ZZ - case 'ZZ' : - config._useUTC = true; - config._tzm = timezoneMinutesFromString(input); - break; - // WEEKDAY - human - case 'dd': - case 'ddd': - case 'dddd': - a = config._locale.weekdaysParse(input); - // if we didn't get a weekday name, mark the date as invalid - if (a != null) { - config._w = config._w || {}; - config._w['d'] = a; - } else { - config._pf.invalidWeekday = input; - } - break; - // WEEK, WEEK DAY - numeric - case 'w': - case 'ww': - case 'W': - case 'WW': - case 'd': - case 'e': - case 'E': - token = token.substr(0, 1); - /* falls through */ - case 'gggg': - case 'GGGG': - case 'GGGGG': - token = token.substr(0, 2); - if (input) { - config._w = config._w || {}; - config._w[token] = toInt(input); - } - break; - case 'gg': - case 'GG': - config._w = config._w || {}; - config._w[token] = moment.parseTwoDigitYear(input); - } - } - - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; - - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; - - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); - week = dfl(w.W, 1); - weekday = dfl(w.E, 1); - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; - - weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); - week = dfl(w.w, 1); - - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < dow) { - ++week; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - } else { - // default to begining of week - weekday = dow; - } - } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } - - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function dateFromConfig(config) { - var i, date, input = [], currentDate, yearToUse; - - if (config._d) { - return; - } - - currentDate = currentDateArray(config); - - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } - - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); - - if (config._dayOfYear > daysInYear(yearToUse)) { - config._pf._overflowDayOfYear = true; - } - - date = makeUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } - - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } - - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } - - config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); - // Apply timezone offset from input. The actual zone can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() + config._tzm); - } - } - - function dateFromObject(config) { - var normalizedInput; - - if (config._d) { - return; - } - - normalizedInput = normalizeObjectUnits(config._i); - config._a = [ - normalizedInput.year, - normalizedInput.month, - normalizedInput.day, - normalizedInput.hour, - normalizedInput.minute, - normalizedInput.second, - normalizedInput.millisecond - ]; - - dateFromConfig(config); - } - - function currentDateArray(config) { - var now = new Date(); - if (config._useUTC) { - return [ - now.getUTCFullYear(), - now.getUTCMonth(), - now.getUTCDate() - ]; - } else { - return [now.getFullYear(), now.getMonth(), now.getDate()]; - } - } - - // date from string and format string - function makeDateFromStringAndFormat(config) { - if (config._f === moment.ISO_8601) { - parseISO(config); - return; - } - - config._a = []; - config._pf.empty = true; - - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; - - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - config._pf.unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - config._pf.empty = false; - } - else { - config._pf.unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - config._pf.unusedTokens.push(token); - } - } - - // add remaining unparsed input length to the string - config._pf.charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - config._pf.unusedInput.push(string); - } - - // handle am pm - if (config._isPm && config._a[HOUR] < 12) { - config._a[HOUR] += 12; - } - // if is 12 am, change hours to 0 - if (config._isPm === false && config._a[HOUR] === 12) { - config._a[HOUR] = 0; - } - - dateFromConfig(config); - checkOverflow(config); - } - - function unescapeFormat(s) { - return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }); - } - - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function regexpEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - } - - // date from string and array of format strings - function makeDateFromStringAndArray(config) { - var tempConfig, - bestMoment, - - scoreToBeat, - i, - currentScore; - - if (config._f.length === 0) { - config._pf.invalidFormat = true; - config._d = new Date(NaN); - return; - } - - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - tempConfig._pf = defaultParsingFlags(); - tempConfig._f = config._f[i]; - makeDateFromStringAndFormat(tempConfig); - - if (!isValid(tempConfig)) { - continue; - } - - // if there is any input that was not parsed add a penalty for that format - currentScore += tempConfig._pf.charsLeftOver; - - //or tokens - currentScore += tempConfig._pf.unusedTokens.length * 10; - - tempConfig._pf.score = currentScore; - - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } - - extend(config, bestMoment || tempConfig); - } - - // date from iso format - function parseISO(config) { - var i, l, - string = config._i, - match = isoRegex.exec(string); - - if (match) { - config._pf.iso = true; - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(string)) { - // match[5] should be "T" or undefined - config._f = isoDates[i][0] + (match[6] || ' '); - break; - } - } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - config._f += isoTimes[i][0]; - break; - } - } - if (string.match(parseTokenTimezone)) { - config._f += 'Z'; - } - makeDateFromStringAndFormat(config); - } else { - config._isValid = false; - } - } - - // date from iso format or fallback - function makeDateFromString(config) { - parseISO(config); - if (config._isValid === false) { - delete config._isValid; - moment.createFromInputFallback(config); - } - } - - function makeDateFromInput(config) { - var input = config._i, matched; - if (input === undefined) { - config._d = new Date(); - } else if (isDate(input)) { - config._d = new Date(+input); - } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { - config._d = new Date(+matched[1]); - } else if (typeof input === 'string') { - makeDateFromString(config); - } else if (isArray(input)) { - config._a = input.slice(0); - dateFromConfig(config); - } else if (typeof(input) === 'object') { - dateFromObject(config); - } else if (typeof(input) === 'number') { - // from milliseconds - config._d = new Date(input); - } else { - moment.createFromInputFallback(config); - } - } - - function makeDate(y, m, d, h, M, s, ms) { - //can't just apply() to create a date: - //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply - var date = new Date(y, m, d, h, M, s, ms); - - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); - } - return date; - } - - function makeUTCDate(y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); - } - return date; - } - - function parseWeekday(input, locale) { - if (typeof input === 'string') { - if (!isNaN(input)) { - input = parseInt(input, 10); - } - else { - input = locale.weekdaysParse(input); - if (typeof input !== 'number') { - return null; - } - } - } - return input; - } - - /************************************ - Relative Time - ************************************/ - - - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); - } - - function relativeTime(posNegDuration, withoutSuffix, locale) { - var duration = moment.duration(posNegDuration).abs(), - seconds = round(duration.as('s')), - minutes = round(duration.as('m')), - hours = round(duration.as('h')), - days = round(duration.as('d')), - months = round(duration.as('M')), - years = round(duration.as('y')), - - args = seconds < relativeTimeThresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < relativeTimeThresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || - hours < relativeTimeThresholds.h && ['hh', hours] || - days === 1 && ['d'] || - days < relativeTimeThresholds.d && ['dd', days] || - months === 1 && ['M'] || - months < relativeTimeThresholds.M && ['MM', months] || - years === 1 && ['y'] || ['yy', years]; - - args[2] = withoutSuffix; - args[3] = +posNegDuration > 0; - args[4] = locale; - return substituteTimeAgo.apply({}, args); - } - - - /************************************ - Week of Year - ************************************/ - - - // firstDayOfWeek 0 = sun, 6 = sat - // the day of the week that starts the week - // (usually sunday or monday) - // firstDayOfWeekOfYear 0 = sun, 6 = sat - // the first week is the week that contains the first - // of this day of the week - // (eg. ISO weeks use thursday (4)) - function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { - var end = firstDayOfWeekOfYear - firstDayOfWeek, - daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), - adjustedMoment; - - - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; - } - - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; - } - - adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; - } - - //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; - - d = d === 0 ? 7 : d; - weekday = weekday != null ? weekday : firstDayOfWeek; - daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); - dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; - - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear - }; - } - - /************************************ - Top Level Functions - ************************************/ - - function makeMoment(config) { - var input = config._i, - format = config._f; - - config._locale = config._locale || moment.localeData(config._l); - - if (input === null || (format === undefined && input === '')) { - return moment.invalid({nullInput: true}); - } - - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } - - if (moment.isMoment(input)) { - return new Moment(input, true); - } else if (format) { - if (isArray(format)) { - makeDateFromStringAndArray(config); - } else { - makeDateFromStringAndFormat(config); - } - } else { - makeDateFromInput(config); - } - - return new Moment(config); - } - - moment = function (input, format, locale, strict) { - var c; - - if (typeof(locale) === "boolean") { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._i = input; - c._f = format; - c._l = locale; - c._strict = strict; - c._isUTC = false; - c._pf = defaultParsingFlags(); - - return makeMoment(c); - }; - - moment.suppressDeprecationWarnings = false; - - moment.createFromInputFallback = deprecate( - 'moment construction falls back to js Date. This is ' + - 'discouraged and will be removed in upcoming major ' + - 'release. Please refer to ' + - 'https://github.com/moment/moment/issues/1407 for more info.', - function (config) { - config._d = new Date(config._i); - } - ); - - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return moment(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (moments[i][fn](res)) { - res = moments[i]; - } - } - return res; - } - - moment.min = function () { - var args = [].slice.call(arguments, 0); - - return pickBy('isBefore', args); - }; - - moment.max = function () { - var args = [].slice.call(arguments, 0); - - return pickBy('isAfter', args); - }; - - // creating with utc - moment.utc = function (input, format, locale, strict) { - var c; - - if (typeof(locale) === "boolean") { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._useUTC = true; - c._isUTC = true; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - c._pf = defaultParsingFlags(); - - return makeMoment(c).utc(); - }; - - // creating with unix timestamp (in seconds) - moment.unix = function (input) { - return moment(input * 1000); - }; - - // duration - moment.duration = function (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - parseIso, - diffRes; - - if (moment.isDuration(input)) { - duration = { - ms: input._milliseconds, - d: input._days, - M: input._months - }; - } else if (typeof input === 'number') { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y: 0, - d: toInt(match[DATE]) * sign, - h: toInt(match[HOUR]) * sign, - m: toInt(match[MINUTE]) * sign, - s: toInt(match[SECOND]) * sign, - ms: toInt(match[MILLISECOND]) * sign - }; - } else if (!!(match = isoDurationRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - parseIso = function (inp) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - }; - duration = { - y: parseIso(match[2]), - M: parseIso(match[3]), - d: parseIso(match[4]), - h: parseIso(match[5]), - m: parseIso(match[6]), - s: parseIso(match[7]), - w: parseIso(match[8]) - }; - } else if (typeof duration === 'object' && - ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(moment(duration.from), moment(duration.to)); - - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } - - ret = new Duration(duration); - - if (moment.isDuration(input) && input.hasOwnProperty('_locale')) { - ret._locale = input._locale; - } - - return ret; - }; - - // version number - moment.version = VERSION; - - // default format - moment.defaultFormat = isoFormat; - - // constant that refers to the ISO standard - moment.ISO_8601 = function () {}; - - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - moment.momentProperties = momentProperties; - - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - moment.updateOffset = function () {}; - - // This function allows you to set a threshold for relative time strings - moment.relativeTimeThreshold = function (threshold, limit) { - if (relativeTimeThresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return relativeTimeThresholds[threshold]; - } - relativeTimeThresholds[threshold] = limit; - return true; - }; - - moment.lang = deprecate( - "moment.lang is deprecated. Use moment.locale instead.", - function (key, value) { - return moment.locale(key, value); - } - ); - - // This function will load locale and then set the global locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - moment.locale = function (key, values) { - var data; - if (key) { - if (typeof(values) !== "undefined") { - data = moment.defineLocale(key, values); - } - else { - data = moment.localeData(key); - } - - if (data) { - moment.duration._locale = moment._locale = data; - } - } - - return moment._locale._abbr; - }; - - moment.defineLocale = function (name, values) { - if (values !== null) { - values.abbr = name; - if (!locales[name]) { - locales[name] = new Locale(); - } - locales[name].set(values); - - // backwards compat for now: also set the locale - moment.locale(name); - - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } - }; - - moment.langData = deprecate( - "moment.langData is deprecated. Use moment.localeData instead.", - function (key) { - return moment.localeData(key); - } - ); - - // returns locale data - moment.localeData = function (key) { - var locale; - - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } - - if (!key) { - return moment._locale; - } - - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; - } - - return chooseLocale(key); - }; - - // compare moment object - moment.isMoment = function (obj) { - return obj instanceof Moment || - (obj != null && obj.hasOwnProperty('_isAMomentObject')); - }; - - // for typechecking Duration objects - moment.isDuration = function (obj) { - return obj instanceof Duration; - }; - - for (i = lists.length - 1; i >= 0; --i) { - makeList(lists[i]); - } - - moment.normalizeUnits = function (units) { - return normalizeUnits(units); - }; - - moment.invalid = function (flags) { - var m = moment.utc(NaN); - if (flags != null) { - extend(m._pf, flags); - } - else { - m._pf.userInvalidated = true; - } - - return m; - }; - - moment.parseZone = function () { - return moment.apply(null, arguments).parseZone(); - }; - - moment.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; - - /************************************ - Moment Prototype - ************************************/ - - - extend(moment.fn = Moment.prototype, { - - clone : function () { - return moment(this); - }, - - valueOf : function () { - return +this._d + ((this._offset || 0) * 60000); - }, - - unix : function () { - return Math.floor(+this / 1000); - }, - - toString : function () { - return this.clone().locale('en').format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ"); - }, - - toDate : function () { - return this._offset ? new Date(+this) : this._d; - }, - - toISOString : function () { - var m = moment(this).utc(); - if (0 < m.year() && m.year() <= 9999) { - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } else { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - }, - - toArray : function () { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hours(), - m.minutes(), - m.seconds(), - m.milliseconds() - ]; - }, - - isValid : function () { - return isValid(this); - }, - - isDSTShifted : function () { - if (this._a) { - return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; - } - - return false; - }, - - parsingFlags : function () { - return extend({}, this._pf); - }, - - invalidAt: function () { - return this._pf.overflow; - }, - - utc : function (keepLocalTime) { - return this.zone(0, keepLocalTime); - }, - - local : function (keepLocalTime) { - if (this._isUTC) { - this.zone(0, keepLocalTime); - this._isUTC = false; - - if (keepLocalTime) { - this.add(this._d.getTimezoneOffset(), 'm'); - } - } - return this; - }, - - format : function (inputString) { - var output = formatMoment(this, inputString || moment.defaultFormat); - return this.localeData().postformat(output); - }, - - add : createAdder(1, 'add'), - - subtract : createAdder(-1, 'subtract'), - - diff : function (input, units, asFloat) { - var that = makeAs(input, this), - zoneDiff = (this.zone() - that.zone()) * 6e4, - diff, output; - - units = normalizeUnits(units); - - if (units === 'year' || units === 'month') { - // average number of days in the months in the given dates - diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2 - // difference in months - output = ((this.year() - that.year()) * 12) + (this.month() - that.month()); - // adjust by taking difference in days, average number of days - // and dst in the given months. - output += ((this - moment(this).startOf('month')) - - (that - moment(that).startOf('month'))) / diff; - // same as above but with zones, to negate all dst - output -= ((this.zone() - moment(this).startOf('month').zone()) - - (that.zone() - moment(that).startOf('month').zone())) * 6e4 / diff; - if (units === 'year') { - output = output / 12; - } - } else { - diff = (this - that); - output = units === 'second' ? diff / 1e3 : // 1000 - units === 'minute' ? diff / 6e4 : // 1000 * 60 - units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - diff; - } - return asFloat ? output : absRound(output); - }, - - from : function (time, withoutSuffix) { - return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - }, - - fromNow : function (withoutSuffix) { - return this.from(moment(), withoutSuffix); - }, - - calendar : function (time) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're zone'd or not. - var now = time || moment(), - sod = makeAs(now, this).startOf('day'), - diff = this.diff(sod, 'days', true), - format = diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(this.localeData().calendar(format, this)); - }, - - isLeapYear : function () { - return isLeapYear(this.year()); - }, - - isDST : function () { - return (this.zone() < this.clone().month(0).zone() || - this.zone() < this.clone().month(5).zone()); - }, - - day : function (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } - }, - - month : makeAccessor('Month', true), - - startOf : function (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - /* falls through */ - } - - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } else if (units === 'isoWeek') { - this.isoWeekday(1); - } - - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } - - return this; - }, - - endOf: function (units) { - units = normalizeUnits(units); - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); - }, - - isAfter: function (input, units) { - units = typeof units !== 'undefined' ? units : 'millisecond'; - return +this.clone().startOf(units) > +moment(input).startOf(units); - }, - - isBefore: function (input, units) { - units = typeof units !== 'undefined' ? units : 'millisecond'; - return +this.clone().startOf(units) < +moment(input).startOf(units); - }, - - isSame: function (input, units) { - units = units || 'ms'; - return +this.clone().startOf(units) === +makeAs(input, this).startOf(units); - }, - - min: deprecate( - 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other < this ? this : other; - } - ), - - max: deprecate( - 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other > this ? this : other; - } - ), - - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[zone(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist int zone - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - zone : function (input, keepLocalTime) { - var offset = this._offset || 0, - localAdjust; - if (input != null) { - if (typeof input === 'string') { - input = timezoneMinutesFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = this._d.getTimezoneOffset(); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.subtract(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addOrSubtractDurationFromMoment(this, - moment.duration(offset - input, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - moment.updateOffset(this, true); - this._changeInProgress = null; - } - } - } else { - return this._isUTC ? offset : this._d.getTimezoneOffset(); - } - return this; - }, - - zoneAbbr : function () { - return this._isUTC ? 'UTC' : ''; - }, - - zoneName : function () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - }, - - parseZone : function () { - if (this._tzm) { - this.zone(this._tzm); - } else if (typeof this._i === 'string') { - this.zone(this._i); - } - return this; - }, - - hasAlignedHourOffset : function (input) { - if (!input) { - input = 0; - } - else { - input = moment(input).zone(); - } - - return (this.zone() - input) % 60 === 0; - }, - - daysInMonth : function () { - return daysInMonth(this.year(), this.month()); - }, - - dayOfYear : function (input) { - var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); - }, - - quarter : function (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - }, - - weekYear : function (input) { - var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; - return input == null ? year : this.add((input - year), 'y'); - }, - - isoWeekYear : function (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); - }, - - week : function (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - }, - - isoWeek : function (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - }, - - weekday : function (input) { - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - }, - - isoWeekday : function (input) { - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); - }, - - isoWeeksInYear : function () { - return weeksInYear(this.year(), 1, 4); - }, - - weeksInYear : function () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - }, - - get : function (units) { - units = normalizeUnits(units); - return this[units](); - }, - - set : function (units, value) { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - this[units](value); - } - return this; - }, - - // If passed a locale key, it will set the locale for this - // instance. Otherwise, it will return the locale configuration - // variables for this instance. - locale : function (key) { - if (key === undefined) { - return this._locale._abbr; - } else { - this._locale = moment.localeData(key); - return this; - } - }, - - lang : deprecate( - "moment().lang() is deprecated. Use moment().localeData() instead.", - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - this._locale = moment.localeData(key); - return this; - } - } - ), - - localeData : function () { - return this._locale; - } - }); - - function rawMonthSetter(mom, value) { - var dayOfMonth; - - // TODO: Move this out of here! - if (typeof value === 'string') { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; - } - } - - dayOfMonth = Math.min(mom.date(), - daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; - } - - function rawGetter(mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); - } - - function rawSetter(mom, unit, value) { - if (unit === 'Month') { - return rawMonthSetter(mom, value); - } else { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); - } - } - - function makeAccessor(unit, keepTime) { - return function (value) { - if (value != null) { - rawSetter(this, unit, value); - moment.updateOffset(this, keepTime); - return this; - } else { - return rawGetter(this, unit); - } - }; - } - - moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); - moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); - moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); - // Setting the hour should keep the time, because the user explicitly - // specified which hour he wants. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); - // moment.fn.month is defined separately - moment.fn.date = makeAccessor('Date', true); - moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); - moment.fn.year = makeAccessor('FullYear', true); - moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); - - // add plural methods - moment.fn.days = moment.fn.day; - moment.fn.months = moment.fn.month; - moment.fn.weeks = moment.fn.week; - moment.fn.isoWeeks = moment.fn.isoWeek; - moment.fn.quarters = moment.fn.quarter; - - // add aliased format methods - moment.fn.toJSON = moment.fn.toISOString; - - /************************************ - Duration Prototype - ************************************/ - - - function daysToYears (days) { - // 400 years have 146097 days (taking into account leap year rules) - return days * 400 / 146097; - } - - function yearsToDays (years) { - // years * 365 + absRound(years / 4) - - // absRound(years / 100) + absRound(years / 400); - return years * 146097 / 400; - } - - extend(moment.duration.fn = Duration.prototype, { - - _bubble : function () { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, minutes, hours, years = 0; - - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; - - seconds = absRound(milliseconds / 1000); - data.seconds = seconds % 60; - - minutes = absRound(seconds / 60); - data.minutes = minutes % 60; - - hours = absRound(minutes / 60); - data.hours = hours % 24; - - days += absRound(hours / 24); - - // Accurately convert days to years, assume start from year 0. - years = absRound(daysToYears(days)); - days -= absRound(yearsToDays(years)); - - // 30 days to a month - // TODO (iskren): Use anchor date (like 1st Jan) to compute this. - months += absRound(days / 30); - days %= 30; - - // 12 months -> 1 year - years += absRound(months / 12); - months %= 12; - - data.days = days; - data.months = months; - data.years = years; - }, - - abs : function () { - this._milliseconds = Math.abs(this._milliseconds); - this._days = Math.abs(this._days); - this._months = Math.abs(this._months); - - this._data.milliseconds = Math.abs(this._data.milliseconds); - this._data.seconds = Math.abs(this._data.seconds); - this._data.minutes = Math.abs(this._data.minutes); - this._data.hours = Math.abs(this._data.hours); - this._data.months = Math.abs(this._data.months); - this._data.years = Math.abs(this._data.years); - - return this; - }, - - weeks : function () { - return absRound(this.days() / 7); - }, - - valueOf : function () { - return this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6; - }, - - humanize : function (withSuffix) { - var output = relativeTime(this, !withSuffix, this.localeData()); - - if (withSuffix) { - output = this.localeData().pastFuture(+this, output); - } - - return this.localeData().postformat(output); - }, - - add : function (input, val) { - // supports only 2.0-style add(1, 's') or add(moment) - var dur = moment.duration(input, val); - - this._milliseconds += dur._milliseconds; - this._days += dur._days; - this._months += dur._months; - - this._bubble(); - - return this; - }, - - subtract : function (input, val) { - var dur = moment.duration(input, val); - - this._milliseconds -= dur._milliseconds; - this._days -= dur._days; - this._months -= dur._months; - - this._bubble(); - - return this; - }, - - get : function (units) { - units = normalizeUnits(units); - return this[units.toLowerCase() + 's'](); - }, - - as : function (units) { - var days, months; - units = normalizeUnits(units); - - days = this._days + this._milliseconds / 864e5; - if (units === 'month' || units === 'year') { - months = this._months + daysToYears(days) * 12; - return units === 'month' ? months : months / 12; - } else { - days += yearsToDays(this._months / 12); - switch (units) { - case 'week': return days / 7; - case 'day': return days; - case 'hour': return days * 24; - case 'minute': return days * 24 * 60; - case 'second': return days * 24 * 60 * 60; - case 'millisecond': return days * 24 * 60 * 60 * 1000; - default: throw new Error('Unknown unit ' + units); - } - } - }, - - lang : moment.fn.lang, - locale : moment.fn.locale, - - toIsoString : deprecate( - "toIsoString() is deprecated. Please use toISOString() instead " + - "(notice the capitals)", - function () { - return this.toISOString(); - } - ), - - toISOString : function () { - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var years = Math.abs(this.years()), - months = Math.abs(this.months()), - days = Math.abs(this.days()), - hours = Math.abs(this.hours()), - minutes = Math.abs(this.minutes()), - seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); - - if (!this.asSeconds()) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } - - return (this.asSeconds() < 0 ? '-' : '') + - 'P' + - (years ? years + 'Y' : '') + - (months ? months + 'M' : '') + - (days ? days + 'D' : '') + - ((hours || minutes || seconds) ? 'T' : '') + - (hours ? hours + 'H' : '') + - (minutes ? minutes + 'M' : '') + - (seconds ? seconds + 'S' : ''); - }, - - localeData : function () { - return this._locale; - } - }); - - function makeDurationGetter(name) { - moment.duration.fn[name] = function () { - return this._data[name]; - }; - } - - for (i in unitMillisecondFactors) { - if (unitMillisecondFactors.hasOwnProperty(i)) { - makeDurationGetter(i.toLowerCase()); - } - } - - moment.duration.fn.asMilliseconds = function () { - return this.as('ms'); - }; - moment.duration.fn.asSeconds = function () { - return this.as('s'); - }; - moment.duration.fn.asMinutes = function () { - return this.as('m'); - }; - moment.duration.fn.asHours = function () { - return this.as('h'); - }; - moment.duration.fn.asDays = function () { - return this.as('d'); - }; - moment.duration.fn.asWeeks = function () { - return this.as('weeks'); - }; - moment.duration.fn.asMonths = function () { - return this.as('M'); - }; - moment.duration.fn.asYears = function () { - return this.as('y'); - }; - - /************************************ - Default Locale - ************************************/ - - - // Set default locale, other locale will inherit from English. - moment.locale('en', { - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); - - /* EMBED_LOCALES */ - - /************************************ - Exposing Moment - ************************************/ - - function makeGlobal(shouldDeprecate) { - /*global ender:false */ - if (typeof ender !== 'undefined') { - return; - } - oldGlobalMoment = globalScope.moment; - if (shouldDeprecate) { - globalScope.moment = deprecate( - 'Accessing Moment through the global scope is ' + - 'deprecated, and will be removed in an upcoming ' + - 'release.', - moment); - } else { - globalScope.moment = moment; - } - } - - // CommonJS module is defined - if (hasModule) { - module.exports = moment; - } else if (typeof define === 'function' && define.amd) { - define('moment', function (require, exports, module) { - if (module.config && module.config() && module.config().noGlobal === true) { - // release the global variable - globalScope.moment = oldGlobalMoment; - } - - return moment; - }); - makeGlobal(true); - } else { - makeGlobal(); - } -}).call(this); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/moment.min.js b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/moment.min.js deleted file mode 100644 index 197b5488..00000000 --- a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/moment.min.js +++ /dev/null @@ -1,6 +0,0 @@ -//! moment.js -//! version : 2.8.1 -//! authors : Tim Wood, Iskren Chernev, Moment.js contributors -//! license : MIT -//! momentjs.com -(function(a){function b(a,b,c){switch(arguments.length){case 2:return null!=a?a:b;case 3:return null!=a?a:null!=b?b:c;default:throw new Error("Implement me")}}function c(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(a){rb.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+a)}function e(a,b){var c=!0;return l(function(){return c&&(d(a),c=!1),b.apply(this,arguments)},b)}function f(a,b){nc[a]||(d(b),nc[a]=!0)}function g(a,b){return function(c){return o(a.call(this,c),b)}}function h(a,b){return function(c){return this.localeData().ordinal(a.call(this,c),b)}}function i(){}function j(a,b){b!==!1&&E(a),m(this,a),this._d=new Date(+a._d)}function k(a){var b=x(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._milliseconds=+k+1e3*j+6e4*i+36e5*h,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=rb.localeData(),this._bubble()}function l(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return b.hasOwnProperty("toString")&&(a.toString=b.toString),b.hasOwnProperty("valueOf")&&(a.valueOf=b.valueOf),a}function m(a,b){var c,d,e;if("undefined"!=typeof b._isAMomentObject&&(a._isAMomentObject=b._isAMomentObject),"undefined"!=typeof b._i&&(a._i=b._i),"undefined"!=typeof b._f&&(a._f=b._f),"undefined"!=typeof b._l&&(a._l=b._l),"undefined"!=typeof b._strict&&(a._strict=b._strict),"undefined"!=typeof b._tzm&&(a._tzm=b._tzm),"undefined"!=typeof b._isUTC&&(a._isUTC=b._isUTC),"undefined"!=typeof b._offset&&(a._offset=b._offset),"undefined"!=typeof b._pf&&(a._pf=b._pf),"undefined"!=typeof b._locale&&(a._locale=b._locale),Fb.length>0)for(c in Fb)d=Fb[c],e=b[d],"undefined"!=typeof e&&(a[d]=e);return a}function n(a){return 0>a?Math.ceil(a):Math.floor(a)}function o(a,b,c){for(var d=""+Math.abs(a),e=a>=0;d.lengthd;d++)(c&&a[d]!==b[d]||!c&&z(a[d])!==z(b[d]))&&g++;return g+f}function w(a){if(a){var b=a.toLowerCase().replace(/(.)s$/,"$1");a=gc[a]||hc[b]||b}return a}function x(a){var b,c,d={};for(c in a)a.hasOwnProperty(c)&&(b=w(c),b&&(d[b]=a[c]));return d}function y(b){var c,d;if(0===b.indexOf("week"))c=7,d="day";else{if(0!==b.indexOf("month"))return;c=12,d="month"}rb[b]=function(e,f){var g,h,i=rb._locale[b],j=[];if("number"==typeof e&&(f=e,e=a),h=function(a){var b=rb().utc().set(d,a);return i.call(rb._locale,b,e||"")},null!=f)return h(f);for(g=0;c>g;g++)j.push(h(g));return j}}function z(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=b>=0?Math.floor(b):Math.ceil(b)),c}function A(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function B(a,b,c){return fb(rb([a,11,31+b-c]),b,c).week}function C(a){return D(a)?366:365}function D(a){return a%4===0&&a%100!==0||a%400===0}function E(a){var b;a._a&&-2===a._pf.overflow&&(b=a._a[yb]<0||a._a[yb]>11?yb:a._a[zb]<1||a._a[zb]>A(a._a[xb],a._a[yb])?zb:a._a[Ab]<0||a._a[Ab]>23?Ab:a._a[Bb]<0||a._a[Bb]>59?Bb:a._a[Cb]<0||a._a[Cb]>59?Cb:a._a[Db]<0||a._a[Db]>999?Db:-1,a._pf._overflowDayOfYear&&(xb>b||b>zb)&&(b=zb),a._pf.overflow=b)}function F(a){return null==a._isValid&&(a._isValid=!isNaN(a._d.getTime())&&a._pf.overflow<0&&!a._pf.empty&&!a._pf.invalidMonth&&!a._pf.nullInput&&!a._pf.invalidFormat&&!a._pf.userInvalidated,a._strict&&(a._isValid=a._isValid&&0===a._pf.charsLeftOver&&0===a._pf.unusedTokens.length)),a._isValid}function G(a){return a?a.toLowerCase().replace("_","-"):a}function H(a){for(var b,c,d,e,f=0;f0;){if(d=I(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&v(e,c,!0)>=b-1)break;b--}f++}return null}function I(a){var b=null;if(!Eb[a]&&Gb)try{b=rb.locale(),require("./locale/"+a),rb.locale(b)}catch(c){}return Eb[a]}function J(a,b){return b._isUTC?rb(a).zone(b._offset||0):rb(a).local()}function K(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function L(a){var b,c,d=a.match(Kb);for(b=0,c=d.length;c>b;b++)d[b]=mc[d[b]]?mc[d[b]]:K(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function M(a,b){return a.isValid()?(b=N(b,a.localeData()),ic[b]||(ic[b]=L(b)),ic[b](a)):a.localeData().invalidDate()}function N(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Lb.lastIndex=0;d>=0&&Lb.test(a);)a=a.replace(Lb,c),Lb.lastIndex=0,d-=1;return a}function O(a,b){var c,d=b._strict;switch(a){case"Q":return Wb;case"DDDD":return Yb;case"YYYY":case"GGGG":case"gggg":return d?Zb:Ob;case"Y":case"G":case"g":return _b;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return d?$b:Pb;case"S":if(d)return Wb;case"SS":if(d)return Xb;case"SSS":if(d)return Yb;case"DDD":return Nb;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Rb;case"a":case"A":return b._locale._meridiemParse;case"X":return Ub;case"Z":case"ZZ":return Sb;case"T":return Tb;case"SSSS":return Qb;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return d?Xb:Mb;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Mb;case"Do":return Vb;default:return c=new RegExp(X(W(a.replace("\\","")),"i"))}}function P(a){a=a||"";var b=a.match(Sb)||[],c=b[b.length-1]||[],d=(c+"").match(ec)||["-",0,0],e=+(60*d[1])+z(d[2]);return"+"===d[0]?-e:e}function Q(a,b,c){var d,e=c._a;switch(a){case"Q":null!=b&&(e[yb]=3*(z(b)-1));break;case"M":case"MM":null!=b&&(e[yb]=z(b)-1);break;case"MMM":case"MMMM":d=c._locale.monthsParse(b),null!=d?e[yb]=d:c._pf.invalidMonth=b;break;case"D":case"DD":null!=b&&(e[zb]=z(b));break;case"Do":null!=b&&(e[zb]=z(parseInt(b,10)));break;case"DDD":case"DDDD":null!=b&&(c._dayOfYear=z(b));break;case"YY":e[xb]=rb.parseTwoDigitYear(b);break;case"YYYY":case"YYYYY":case"YYYYYY":e[xb]=z(b);break;case"a":case"A":c._isPm=c._locale.isPM(b);break;case"H":case"HH":case"h":case"hh":e[Ab]=z(b);break;case"m":case"mm":e[Bb]=z(b);break;case"s":case"ss":e[Cb]=z(b);break;case"S":case"SS":case"SSS":case"SSSS":e[Db]=z(1e3*("0."+b));break;case"X":c._d=new Date(1e3*parseFloat(b));break;case"Z":case"ZZ":c._useUTC=!0,c._tzm=P(b);break;case"dd":case"ddd":case"dddd":d=c._locale.weekdaysParse(b),null!=d?(c._w=c._w||{},c._w.d=d):c._pf.invalidWeekday=b;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":a=a.substr(0,1);case"gggg":case"GGGG":case"GGGGG":a=a.substr(0,2),b&&(c._w=c._w||{},c._w[a]=z(b));break;case"gg":case"GG":c._w=c._w||{},c._w[a]=rb.parseTwoDigitYear(b)}}function R(a){var c,d,e,f,g,h,i;c=a._w,null!=c.GG||null!=c.W||null!=c.E?(g=1,h=4,d=b(c.GG,a._a[xb],fb(rb(),1,4).year),e=b(c.W,1),f=b(c.E,1)):(g=a._locale._week.dow,h=a._locale._week.doy,d=b(c.gg,a._a[xb],fb(rb(),g,h).year),e=b(c.w,1),null!=c.d?(f=c.d,g>f&&++e):f=null!=c.e?c.e+g:g),i=gb(d,e,f,h,g),a._a[xb]=i.year,a._dayOfYear=i.dayOfYear}function S(a){var c,d,e,f,g=[];if(!a._d){for(e=U(a),a._w&&null==a._a[zb]&&null==a._a[yb]&&R(a),a._dayOfYear&&(f=b(a._a[xb],e[xb]),a._dayOfYear>C(f)&&(a._pf._overflowDayOfYear=!0),d=bb(f,0,a._dayOfYear),a._a[yb]=d.getUTCMonth(),a._a[zb]=d.getUTCDate()),c=0;3>c&&null==a._a[c];++c)a._a[c]=g[c]=e[c];for(;7>c;c++)a._a[c]=g[c]=null==a._a[c]?2===c?1:0:a._a[c];a._d=(a._useUTC?bb:ab).apply(null,g),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()+a._tzm)}}function T(a){var b;a._d||(b=x(a._i),a._a=[b.year,b.month,b.day,b.hour,b.minute,b.second,b.millisecond],S(a))}function U(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function V(a){if(a._f===rb.ISO_8601)return void Z(a);a._a=[],a._pf.empty=!0;var b,c,d,e,f,g=""+a._i,h=g.length,i=0;for(d=N(a._f,a._locale).match(Kb)||[],b=0;b0&&a._pf.unusedInput.push(f),g=g.slice(g.indexOf(c)+c.length),i+=c.length),mc[e]?(c?a._pf.empty=!1:a._pf.unusedTokens.push(e),Q(e,c,a)):a._strict&&!c&&a._pf.unusedTokens.push(e);a._pf.charsLeftOver=h-i,g.length>0&&a._pf.unusedInput.push(g),a._isPm&&a._a[Ab]<12&&(a._a[Ab]+=12),a._isPm===!1&&12===a._a[Ab]&&(a._a[Ab]=0),S(a),E(a)}function W(a){return a.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e})}function X(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Y(a){var b,d,e,f,g;if(0===a._f.length)return a._pf.invalidFormat=!0,void(a._d=new Date(0/0));for(f=0;fg)&&(e=g,d=b));l(a,d||b)}function Z(a){var b,c,d=a._i,e=ac.exec(d);if(e){for(a._pf.iso=!0,b=0,c=cc.length;c>b;b++)if(cc[b][1].exec(d)){a._f=cc[b][0]+(e[6]||" ");break}for(b=0,c=dc.length;c>b;b++)if(dc[b][1].exec(d)){a._f+=dc[b][0];break}d.match(Sb)&&(a._f+="Z"),V(a)}else a._isValid=!1}function $(a){Z(a),a._isValid===!1&&(delete a._isValid,rb.createFromInputFallback(a))}function _(b){var c,d=b._i;d===a?b._d=new Date:u(d)?b._d=new Date(+d):null!==(c=Hb.exec(d))?b._d=new Date(+c[1]):"string"==typeof d?$(b):t(d)?(b._a=d.slice(0),S(b)):"object"==typeof d?T(b):"number"==typeof d?b._d=new Date(d):rb.createFromInputFallback(b)}function ab(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function bb(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function cb(a,b){if("string"==typeof a)if(isNaN(a)){if(a=b.weekdaysParse(a),"number"!=typeof a)return null}else a=parseInt(a,10);return a}function db(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function eb(a,b,c){var d=rb.duration(a).abs(),e=wb(d.as("s")),f=wb(d.as("m")),g=wb(d.as("h")),h=wb(d.as("d")),i=wb(d.as("M")),j=wb(d.as("y")),k=e0,k[4]=c,db.apply({},k)}function fb(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=rb(a).add(f,"d"),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function gb(a,b,c,d,e){var f,g,h=bb(a,0,1).getUTCDay();return h=0===h?7:h,c=null!=c?c:e,f=e-h+(h>d?7:0)-(e>h?7:0),g=7*(b-1)+(c-e)+f+1,{year:g>0?a:a-1,dayOfYear:g>0?g:C(a-1)+g}}function hb(b){var c=b._i,d=b._f;return b._locale=b._locale||rb.localeData(b._l),null===c||d===a&&""===c?rb.invalid({nullInput:!0}):("string"==typeof c&&(b._i=c=b._locale.preparse(c)),rb.isMoment(c)?new j(c,!0):(d?t(d)?Y(b):V(b):_(b),new j(b)))}function ib(a,b){var c,d;if(1===b.length&&t(b[0])&&(b=b[0]),!b.length)return rb();for(c=b[0],d=1;d=0?"+":"-";return b+o(Math.abs(a),6)},gg:function(){return o(this.weekYear()%100,2)},gggg:function(){return o(this.weekYear(),4)},ggggg:function(){return o(this.weekYear(),5)},GG:function(){return o(this.isoWeekYear()%100,2)},GGGG:function(){return o(this.isoWeekYear(),4)},GGGGG:function(){return o(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return z(this.milliseconds()/100)},SS:function(){return o(z(this.milliseconds()/10),2)},SSS:function(){return o(this.milliseconds(),3)},SSSS:function(){return o(this.milliseconds(),3)},Z:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+o(z(a/60),2)+":"+o(z(a)%60,2)},ZZ:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+o(z(a/60),2)+o(z(a)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},nc={},oc=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];kc.length;)tb=kc.pop(),mc[tb+"o"]=h(mc[tb],tb);for(;lc.length;)tb=lc.pop(),mc[tb+tb]=g(mc[tb],2);mc.DDDD=g(mc.DDD,3),l(i.prototype,{set:function(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(a){return this._months[a.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(a){return this._monthsShort[a.month()]},monthsParse:function(a){var b,c,d;for(this._monthsParse||(this._monthsParse=[]),b=0;12>b;b++)if(this._monthsParse[b]||(c=rb.utc([2e3,b]),d="^"+this.months(c,"")+"|^"+this.monthsShort(c,""),this._monthsParse[b]=new RegExp(d.replace(".",""),"i")),this._monthsParse[b].test(a))return b},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(a){return this._weekdays[a.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(a){return this._weekdaysShort[a.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(a){return this._weekdaysMin[a.day()]},weekdaysParse:function(a){var b,c,d;for(this._weekdaysParse||(this._weekdaysParse=[]),b=0;7>b;b++)if(this._weekdaysParse[b]||(c=rb([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(a){var b=this._longDateFormat[a];return!b&&this._longDateFormat[a.toUpperCase()]&&(b=this._longDateFormat[a.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a]=b),b},isPM:function(a){return"p"===(a+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(a,b){var c=this._calendar[a];return"function"==typeof c?c.apply(b):c},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)},pastFuture:function(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)},ordinal:function(a){return this._ordinal.replace("%d",a)},_ordinal:"%d",preparse:function(a){return a},postformat:function(a){return a},week:function(a){return fb(a,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),rb=function(b,d,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._i=b,g._f=d,g._l=e,g._strict=f,g._isUTC=!1,g._pf=c(),hb(g)},rb.suppressDeprecationWarnings=!1,rb.createFromInputFallback=e("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i)}),rb.min=function(){var a=[].slice.call(arguments,0);return ib("isBefore",a)},rb.max=function(){var a=[].slice.call(arguments,0);return ib("isAfter",a)},rb.utc=function(b,d,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._useUTC=!0,g._isUTC=!0,g._l=e,g._i=b,g._f=d,g._strict=f,g._pf=c(),hb(g).utc()},rb.unix=function(a){return rb(1e3*a)},rb.duration=function(a,b){var c,d,e,f,g=a,h=null;return rb.isDuration(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(g={},b?g[b]=a:g.milliseconds=a):(h=Ib.exec(a))?(c="-"===h[1]?-1:1,g={y:0,d:z(h[zb])*c,h:z(h[Ab])*c,m:z(h[Bb])*c,s:z(h[Cb])*c,ms:z(h[Db])*c}):(h=Jb.exec(a))?(c="-"===h[1]?-1:1,e=function(a){var b=a&&parseFloat(a.replace(",","."));return(isNaN(b)?0:b)*c},g={y:e(h[2]),M:e(h[3]),d:e(h[4]),h:e(h[5]),m:e(h[6]),s:e(h[7]),w:e(h[8])}):"object"==typeof g&&("from"in g||"to"in g)&&(f=q(rb(g.from),rb(g.to)),g={},g.ms=f.milliseconds,g.M=f.months),d=new k(g),rb.isDuration(a)&&a.hasOwnProperty("_locale")&&(d._locale=a._locale),d},rb.version=ub,rb.defaultFormat=bc,rb.ISO_8601=function(){},rb.momentProperties=Fb,rb.updateOffset=function(){},rb.relativeTimeThreshold=function(b,c){return jc[b]===a?!1:c===a?jc[b]:(jc[b]=c,!0)},rb.lang=e("moment.lang is deprecated. Use moment.locale instead.",function(a,b){return rb.locale(a,b)}),rb.locale=function(a,b){var c;return a&&(c="undefined"!=typeof b?rb.defineLocale(a,b):rb.localeData(a),c&&(rb.duration._locale=rb._locale=c)),rb._locale._abbr},rb.defineLocale=function(a,b){return null!==b?(b.abbr=a,Eb[a]||(Eb[a]=new i),Eb[a].set(b),rb.locale(a),Eb[a]):(delete Eb[a],null)},rb.langData=e("moment.langData is deprecated. Use moment.localeData instead.",function(a){return rb.localeData(a)}),rb.localeData=function(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return rb._locale;if(!t(a)){if(b=I(a))return b;a=[a]}return H(a)},rb.isMoment=function(a){return a instanceof j||null!=a&&a.hasOwnProperty("_isAMomentObject")},rb.isDuration=function(a){return a instanceof k};for(tb=oc.length-1;tb>=0;--tb)y(oc[tb]);rb.normalizeUnits=function(a){return w(a)},rb.invalid=function(a){var b=rb.utc(0/0);return null!=a?l(b._pf,a):b._pf.userInvalidated=!0,b},rb.parseZone=function(){return rb.apply(null,arguments).parseZone()},rb.parseTwoDigitYear=function(a){return z(a)+(z(a)>68?1900:2e3)},l(rb.fn=j.prototype,{clone:function(){return rb(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var a=rb(this).utc();return 00:!1},parsingFlags:function(){return l({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(a){return this.zone(0,a)},local:function(a){return this._isUTC&&(this.zone(0,a),this._isUTC=!1,a&&this.add(this._d.getTimezoneOffset(),"m")),this},format:function(a){var b=M(this,a||rb.defaultFormat);return this.localeData().postformat(b)},add:r(1,"add"),subtract:r(-1,"subtract"),diff:function(a,b,c){var d,e,f=J(a,this),g=6e4*(this.zone()-f.zone());return b=w(b),"year"===b||"month"===b?(d=432e5*(this.daysInMonth()+f.daysInMonth()),e=12*(this.year()-f.year())+(this.month()-f.month()),e+=(this-rb(this).startOf("month")-(f-rb(f).startOf("month")))/d,e-=6e4*(this.zone()-rb(this).startOf("month").zone()-(f.zone()-rb(f).startOf("month").zone()))/d,"year"===b&&(e/=12)):(d=this-f,e="second"===b?d/1e3:"minute"===b?d/6e4:"hour"===b?d/36e5:"day"===b?(d-g)/864e5:"week"===b?(d-g)/6048e5:d),c?e:n(e)},from:function(a,b){return rb.duration({to:this,from:a}).locale(this.locale()).humanize(!b)},fromNow:function(a){return this.from(rb(),a)},calendar:function(a){var b=a||rb(),c=J(b,this).startOf("day"),d=this.diff(c,"days",!0),e=-6>d?"sameElse":-1>d?"lastWeek":0>d?"lastDay":1>d?"sameDay":2>d?"nextDay":7>d?"nextWeek":"sameElse";return this.format(this.localeData().calendar(e,this))},isLeapYear:function(){return D(this.year())},isDST:function(){return this.zone()+rb(a).startOf(b)},isBefore:function(a,b){return b="undefined"!=typeof b?b:"millisecond",+this.clone().startOf(b)<+rb(a).startOf(b)},isSame:function(a,b){return b=b||"ms",+this.clone().startOf(b)===+J(a,this).startOf(b)},min:e("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(a){return a=rb.apply(null,arguments),this>a?this:a}),max:e("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(a){return a=rb.apply(null,arguments),a>this?this:a}),zone:function(a,b){var c,d=this._offset||0;return null==a?this._isUTC?d:this._d.getTimezoneOffset():("string"==typeof a&&(a=P(a)),Math.abs(a)<16&&(a=60*a),!this._isUTC&&b&&(c=this._d.getTimezoneOffset()),this._offset=a,this._isUTC=!0,null!=c&&this.subtract(c,"m"),d!==a&&(!b||this._changeInProgress?s(this,rb.duration(d-a,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,rb.updateOffset(this,!0),this._changeInProgress=null)),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(a){return a=a?rb(a).zone():0,(this.zone()-a)%60===0},daysInMonth:function(){return A(this.year(),this.month())},dayOfYear:function(a){var b=wb((rb(this).startOf("day")-rb(this).startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")},quarter:function(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)},weekYear:function(a){var b=fb(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==a?b:this.add(a-b,"y")},isoWeekYear:function(a){var b=fb(this,1,4).year;return null==a?b:this.add(a-b,"y")},week:function(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")},isoWeek:function(a){var b=fb(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")},weekday:function(a){var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")},isoWeekday:function(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)},isoWeeksInYear:function(){return B(this.year(),1,4)},weeksInYear:function(){var a=this.localeData()._week;return B(this.year(),a.dow,a.doy)},get:function(a){return a=w(a),this[a]()},set:function(a,b){return a=w(a),"function"==typeof this[a]&&this[a](b),this},locale:function(b){return b===a?this._locale._abbr:(this._locale=rb.localeData(b),this)},lang:e("moment().lang() is deprecated. Use moment().localeData() instead.",function(b){return b===a?this.localeData():(this._locale=rb.localeData(b),this)}),localeData:function(){return this._locale}}),rb.fn.millisecond=rb.fn.milliseconds=mb("Milliseconds",!1),rb.fn.second=rb.fn.seconds=mb("Seconds",!1),rb.fn.minute=rb.fn.minutes=mb("Minutes",!1),rb.fn.hour=rb.fn.hours=mb("Hours",!0),rb.fn.date=mb("Date",!0),rb.fn.dates=e("dates accessor is deprecated. Use date instead.",mb("Date",!0)),rb.fn.year=mb("FullYear",!0),rb.fn.years=e("years accessor is deprecated. Use year instead.",mb("FullYear",!0)),rb.fn.days=rb.fn.day,rb.fn.months=rb.fn.month,rb.fn.weeks=rb.fn.week,rb.fn.isoWeeks=rb.fn.isoWeek,rb.fn.quarters=rb.fn.quarter,rb.fn.toJSON=rb.fn.toISOString,l(rb.duration.fn=k.prototype,{_bubble:function(){var a,b,c,d=this._milliseconds,e=this._days,f=this._months,g=this._data,h=0;g.milliseconds=d%1e3,a=n(d/1e3),g.seconds=a%60,b=n(a/60),g.minutes=b%60,c=n(b/60),g.hours=c%24,e+=n(c/24),h=n(nb(e)),e-=n(ob(h)),f+=n(e/30),e%=30,h+=n(f/12),f%=12,g.days=e,g.months=f,g.years=h},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return n(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*z(this._months/12)},humanize:function(a){var b=eb(this,!a,this.localeData());return a&&(b=this.localeData().pastFuture(+this,b)),this.localeData().postformat(b)},add:function(a,b){var c=rb.duration(a,b);return this._milliseconds+=c._milliseconds,this._days+=c._days,this._months+=c._months,this._bubble(),this},subtract:function(a,b){var c=rb.duration(a,b);return this._milliseconds-=c._milliseconds,this._days-=c._days,this._months-=c._months,this._bubble(),this},get:function(a){return a=w(a),this[a.toLowerCase()+"s"]()},as:function(a){var b,c;if(a=w(a),b=this._days+this._milliseconds/864e5,"month"===a||"year"===a)return c=this._months+12*nb(b),"month"===a?c:c/12;switch(b+=ob(this._months/12),a){case"week":return b/7;case"day":return b;case"hour":return 24*b;case"minute":return 24*b*60;case"second":return 24*b*60*60;case"millisecond":return 24*b*60*60*1e3;default:throw new Error("Unknown unit "+a)}},lang:rb.fn.lang,locale:rb.fn.locale,toIsoString:e("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var a=Math.abs(this.years()),b=Math.abs(this.months()),c=Math.abs(this.days()),d=Math.abs(this.hours()),e=Math.abs(this.minutes()),f=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(a?a+"Y":"")+(b?b+"M":"")+(c?c+"D":"")+(d||e||f?"T":"")+(d?d+"H":"")+(e?e+"M":"")+(f?f+"S":""):"P0D"},localeData:function(){return this._locale}});for(tb in fc)fc.hasOwnProperty(tb)&&pb(tb.toLowerCase());rb.duration.fn.asMilliseconds=function(){return this.as("ms")},rb.duration.fn.asSeconds=function(){return this.as("s")},rb.duration.fn.asMinutes=function(){return this.as("m")},rb.duration.fn.asHours=function(){return this.as("h")},rb.duration.fn.asDays=function(){return this.as("d")},rb.duration.fn.asWeeks=function(){return this.as("weeks")},rb.duration.fn.asMonths=function(){return this.as("M")},rb.duration.fn.asYears=function(){return this.as("y")},rb.locale("en",{ordinal:function(a){var b=a%10,c=1===z(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),Gb?module.exports=rb:"function"==typeof define&&define.amd?(define("moment",function(a,b,c){return c.config&&c.config()&&c.config().noGlobal===!0&&(vb.moment=sb),rb}),qb(!0)):qb()}).call(this); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/css/fileinput.min.css b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/css/fileinput.min.css deleted file mode 100644 index 58c9f455..00000000 --- a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/css/fileinput.min.css +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * @copyright Copyright © Kartik Visweswaran, Krajee.com, 2014 - 2015 - * @package bootstrap-fileinput - * @version 4.2.3 - * - * File input styling for Bootstrap 3.0 - * Built for Yii Framework 2.0 - * Author: Kartik Visweswaran - * Year: 2015 - * For more Yii related demos visit http://demos.krajee.com - */.file-input{overflow-x:auto}.file-loading{top:0;right:0;width:25px;height:25px;font-size:999px;text-align:right;color:#fff;background:transparent url(../img/loading.gif) top left no-repeat;border:none}.btn-file{position:relative;overflow:hidden}.btn-file input[type=file]{position:absolute;top:0;right:0;min-width:100%;min-height:100%;text-align:right;filter:alpha(opacity=0);opacity:0;background:none repeat scroll 0 0 transparent;cursor:inherit;display:block}.file-caption .glyphicon{display:inline-block;min-width:18px;margin-top:2px}.file-caption-name{display:inline-block;overflow:hidden;max-height:20px;padding-right:10px;word-break:break-all}.file-caption-ellipsis{position:absolute;right:10px;margin-top:-6px;font-size:1.2em;display:none;font-weight:700;cursor:default}.kv-has-ellipsis .file-caption-ellipsis{display:inline}.kv-has-ellipsis{padding-right:17px}.kv-search-container .kv-search-clear{position:absolute;padding:10px;right:0}.file-error-message{background-color:#f2dede;color:#a94442;text-align:center;border-radius:5px;padding:5px}.file-error-message pre,.file-error-message ul{margin:5px 0;text-align:left}.file-caption-disabled{background-color:#EEE;cursor:not-allowed;opacity:1}.file-input .btn .disabled,.file-input .btn[disabled]{cursor:not-allowed}.file-preview{border-radius:5px;border:1px solid #ddd;padding:5px;width:100%;margin-bottom:5px}.file-preview-frame{display:table;margin:8px;height:100px;border:1px solid #ddd;box-shadow:1px 1px 5px 0 #a2958a;padding:6px;float:left;text-align:center;vertical-align:middle}.file-preview-frame:hover{box-shadow:3px 3px 5px 0 #333}.file-preview-image{height:160px;vertical-align:text-center}.file-preview-text{width:160px;color:#428bca;font-size:11px;text-align:center}.file-preview-other{padding-top:20px;text-align:center}.file-preview-other i{font-size:2.4em}.file-other-error{width:100%;padding-top:30px;text-align:right}.file-input-ajax-new .fileinput-remove-button,.file-input-ajax-new .fileinput-upload-button,.file-input-new .close,.file-input-new .file-preview,.file-input-new .fileinput-remove-button,.file-input-new .fileinput-upload-button,.file-input-new .glyphicon-file{display:none}.loading{background:transparent url(../img/loading.gif) no-repeat scroll center center content-box!important}.wrap-indicator{font-weight:700;color:#245269;cursor:pointer}.file-actions{text-align:left}.file-footer-buttons{float:right}.file-thumbnail-footer .file-caption-name{padding-top:4px;font-size:11px;color:#777}.file-upload-indicator{padding-top:2px;cursor:default}.file-upload-indicator:hover{font-size:1.2em;font-weight:700;padding-top:0}.file-drop-zone{border:1px dashed #aaa;border-radius:4px;height:100%;text-align:center;vertical-align:middle;margin:12px 15px 12px 12px;padding:5px}.file-drop-zone-title{color:#aaa;font-size:30px;padding:20px 10px}.highlighted{border:2px dashed #999!important;background-color:#f0f0f0}.file-uploading{background-image:url(../img/loading-sm.gif);background-position:center bottom 10px;background-repeat:no-repeat;opacity:.6}.file-icon-large{font-size:1.2em} \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/img/loading-sm.gif b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/img/loading-sm.gif deleted file mode 100644 index 44e3b7a0f702aa1d301468b1d6c1d74d45dfdfa4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2670 zcmb`Je@v5i9>LSr1(@@0hFth{;0&ijQR3npb})ArbBQ}PvxUrk9==i>-je&{`bYn0 zn)LJfykDR9({*{d^3^65#=>kEmYR~<(cUp}W8&ez9`;@Cv+TEYecW~T-rd+qu-ktq^cI?{N#Y-2bznz}@Wlou^?0COp;`YSDe?RQ|Tc54YcCq*3v~POu z=Q)qt<8AOhdGZ9Ce@UMNZ%`E#<|wqPl%!-T1wNGi6v$*^VoXMUfgA&)8H|&=avY{@ zJeN-^xjCUe&M)59EweXtoViM;a-1?pz|8ANLRhI=H=wp@r|+lJt@60`I1L>ikf9d z0~~r>SYAh`8ncKP#Y`em&991Ki+9$D<+Ah`h8ABLvp^+Tq&fmry95!A4*~{!r(W{r|twO<9E6hwX}% z)F~4zBCfrDD2L!G=moq=Ocm!kf(>!j#MWki`kE{G-BYoHbydNkr`YYfzkHJ}sdz&Z z8KyFYGObizP&mFNfL9$Pkl^BMW@H7Mj~&{~Y}&^@Em8az7i38?{{@hom-`@R{}EIl zuKr(+p!%I^SP+EozXRAQx&zv)Q;+jLkH^n1bF~-lxqi~zs6M>$2b`E?bDR1(oHROR zaB7GXUJ{zi)G5043^#qed;40J-ClCQog6(Hud5xphOP%&4#R>m7Bck%Y7iX-)s;GnT=AX8I6;x z*Ol?b-#BAm+c8m@;Zg6;uE=_2%jzUWr*x2ox8%paAn8qLY^bd(b;)ctlkU^fu=Vc3 zz;SN~k7AeP8RH2m;z z2CX1gkPsDhP~gugYVl&ptMm6Li~=Mu93%mmkyQ%qyHLgm8|ug3#{dSLkO}}pC4+2m z`Abd|+`DA@$4K%kR+rDRtj=pVseWU_SosF`XJ_(Mv(56PPTS5aAL87zteO7ON2zXW zXJVy1^(Mx0!G&0`_T@yc7N3_Iz0+VN*C^fuY4rdK8WyJhb56^W6%| zhv|@e@GJq}V9C%h00$|+q%bv<3=9s$WESlms9VW!FOl?MEbIgN3J@Vy2p1xL+O3%* z4%2yvY0~i3-n5pgHjU@SvC&L^4Rsa4mb2FHx-acsLminpiEGcb4^avWjB6bs?yxHv zFP>OoZm&@)|E$XG{cHFN;rjRP&k2G>fr0d>;EjE|0c(GfTT-1_oMa2pu0v=?C ziWR6(s{%i;LARh*1pqiF)TclTcn}}b?&(F5kHB?rd-LMljI3nO?V@)3zQ#dO-513t ztjcsEGqLW@n}vqVK-aY$rTULTyjJV(hyiVw^9O}%O%TO%-BuBoT7PVy_KKNUTkL36 z?~x1XsVjwnVnJz^Up>+9s|T|{G?2yf>OloQZy$sL`TErZnkDwpwn;{pv6^-mtgcw9 z_E@9A+pHJ039kOw(VR1!{Fzhc9qk-wO9+x3Qyrg@1UN60rpBE1jKy*kvzjY8GMB%rN zWSO@Pl7v*3SO+Q5wzobgsdpIf?Qr=duPeH-rgHWhu znosfxTsJ3QpXcCF1>~qGXs@ZJ zyw~IM73y!A^G>VZ8R)gNG&BU|KuYo)y+(NV^DdAFW5LeVJBBCMNfRtuR+y^ER&<(X zE7%B&e5#Z^`o7-@nEg_P~LI*N!rA^h{|;%@7gdIe0+9 zL6FPmK*NXRK=)=Qr!7yn1(?oIuvujqni9B8`-RfJ#pzQFR*0=zw6NbXTj0F1BLlZh zfVly?4JS*30beAWg%&SoyRsrS%M*Y;RQ^0c<0TpwHaFY zz6r{%O%_#7fe{VKyK@(naSJIeRCsx4aYAE48*ixFGRdMll6*@GUTc0%``>`o8j#V4 zg9*c-O~)LSJSTE&n6)s0!!ECt)zd(wL!wvC+k6wRhYtI}PTi7bt)^yIDG`AshjlL| qtmsHM!1PnVu#-b#!*qv!K4",i=1===t.getElementsByTagName("i").length,document.body.appendChild(t),t.parentNode.removeChild(t),i},t={data:{},init:function(e){var i=e.initialPreview,a=e.id;i.length>0&&!z(i)&&(i=i.split(e.initialPreviewDelimiter)),t.data[a]={content:i,config:e.initialPreviewConfig,tags:e.initialPreviewThumbTags,delimiter:e.initialPreviewDelimiter,template:e.previewGenericTemplate,msg:function(i){return e.getMsgSelected(i)},initId:e.previewInitId,footer:e.getLayoutTemplate("footer"),isDelete:e.initialPreviewShowDelete,caption:e.initialCaption,actions:function(i,t,a,n,r){return e.renderFileActions(i,t,a,n,r)}}},fetch:function(e){return t.data[e].content.filter(function(e){return null!==e})},count:function(e,i){return t.data[e]&&t.data[e].content?i?t.data[e].content.length:t.fetch(e).length:0},get:function(i,a,n){var r,l,o="init_"+a,s=t.data[i],d=s.config[a],c=s.initId+"-"+o,p=" file-preview-initial";return n=void 0===n?!0:n,null===s.content[a]?"":(R(d)||R(d.frameClass)||(p+=" "+d.frameClass),r=s.template.repl("{previewId}",c).repl("{frameClass}",p).repl("{fileindex}",o).repl("{content}",s.content[a]).repl("{footer}",t.footer(i,a,n)),s.tags.length&&s.tags[a]&&(r=H(r,s.tags[a])),R(d)||R(d.frameAttr)||(l=e(document.createElement("div")).html(r),l.find(".file-preview-initial").attr(d.frameAttr),r=l.html(),l.remove()),r)},add:function(i,a,n,r,l){var o,s=e.extend(!0,{},t.data[i]);return z(a)||(a=a.split(s.delimiter)),l?(o=s.content.push(a)-1,s.config[o]=n,s.tags[o]=r):(o=a.length,s.content=a,s.config=n,s.tags=r),t.data[i]=s,o},set:function(i,a,n,r,l){var o,s=e.extend(!0,{},t.data[i]);if(z(a)||(a=a.split(s.delimiter)),l){for(o=0;ol;l++)a+=t.get(e,l);return i=n.msg(t.count(e)),{content:a,caption:i}},footer:function(e,i,a){var n=t.data[e];if(a=void 0===a?!0:a,0===n.config.length||R(n.config[i]))return"";var r=n.config[i],l=M("caption",r)?r.caption:"",o=M("width",r)?r.width:"auto",s=M("url",r)?r.url:!1,d=M("key",r)?r.key:null,c=s===!1&&a,p=n.isDelete?n.actions(!1,!0,c,s,d):"",u=n.footer.repl("{actions}",p);return u.repl("{caption}",l).repl("{width}",o).repl("{indicator}","").repl("{indicatorTitle}","")}},a=function(e,i){return i=i||0,"number"==typeof e?e:("string"==typeof e&&(e=parseFloat(e)),isNaN(e)?i:e)},n=function(){return window.File&&window.FileReader},r=function(){var e=document.createElement("div");return!i(9)&&(void 0!==e.draggable||void 0!==e.ondragstart&&void 0!==e.ondrop)},l=function(){return n()&&window.FormData},o=function(e,i){e.removeClass(i).addClass(i)},s='style="width:{width};height:{height};"',d=' \n \n \n \n \n \n',c='
    \n {previewFileIcon}\n
    ',p={removeIcon:'',removeClass:"btn btn-xs btn-default",removeTitle:"Remove file",uploadIcon:'',uploadClass:"btn btn-xs btn-default",uploadTitle:"Upload file",indicatorNew:'',indicatorSuccess:'',indicatorError:'',indicatorLoading:'',indicatorNewTitle:"Not uploaded yet",indicatorSuccessTitle:"Uploaded",indicatorErrorTitle:"Upload Error",indicatorLoadingTitle:"Uploading ..."},u='{preview}\n
    \n
    \n {caption}\n
    \n {remove}\n {cancel}\n {upload}\n {browse}\n
    \n
    ',f='{preview}\n
    \n{remove}\n{cancel}\n{upload}\n{browse}\n',v='
    \n
    ×
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    ',h='',m='
    \n \n
    \n
    ',g='',w='
    \n
    \n {percent}%\n
    \n
    ',b='',x='
    \n \n
    {indicator}
    \n
    \n
    ',C='\n',y='\n',T='
    \n {content}\n {footer}\n
    \n',E='
    \n \n '+c+"\n \n {footer}\n
    ",k='
    \n {caption}\n {footer}\n
    \n",F='
    \n
    \n {data}\n
    \n {footer}\n
    ",$='
    \n \n {footer}\n
    \n",I='
    \n \n {footer}\n
    ",D='
    \n \n'+d+" "+c+"\n \n {footer}\n
    \n",P='
    \n \n \n'+d+" "+c+"\n \n {footer}\n
    ",S='
    \n "+c+"\n {footer}\n
    ",U={main1:u,main2:f,preview:v,icon:h,caption:m,modal:g,progress:w,footer:b,actions:x,actionDelete:C,actionUpload:y},j={generic:T,html:E,image:k,text:F,video:$,audio:I,flash:D,object:P,other:S},A=["image","html","text","video","audio","flash","object"],L={image:{width:"auto",height:"160px"},html:{width:"213px",height:"160px"},text:{width:"160px",height:"160px"},video:{width:"213px",height:"160px"},audio:{width:"213px",height:"80px"},flash:{width:"213px",height:"160px"},object:{width:"160px",height:"160px"},other:{width:"160px",height:"160px"}},O={image:function(e,i){return void 0!==e?e.match("image.*"):i.match(/\.(gif|png|jpe?g)$/i)},html:function(e,i){return void 0!==e?"text/html"===e:i.match(/\.(htm|html)$/i)},text:function(e,i){return void 0!==e&&e.match("text.*")||i.match(/\.(txt|md|csv|nfo|php|ini)$/i)},video:function(e,i){return void 0!==e&&e.match(/\.video\/(ogg|mp4|webm)$/i)||i.match(/\.(og?|mp4|webm)$/i)},audio:function(e,i){return void 0!==e&&e.match(/\.audio\/(ogg|mp3|wav)$/i)||i.match(/\.(ogg|mp3|wav)$/i)},flash:function(e,i){return void 0!==e&&"application/x-shockwave-flash"===e||i.match(/\.(swf)$/i)},object:function(){return!0},other:function(){return!0}},R=function(i,t){return null===i||void 0===i||0===i.length||t&&""===e.trim(i)},z=function(e){return Array.isArray(e)||"[object Array]"===Object.prototype.toString.call(e)},M=function(e,i){return"object"==typeof i&&e in i},N=function(i,t,a){return R(i)||R(i[t])?a:e(i[t])},B=function(){return Math.round((new Date).getTime()+100*Math.random())},Z=function(e){return String(e).repl("&","&").repl('"',""").repl("'","'").repl("<","<").repl(">",">")},H=function(i,t){var a=i;return t=t||{},e.each(t,function(e,i){"function"==typeof i&&(i=i()),a=a.repl(e,i)}),a},W=window.URL||window.webkitURL,_=function(t,a){var r=this;r.$element=e(t),r.validate()&&(r.isPreviewable=n(),r.isIE9=i(9),r.isIE10=i(10),r.isPreviewable||r.isIE9?(r.init(a),r.listen()):r.$element.removeClass("file-loading"))};_.prototype={constructor:_,validate:function(){var e,i=this;return"file"===i.$element.attr("type")?!0:(e='

    Invalid Input Type

    You must set an input type = file for bootstrap-fileinput plugin to initialize.
    ',i.$element.after(e),!1)},init:function(i){var n,s=this,d=s.$element;e.each(i,function(e,i){s[e]="maxFileCount"===e||"maxFileSize"===e?a(i):i}),s.fileInputCleared=!1,s.fileBatchCompleted=!0,R(s.allowedPreviewTypes)&&(s.allowedPreviewTypes=A),s.isPreviewable||(s.showPreview=!1),s.uploadFileAttr=R(d.attr("name"))?"file_data":d.attr("name"),s.reader=null,s.formdata={},s.filestack=[],s.ajaxRequests=[],s.isError=!1,s.ajaxAborted=!1,s.dropZoneEnabled=r()&&s.dropZoneEnabled,s.isDisabled=s.$element.attr("disabled")||s.$element.attr("readonly"),s.isUploadable=l()&&!R(s.uploadUrl),s.slug="function"==typeof i.slugCallback?i.slugCallback:s.slugDefault,s.mainTemplate=s.getLayoutTemplate(s.showCaption?"main1":"main2"),s.captionTemplate=s.getLayoutTemplate("caption"),s.previewGenericTemplate=s.getPreviewTemplate("generic"),R(s.$element.attr("id"))&&s.$element.attr("id",B()),void 0===s.$container?s.$container=s.createContainer():s.refreshContainer(),s.$progress=s.$container.find(".kv-upload-progress"),s.$btnUpload=s.$container.find(".kv-fileinput-upload"),s.$captionContainer=N(i,"elCaptionContainer",s.$container.find(".file-caption")),s.$caption=N(i,"elCaptionText",s.$container.find(".file-caption-name")),s.$previewContainer=N(i,"elPreviewContainer",s.$container.find(".file-preview")),s.$preview=N(i,"elPreviewImage",s.$container.find(".file-preview-thumbnails")),s.$previewStatus=N(i,"elPreviewStatus",s.$container.find(".file-preview-status")),s.$errorContainer=N(i,"elErrorContainer",s.$previewContainer.find(".kv-fileinput-error")),R(s.msgErrorClass)||o(s.$errorContainer,s.msgErrorClass),s.$errorContainer.hide(),s.fileActionSettings=e.extend(p,i.fileActionSettings),s.previewInitId="preview-"+B(),s.id=s.$element.attr("id"),t.init(s),s.initPreview(!0),s.initPreviewDeletes(),s.options=i,s.setFileDropZoneTitle(),s.uploadCount=0,s.uploadPercent=0,s.$element.removeClass("file-loading"),n=s.getLayoutTemplate("progress"),s.progressTemplate=n.replace("{class}",s.progressClass),s.progressCompleteTemplate=n.replace("{class}",s.progressCompleteClass),s.setEllipsis()},parseError:function(i,t,a){var n=this,r=e.trim(t+""),l="."===r.slice(-1)?"":".",o=void 0!==i.responseJSON&&void 0!==i.responseJSON.error?i.responseJSON.error:i.responseText;return n.showAjaxErrorDetails?(o=e.trim(o.replace(/\n\s*\n/g,"\n")),o=o.length>0?"
    "+o+"
    ":"",r+=l+o):r+=l,a?""+a+": "+i:r},raise:function(i,t){var a=this,n=e.Event(i);if(void 0!==t?a.$element.trigger(n,t):a.$element.trigger(n),!n.result)return n.result;switch(i){case"filebatchuploadcomplete":case"filebatchuploadsuccess":case"fileuploaded":case"fileclear":case"filecleared":case"filereset":case"fileerror":case"filefoldererror":case"fileuploaderror":case"filebatchuploaderror":case"filedeleteerror":case"filecustomerror":case"filesuccessremove":break;default:a.ajaxAborted=n.result}return!0},getLayoutTemplate:function(e){var i=this,t=M(e,i.layoutTemplates)?i.layoutTemplates[e]:U[e];return R(i.customLayoutTags)?t:H(t,i.customLayoutTags)},getPreviewTemplate:function(e){var i=this,t=M(e,i.previewTemplates)?i.previewTemplates[e]:j[e];return t=t.repl("{previewFileIcon}",i.previewFileIcon),R(i.customPreviewTags)?t:H(t,i.customPreviewTags)},getOutData:function(e,i,t){var a=this;return e=e||{},i=i||{},t=t||a.filestack.slice(0)||{},{form:a.formdata,files:t,extra:a.getExtraData(),response:i,reader:a.reader,jqXHR:e}},setEllipsis:function(){var e=this,i=e.$captionContainer,t=e.$caption,a=t.clone().css("height","auto").hide();i.parent().before(a),i.removeClass("kv-has-ellipsis"),a.outerWidth()>t.outerWidth()&&i.addClass("kv-has-ellipsis"),a.remove()},listen:function(){var i=this,t=i.$element,a=i.$captionContainer,n=i.$btnFile,r=t.closest("form");t.on("change",e.proxy(i.change,i)),e(window).on("resize",function(){i.setEllipsis()}),n.off("click").on("click",function(){i.raise("filebrowse"),i.isError&&!i.isUploadable&&i.clear(),a.focus()}),r.off("reset").on("reset",e.proxy(i.reset,i)),i.$container.off("click").on("click",".fileinput-remove:not([disabled])",e.proxy(i.clear,i)).on("click",".fileinput-cancel",e.proxy(i.cancel,i)),i.isUploadable&&i.dropZoneEnabled&&i.showPreview&&i.initDragDrop(),i.isUploadable||r.on("submit",e.proxy(i.submitForm,i)),i.$container.find(".kv-fileinput-upload").off("click").on("click",function(t){var a,n=e(this),r=!n.hasClass("disabled")&&R(n.attr("disabled"));return i.isUploadable?(t.preventDefault(),void(r&&i.upload())):void(r&&"submit"!==n.attr("type")&&(a=n.closest("form"),a.length&&a.trigger("submit"),t.preventDefault()))})},submitForm:function(){var e=this,i=e.$element,t=i.get(0).files;return t&&t.length0?(e.noFilesError({}),!1):!e.abort({})},abort:function(i){var t,a=this;return a.ajaxAborted&&"object"==typeof a.ajaxAborted&&void 0!==a.ajaxAborted.message?(t=e.extend(a.getOutData(),i),t.abortData=a.ajaxAborted.data||{},t.abortMessage=a.ajaxAborted.message,a.showUploadError(a.ajaxAborted.message,t,"filecustomerror"),!0):!1},noFilesError:function(e){var i=this,t=i.minFileCount>1?i.filePlural:i.fileSingle,a=i.msgFilesTooLess.replace("{n}",i.minFileCount).replace("{files}",t),n=i.$errorContainer;n.html(a),i.isError=!0,i.updateFileDetails(0),n.fadeIn(800),i.raise("fileerror",[e]),i.clearFileInput(),o(i.$container,"has-error")},setProgress:function(e){var i=this,t=Math.min(e,100),a=100>t?i.progressTemplate:i.progressCompleteTemplate;R(a)||i.$progress.html(a.repl("{percent}",t))},upload:function(){var i,t,a,n=this,r=n.getFileStack().length,l={},o=!e.isEmptyObject(n.getExtraData());if(r0)return void n.noFilesError(l);if(n.isUploadable&&!n.isDisabled&&(0!==r||o)){if(n.resetUpload(),n.$progress.removeClass("hide"),n.uploadCount=0,n.uploadPercent=0,n.lock(),n.setProgress(0),0===r&&o)return void n.uploadExtraOnly();if(a=n.filestack.length,n.hasInitData=!1,n.uploadAsync&&n.showPreview)for(t=n.getOutData(),n.raise("filebatchpreupload",[t]),n.fileBatchCompleted=!1,n.uploadCache={content:[],config:[],tags:[],append:!0},i=0;a>i;i+=1)void 0!==n.filestack[i]&&n.uploadSingle(i,n.filestack,!0);else n.uploadBatch()}},lock:function(){var e=this;e.resetErrors(),e.disable(),e.showRemove&&o(e.$container.find(".fileinput-remove"),"hide"),e.showCancel&&e.$container.find(".fileinput-cancel").removeClass("hide"),e.raise("filelock",[e.filestack,e.getExtraData()])},unlock:function(e){var i=this;void 0===e&&(e=!0),i.enable(),i.showCancel&&o(i.$container.find(".fileinput-cancel"),"hide"),i.showRemove&&i.$container.find(".fileinput-remove").removeClass("hide"),e&&i.resetFileStack(),i.raise("fileunlock",[i.filestack,i.getExtraData()])},resetFileStack:function(){var i=this,t=0,a=[];i.getThumbs().each(function(){var n=e(this),r=n.attr("data-fileindex"),l=i.filestack[r];-1!==r&&(void 0!==l?(a[t]=l,n.attr({id:i.previewInitId+"-"+t,"data-fileindex":t}),t+=1):n.attr({id:"uploaded-"+B(),"data-fileindex":"-1"}))}),i.filestack=a},refresh:function(i){var t,a=this,n=a.$element,r=arguments.length?e.extend(a.options,i):a.options;n.off(),a.init(r),t=a.$container.find(".file-drop-zone"),t.off("dragenter dragover dragleave drop"),e(document).off("dragenter dragover drop"),a.listen(),a.setFileDropZoneTitle()},initDragDrop:function(){var i=this,t=i.$container.find(".file-drop-zone");t.off("dragenter dragover dragleave drop"),e(document).off("dragenter dragover drop"),t.on("dragenter dragover",function(t){var a=e.inArray("Files",t.originalEvent.dataTransfer.types)>-1;return t.stopPropagation(),t.preventDefault(),i.isDisabled||!a?(t.originalEvent.dataTransfer.effectAllowed="none",void(t.originalEvent.dataTransfer.dropEffect="none")):void o(e(this),"highlighted")}),t.on("dragleave",function(t){t.stopPropagation(),t.preventDefault(),i.isDisabled||e(this).removeClass("highlighted")}),t.on("drop",function(t){t.preventDefault(),i.isDisabled||R(t.originalEvent.dataTransfer.files)||(i.change(t,"dragdrop"),e(this).removeClass("highlighted"))}),e(document).on("dragenter dragover drop",function(e){e.stopPropagation(),e.preventDefault()})},setFileDropZoneTitle:function(){var e=this,i=e.$container.find(".file-drop-zone");i.find("."+e.dropZoneTitleClass).remove(),e.isUploadable&&e.showPreview&&0!==i.length&&!(e.getFileStack().length>0)&&e.dropZoneEnabled&&(0===i.find(".file-preview-frame").length&&i.prepend('
    '+e.dropZoneTitle+"
    "),e.$container.removeClass("file-input-new"),o(e.$container,"file-input-ajax-new"))},initFileActions:function(){var i=this;i.$preview.find(".kv-file-remove").each(function(){var a,n,r=e(this),l=r.closest(".file-preview-frame"),o=l.attr("data-fileindex");r.off("click").on("click",function(){i.cleanMemory(l),l.fadeOut("slow",function(){i.filestack[o]=void 0,i.clearObjects(l),l.remove();var e=i.getFileStack(!0),r=e.length,s=t.count(i.id);i.clearFileInput(),0===r&&0===s?i.reset():(a=s+r,n=a>1?i.getMsgSelected(a):e[0]?e[0].name:"",i.setCaption(n))})})}),i.$preview.find(".kv-file-upload").each(function(){var t=e(this);t.off("click").on("click",function(){var e=t.closest(".file-preview-frame"),a=e.attr("data-fileindex");i.uploadSingle(a,i.filestack,!1)})})},getMsgSelected:function(e){var i=this,t=1===e?i.fileSingle:i.filePlural;return i.msgSelected.replace("{n}",e).replace("{files}",t)},renderFileFooter:function(e,i){var t,a,n=this,r=n.fileActionSettings,l=n.getLayoutTemplate("footer");return n.isUploadable?(t=l.repl("{actions}",n.renderFileActions(!0,!0,!1,!1,!1)),a=t.repl("{caption}",e).repl("{width}",i).repl("{indicator}",r.indicatorNew).repl("{indicatorTitle}",r.indicatorNewTitle)):a=l.repl("{actions}","").repl("{caption}",e).repl("{width}",i).repl("{indicator}","").repl("{indicatorTitle}",""),a=H(a,n.previewThumbTags)},renderFileActions:function(e,i,t,a,n){if(!e&&!i)return"";var r=this,l=a===!1?"":' data-url="'+a+'"',o=n===!1?"":' data-key="'+n+'"',s=r.getLayoutTemplate("actionDelete"),d="",c=r.getLayoutTemplate("actions"),p=r.otherActionButtons.repl("{dataKey}",o),u=r.fileActionSettings,f=t?u.removeClass+" disabled":u.removeClass;return s=s.repl("{removeClass}",f).repl("{removeIcon}",u.removeIcon).repl("{removeTitle}",u.removeTitle).repl("{dataUrl}",l).repl("{dataKey}",o),e&&(d=r.getLayoutTemplate("actionUpload").repl("{uploadClass}",u.uploadClass).repl("{uploadIcon}",u.uploadIcon).repl("{uploadTitle}",u.uploadTitle)),c.repl("{delete}",s).repl("{upload}",d).repl("{other}",p)},setThumbStatus:function(e,i){var t=this,a="indicator"+i,n=a+"Title",r="file-preview-"+i.toLowerCase(),l=e.find(".file-upload-indicator"),o=t.fileActionSettings;e.removeClass("file-preview-success file-preview-error file-preview-loading"),l.html(o[a]),l.attr("title",o[n]),e.addClass(r)},clearPreview:function(){var e=this,i=e.$preview.find(e.showUploadedThumbs?".file-preview-frame:not(.file-preview-success)":".file-preview-frame");i.remove(),e.$preview.find(".file-preview-frame").length&&e.showPreview||e.resetUpload()},initPreview:function(e){var i,a=this,n=a.initialCaption||"";return t.count(a.id)?(i=t.out(a.id),n=e&&a.initialCaption?a.initialCaption:i.caption,a.$preview.html(i.content),a.setCaption(n),void(R(i.content)||a.$container.removeClass("file-input-new"))):(a.clearPreview(),void(e?a.setCaption(n):a.initCaption()))},initPreviewDeletes:function(){var i=this,a=i.deleteExtraData||{},n=function(){0===i.$preview.find(".kv-file-remove").length&&(i.reset(),i.initialCaption="")};i.$preview.find(".kv-file-remove").each(function(){var r=e(this),l=r.data("url")||i.deleteUrl,s=r.data("key");if(!R(l)&&void 0!==s){var d,c,p,u,f=r.closest(".file-preview-frame"),v=t.data[i.id],h=f.data("fileindex");h=parseInt(h.replace("init_","")),p=R(v.config)&&R(v.config[h])?null:v.config[h],u=R(p)||R(p.extra)?a:p.extra,"function"==typeof u&&(u=u()),c={id:r.attr("id"),key:s,extra:u},d=e.extend({url:l,type:"DELETE",dataType:"json",data:e.extend({key:s},u),beforeSend:function(e){i.ajaxAborted=!1,i.raise("filepredelete",[s,e,u]),i.ajaxAborted?e.abort():(o(f,"file-uploading"),o(r,"disabled"))},success:function(e,a,l){var o,d;return R(e)||R(e.error)?(t.unset(i.id,h),o=t.count(i.id),d=o>0?i.getMsgSelected(o):"",i.raise("filedeleted",[s,l,u]),i.setCaption(d),f.removeClass("file-uploading").addClass("file-deleted"),void f.fadeOut("slow",function(){i.clearObjects(f),f.remove(),n(),o||0!==i.getFileStack().length||(i.setCaption(""),i.reset())})):(c.jqXHR=l,c.response=e,i.showError(e.error,c,"filedeleteerror"),f.removeClass("file-uploading"),r.removeClass("disabled"),void n())},error:function(e,t,a){var r=i.parseError(e,a);c.jqXHR=e,c.response={},i.showError(r,c,"filedeleteerror"),f.removeClass("file-uploading"),n()}},i.ajaxDeleteSettings),r.off("click").on("click",function(){e.ajax(d)})}})},clearObjects:function(i){i.find("video audio").each(function(){this.pause(),e(this).remove()}),i.find("img object div").each(function(){e(this).remove()})},clearFileInput:function(){var i,t,a,n=this,r=n.$element;R(r.val())||(n.isIE9||n.isIE10?(i=r.closest("form"),t=e(document.createElement("form")),a=e(document.createElement("div")),r.before(a),i.length?i.after(t):a.after(t),t.append(r).trigger("reset"),a.before(r).remove(),t.remove()):r.val(""),n.fileInputCleared=!0)},resetUpload:function(){var e=this;e.uploadCache={content:[],config:[],tags:[],append:!0},e.uploadCount=0,e.uploadPercent=0,e.$btnUpload.removeAttr("disabled"),e.setProgress(0),o(e.$progress,"hide"),e.resetErrors(!1),e.ajaxAborted=!1,e.ajaxRequests=[]},cancel:function(){var i,t=this,a=t.ajaxRequests,n=a.length;if(n>0)for(i=0;n>i;i+=1)a[i].abort();t.getThumbs().each(function(){var i=e(this),a=i.attr("data-fileindex");i.removeClass("file-uploading"),void 0!==t.filestack[a]&&(i.find(".kv-file-upload").removeClass("disabled").removeAttr("disabled"),i.find(".kv-file-remove").removeClass("disabled").removeAttr("disabled")),t.unlock()})},cleanMemory:function(e){var i=e.is("img")?e.attr("src"):e.find("source").attr("src");W.revokeObjectURL(i)},hasInitialPreview:function(){var e=this;return!e.overwriteInitial&&t.count(e.id)},clear:function(){var i,t=this;t.$btnUpload.removeAttr("disabled"),t.getThumbs().find("video,audio,img").each(function(){t.cleanMemory(e(this))}),t.resetUpload(),t.filestack=[],t.clearFileInput(),t.resetErrors(!0),t.raise("fileclear"),t.hasInitialPreview()?(t.showFileIcon(),t.resetPreview(),t.setEllipsis(),t.initPreviewDeletes(),t.$container.removeClass("file-input-new")):(t.getThumbs().each(function(){t.clearObjects(e(this))}),t.$preview.html(""),i=!t.overwriteInitial&&t.initialCaption.length>0?t.initialCaption:"",t.setCaption(i),t.setEllipsis(),t.$caption.attr("title",""),o(t.$container,"file-input-new")),0===t.$container.find(".file-preview-frame").length&&(t.initCaption()||t.$captionContainer.find(".kv-caption-icon").hide(),t.setEllipsis()),t.hideFileIcon(),t.raise("filecleared"),t.$captionContainer.focus(),t.setFileDropZoneTitle()},resetPreview:function(){var e,i=this;t.count(i.id)?(e=t.out(i.id),i.$preview.html(e.content),i.setCaption(e.caption)):(i.clearPreview(),i.initCaption())},reset:function(){var e=this;e.resetPreview(),e.setEllipsis(),e.$container.find(".fileinput-filename").text(""),e.raise("filereset"),e.initialPreview.length>0&&e.$container.removeClass("file-input-new"),e.setFileDropZoneTitle(),e.filestack=[],e.formdata={}},disable:function(){var e=this;e.isDisabled=!0,e.raise("filedisabled"),e.$element.attr("disabled","disabled"),e.$container.find(".kv-fileinput-caption").addClass("file-caption-disabled"),e.$container.find(".btn-file, .fileinput-remove, .kv-fileinput-upload").attr("disabled",!0),e.initDragDrop()},enable:function(){var e=this;e.isDisabled=!1,e.raise("fileenabled"),e.$element.removeAttr("disabled"),e.$container.find(".kv-fileinput-caption").removeClass("file-caption-disabled"),e.$container.find(".btn-file, .fileinput-remove, .kv-fileinput-upload").removeAttr("disabled"),e.initDragDrop()},getThumbs:function(e){return e=e||"",this.$preview.find(".file-preview-frame:not(.file-preview-initial)"+e)},getExtraData:function(){var e=this,i=e.uploadExtraData;return"function"==typeof e.uploadExtraData&&(i=e.uploadExtraData()),i},uploadExtra:function(){var i=this,t=i.getExtraData();0!==t.length&&e.each(t,function(e,t){i.formdata.append(e,t)})},initXhr:function(e,i){var t=this;return e.upload&&e.upload.addEventListener("progress",function(e){var a=0,n=e.loaded||e.position,r=e.total;e.lengthComputable&&(a=Math.ceil(n/r*i)),t.uploadPercent=Math.max(a,t.uploadPercent),t.setProgress(t.uploadPercent)},!1),e},ajaxSubmit:function(i,t,a,n){var r,l=this;l.uploadExtra(),r=e.extend({xhr:function(){var i=e.ajaxSettings.xhr();return l.initXhr(i,98)},url:l.uploadUrl,type:"POST",dataType:"json",data:l.formdata,cache:!1,processData:!1,contentType:!1,beforeSend:i,success:t,complete:a,error:n},l.ajaxSettings),l.ajaxRequests.push(e.ajax(r))},initUploadSuccess:function(i,a,n){var r,l,o,s,d,c,p,u=this;"object"!=typeof i||e.isEmptyObject(i)||void 0!==i.initialPreview&&i.initialPreview.length>0&&(u.hasInitData=!0,d=i.initialPreview||[],c=i.initialPreviewConfig||[],p=i.initialPreviewThumbTags||[],r=void 0===i.append||i.append?!0:!1,u.overwriteInitial=!1,void 0===a||n?n?(u.uploadCache.content.push(d[0]),u.uploadCache.config.push(c[0]),u.uploadCache.tags.push(p[0]),u.uploadCache.append=r):(t.set(u.id,d,c,p,r),u.initPreview(),u.initPreviewDeletes()):(o=t.add(u.id,d,c[0],p[0],r),l=t.get(u.id,o,!1),s=e(l).hide(),a.after(s).fadeOut("slow",function(){s.fadeIn("slow").css("display:inline-block"),u.initPreviewDeletes(),u.clearFileInput(),a.remove()})))},initSuccessThumbs:function(){var i=this;i.getThumbs(".file-preview-success").each(function(){var t=e(this),a=t.find(".kv-file-remove");a.removeAttr("disabled").off("click").on("click",function(){var e=i.raise("filesuccessremove",[t.attr("id"),t.data("fileindex")]);i.cleanMemory(t),e!==!1&&t.fadeOut("slow",function(){t.remove(),i.$preview.find(".file-preview-frame").length||i.reset()})})})},uploadSingle:function(i,a,n){var r,l,s,d,c,p,u,f,v,h=this,m=h.getFileStack().length,g=new FormData,w=h.previewInitId+"-"+i,b=e("#"+w+":not(.file-preview-initial)"),x=b.find(".kv-file-upload"),C=b.find(".kv-file-remove"),y=h.filestack.length>0||!e.isEmptyObject(h.uploadExtraData),T={id:w,index:i};h.formdata=g,0===m||!y||x.hasClass("disabled")||h.abort(T)||(s=function(){var e=h.getThumbs(".file-uploading");e.length>0||h.fileBatchCompleted||(h.fileBatchCompleted=!0,setTimeout(function(){t.set(h.id,h.uploadCache.content,h.uploadCache.config,h.uploadCache.tags,h.uploadCache.append),h.hasInitData&&(h.initPreview(),h.initPreviewDeletes()),h.setProgress(100),h.unlock(),h.clearFileInput(),h.raise("filebatchuploadcomplete",[h.filestack,h.getExtraData()])},100))},d=function(){!n||0===m||h.uploadPercent>=100||(h.uploadCount+=1,l=80+Math.ceil(20*h.uploadCount/m),h.uploadPercent=Math.max(l,h.uploadPercent),h.setProgress(h.uploadPercent),h.initPreviewDeletes())},c=function(){x.removeAttr("disabled"),C.removeAttr("disabled"),b.removeClass("file-uploading")},p=function(t){r=h.getOutData(t),b.hasClass("file-preview-success")||(h.setThumbStatus(b,"Loading"),o(b,"file-uploading")),x.attr("disabled",!0),C.attr("disabled",!0),n||h.lock(),h.raise("filepreupload",[r,w,i]),T=e.extend(T,r),h.abort(T)&&(t.abort(),h.setProgress(100))},u=function(t,a,l){r=h.getOutData(l,t),T=e.extend(T,r),setTimeout(function(){R(t)||R(t.error)?(h.setThumbStatus(b,"Success"),x.hide(),h.filestack[i]=void 0,h.raise("fileuploaded",[r,w,i]),h.initUploadSuccess(t,b,n),n||h.resetFileStack()):(h.setThumbStatus(b,"Error"),h.showUploadError(t.error,T))},100)},f=function(){setTimeout(function(){d(),c(),n?s():h.unlock(!1),h.initSuccessThumbs()},100)},v=function(t,r,l){var o=h.parseError(t,l,n?a[i].name:null);h.setThumbStatus(b,"Error"),T=e.extend(T,h.getOutData(t)),h.showUploadError(o,T)},g.append(h.uploadFileAttr,a[i]),g.append("file_id",i),h.ajaxSubmit(p,u,f,v))},uploadBatch:function(){var i,t,a,n,r,l=this,s=l.filestack,d=s.length,c=l.filestack.length>0||!e.isEmptyObject(l.uploadExtraData),p={};l.formdata=new FormData,0!==d&&c&&!l.abort(p)&&(i=function(){e.each(s,function(e){l.filestack[e]=void 0}),l.clearFileInput()},t=function(i){l.lock();var t=l.getOutData(i);l.showPreview&&l.getThumbs().each(function(){var i=e(this),t=i.find(".kv-file-upload"),a=i.find(".kv-file-remove");i.hasClass("file-preview-success")||(l.setThumbStatus(i,"Loading"),o(i,"file-uploading")),t.attr("disabled",!0),a.attr("disabled",!0)}),l.raise("filebatchpreupload",[t]),l.abort(t)&&i.abort()},a=function(t,a,n){var r=l.getOutData(n,t),o=l.getThumbs(),s=R(t.errorkeys)?[]:t.errorkeys;R(t)||R(t.error)?(l.raise("filebatchuploadsuccess",[r]),i(),l.showPreview?(o.each(function(){var i=e(this),t=i.find(".kv-file-upload");i.find(".kv-file-upload").hide(),l.setThumbStatus(i,"Success"),i.removeClass("file-uploading"),t.removeAttr("disabled")}),l.initUploadSuccess(t)):l.reset()):(l.showPreview&&(o.each(function(){var i=e(this),t=i.find(".kv-file-remove"),a=i.find(".kv-file-upload");return i.removeClass("file-uploading"),a.removeAttr("disabled"),t.removeAttr("disabled"),0===s.length?void l.setThumbStatus(i,"Error"):void(-1!==e.inArray(key,s)?l.setThumbStatus(i,"Error"):(i.find(".kv-file-upload").hide(),l.setThumbStatus(i,"Success"),l.filestack[key]=void 0)); - -}),l.initUploadSuccess(t)),l.showUploadError(t.error,r,"filebatchuploaderror"))},n=function(){l.setProgress(100),l.unlock(),l.initSuccessThumbs(),l.raise("filebatchuploadcomplete",[l.filestack,l.getExtraData()]),l.clearFileInput()},r=function(i,t,a){var n=l.getOutData(i),r=l.parseError(i,a);l.showUploadError(r,n,"filebatchuploaderror"),l.uploadFileCount=d-1,l.showPreview&&(l.getThumbs().each(function(){var i=e(this),t=i.attr("data-fileindex");i.removeClass("file-uploading"),void 0!==l.filestack[t]&&l.setThumbStatus(i,"Error")}),l.getThumbs().removeClass("file-uploading"),l.getThumbs(" .kv-file-upload").removeAttr("disabled"),l.getThumbs(" .kv-file-delete").removeAttr("disabled"))},e.each(s,function(e,i){R(s[e])||l.formdata.append(l.uploadFileAttr,i)}),l.ajaxSubmit(t,a,n,r))},uploadExtraOnly:function(){var e,i,t,a,n=this,r={};n.formdata=new FormData,n.abort(r)||(e=function(e){n.lock();var i=n.getOutData(e);n.raise("filebatchpreupload",[i]),n.setProgress(50),r.data=i,r.xhr=e,n.abort(r)&&(e.abort(),n.setProgress(100))},i=function(e,i,t){var a=n.getOutData(t,e);R(e)||R(e.error)?(n.raise("filebatchuploadsuccess",[a]),n.clearFileInput(),n.initUploadSuccess(e)):n.showUploadError(e.error,a,"filebatchuploaderror")},t=function(){n.setProgress(100),n.unlock(),n.raise("filebatchuploadcomplete",[n.filestack,n.getExtraData()]),n.clearFileInput()},a=function(e,i,t){var a=n.getOutData(e),l=n.parseError(e,t);r.data=a,n.showUploadError(l,a,"filebatchuploaderror")},n.ajaxSubmit(e,i,t,a))},hideFileIcon:function(){this.overwriteInitial&&this.$captionContainer.find(".kv-caption-icon").hide()},showFileIcon:function(){this.$captionContainer.find(".kv-caption-icon").show()},resetErrors:function(e){var i=this,t=i.$errorContainer;i.isError=!1,i.$container.removeClass("has-error"),t.html(""),e?t.fadeOut("slow"):t.hide()},showFolderError:function(e){var i=this,t=i.$errorContainer;e&&(t.html(i.msgFoldersNotAllowed.repl("{n}",e)),t.fadeIn(800),o(i.$container,"has-error"),i.raise("filefoldererror",[e]))},showUploadError:function(e,i,t){var a=this,n=a.$errorContainer,r=t||"fileuploaderror";return 0===n.find("ul").length?n.html("
    • "+e+"
    "):n.find("ul").append("
  • "+e+"
  • "),n.fadeIn(800),a.raise(r,[i]),o(a.$container,"has-error"),!0},showError:function(e,i,t){var a=this,n=a.$errorContainer,r=t||"fileerror";return i=i||{},i.reader=a.reader,n.html(e),n.fadeIn(800),a.raise(r,[i]),a.isUploadable||a.clearFileInput(),o(a.$container,"has-error"),a.$btnUpload.attr("disabled",!0),!0},errorHandler:function(e,i){var t=this,a=e.target.error;switch(a.code){case a.NOT_FOUND_ERR:t.showError(t.msgFileNotFound.replace("{name}",i));break;case a.SECURITY_ERR:t.showError(t.msgFileSecured.replace("{name}",i));break;case a.NOT_READABLE_ERR:t.showError(t.msgFileNotReadable.replace("{name}",i));break;case a.ABORT_ERR:t.showError(t.msgFilePreviewAborted.replace("{name}",i));break;default:t.showError(t.msgFilePreviewError.replace("{name}",i))}},parseFileType:function(e){var i,t,a,n,r=this;for(n=0;n=0,b=R(f)||!R(f)&&-1!==f.indexOf(i.type),x=d.renderFileFooter(p,h.width),C="",y=a.slice(a.lastIndexOf("-")+1);w&&b?("text"===c?(l=Z(t.target.result),l.length>m&&(o="text-"+B(),s=.75*window.innerHeight,C=d.getLayoutTemplate("modal").repl("{id}",o).repl("{title}",p).repl("{height}",s).repl("{body}",l),g=g.repl("{title}",p).repl("{dialog}","$('#"+o+"').modal('show')"),l=l.substring(0,m-1)+g),r=v.repl("{previewId}",a).repl("{caption}",p).repl("{frameClass}","").repl("{type}",i.type).repl("{width}",h.width).repl("{height}",h.height).repl("{data}",l).repl("{footer}",x).repl("{fileindex}",y)+C):r=v.repl("{previewId}",a).repl("{caption}",p).repl("{frameClass}","").repl("{type}",i.type).repl("{data}",n).repl("{width}",h.width).repl("{height}",h.height).repl("{footer}",x).repl("{fileindex}",y),d.$preview.append("\n"+r),d.validateImage(e,a)):d.previewDefault(i,a)}},slugDefault:function(e){return R(e)?"":e.split(/(\\|\/)/g).pop().replace(/[^\w\u00C0-\u017F\-.\\\/ ]+/g,"")},getFileStack:function(e){var i=this;return i.filestack.filter(function(i){return e?void 0!==i:void 0!==i&&null!==i})},readFiles:function(i){function t(e){if(R(n.attr("multiple"))&&(u=1),e>=u)return a.isUploadable&&a.filestack.length>0?a.raise("filebatchselected",[a.getFileStack()]):a.raise("filebatchselected",[i]),o.removeClass("loading"),void s.html("");var m,g,w,b,x,C,y=v+e,T=p+"-"+y,E=i[e],k=a.slug(E.name),F=(E.size||0)/1e3,$="",I=W.createObjectURL(E),D=0,P=a.allowedFileTypes,S=R(P)?"":P.join(", "),U=a.allowedFileExtensions,j=R(U)?"":U.join(", ");if(R(U)||($=new RegExp("\\.("+U.join("|")+")$","i")),F=F.toFixed(2),a.maxFileSize>0&&F>a.maxFileSize)return b=a.msgSizeTooLarge.replace("{name}",k).replace("{size}",F).replace("{maxSize}",a.maxFileSize),void(a.isError=h(b,E,T,e));if(!R(P)&&z(P)){for(w=0;w0&&void 0!==FileReader?(s.html(d.replace("{index}",e+1).replace("{files}",u)),o.addClass("loading"),l.onerror=function(e){a.errorHandler(e,k)},l.onload=function(i){a.previewFile(e,E,i,T,I),a.initFileActions()},l.onloadend=function(){b=c.replace("{index}",e+1).replace("{files}",u).replace("{percent}",50).replace("{name}",k),setTimeout(function(){s.html(b),t(e+1),a.updateFileDetails(u)},100),a.raise("fileloaded",[E,T,e,l])},l.onprogress=function(i){if(i.lengthComputable){var t=i.loaded/i.total*100,a=Math.ceil(t);b=c.replace("{index}",e+1).replace("{files}",u).replace("{percent}",a).replace("{name}",k),setTimeout(function(){s.html(b)},100)}},m=M("text",f)?f.text:O.text,m(E.type,k)?l.readAsText(E,a.textEncoding):l.readAsArrayBuffer(E)):(a.previewDefault(E,T),setTimeout(function(){t(e+1),a.updateFileDetails(u)},100),a.raise("fileloaded",[E,T,e,l])),void a.filestack.push(E)):(a.filestack.push(E),setTimeout(t(e+1),100),void a.raise("fileloaded",[E,T,e,l])):(b=a.msgInvalidFileExtension.replace("{name}",k).replace("{extensions}",j),void(a.isError=h(b,E,T,e)))}this.reader=new FileReader;var a=this,n=a.$element,r=a.$preview,l=a.reader,o=a.$previewContainer,s=a.$previewStatus,d=a.msgLoading,c=a.msgProgress,p=a.previewInitId,u=i.length,f=a.fileTypeSettings,v=a.filestack.length,h=function(t,n,r,l){var o=e.extend(a.getOutData({},{},i),{id:r,index:l}),s={id:r,index:l,file:n,files:i};return a.previewDefault(n,r,!0),a.isUploadable?a.showUploadError(t,o):a.showError(t,s)};t(0),a.updateFileDetails(u,!1)},updateFileDetails:function(e){var i=this,a=i.$element,n=i.getFileStack(),r=a.val()||n.length&&n[0].name||"",l=i.slug(r),o=i.isUploadable?n.length:e,s=t.count(i.id)+o,d=o>1?i.getMsgSelected(s):l;i.isError?(i.$previewContainer.removeClass("loading"),i.$previewStatus.html(""),i.$captionContainer.find(".kv-caption-icon").hide()):i.showFileIcon(),i.setCaption(d,i.isError),i.$container.removeClass("file-input-new file-input-ajax-new"),1===arguments.length&&i.raise("fileselect",[e,l]),t.count(i.id)&&i.initPreviewDeletes()},change:function(i){var a=this,n=a.$element;if(!a.isUploadable&&R(n.val())&&a.fileInputCleared)return void(a.fileInputCleared=!1);a.fileInputCleared=!1;var r,l,o,s,d=a.$preview,c=arguments.length>1,p=c?i.originalEvent.dataTransfer.files:n.get(0).files,u=R(n.attr("multiple")),f=0,v=0,h=a.filestack.length,m=a.isUploadable,g=function(i,t,n,r){var l=e.extend(a.getOutData({},{},p),{id:n,index:r}),o={id:n,index:r,file:t,files:p};return a.isUploadable?a.showUploadError(i,l):a.showError(i,o)};if(a.reader=null,a.resetUpload(),a.hideFileIcon(),a.isUploadable&&a.$container.find(".file-drop-zone ."+a.dropZoneTitleClass).remove(),c)for(r=[];p[f];)s=p[f],s.type||s.size%4096!==0?r.push(s):v++,f++;else r=void 0===i.target.files?i.target&&i.target.value?[{name:i.target.value.replace(/^.+\\/,"")}]:[]:i.target.files;if(R(r)||0===r.length)return m||a.clear(),a.showFolderError(v),void a.raise("fileselectnone");if(a.resetErrors(),o=a.isUploadable?a.getFileStack().length+r.length:r.length,a.maxFileCount>0&&o>a.maxFileCount)return l=a.msgFilesTooMany.replace("{m}",a.maxFileCount).replace("{n}",o),a.isError=g(l,null,null,null),a.$captionContainer.find(".kv-caption-icon").hide(),a.setCaption("",!0),a.setEllipsis(),void a.$container.removeClass("file-input-new file-input-ajax-new");if(!m||u&&h>0){if(a.hasInitialPreview()){var w=t.out(a.id);d.html(w.content),a.setCaption(w.caption),a.initPreviewDeletes()}else a.clearPreview();u&&h>0&&(a.filestack=[])}else!m||0!==h||t.count(a.id)&&!a.overwriteInitial||(a.clearPreview(),a.filestack=[]);a.isPreviewable?a.readFiles(r):a.updateFileDetails(1),a.showFolderError(v)},validateImage:function(e,i){var t,a,n,r,l=this,o=l.$preview,s=o.find("#"+i),d="Untitled",c=s.find("img");c.length&&c.on("load",function(){a=s.width(),n=o.width(),a>n&&(c.css("width","100%"),s.css("width","97%")),r=c.closest(".file-preview-frame").find(".file-caption-name"),r.length&&(r.width(c.width()),d=r.text(),r.attr("title",d)),t={ind:e,id:i},l.checkDimensions(e,"Small",c,s,d,"Width",t),l.checkDimensions(e,"Small",c,s,d,"Height",t),l.checkDimensions(e,"Large",c,s,d,"Width",t),l.checkDimensions(e,"Large",c,s,d,"Height",t),l.raise("fileimageloaded",[i]),W.revokeObjectURL(c.attr("src"))})},checkDimensions:function(e,i,t,a,n,r,l){var o,s,d,c,p=this,u="Small"===i?"min":"max",f=p[u+"Image"+r];!R(f)&&t.length&&(d=t[0],s="Width"===r?d.naturalWidth||d.width:d.naturalHeight||d.height,c="Small"===i?s>=f:f>=s,c||(o=p["msgImage"+r+i].replace("{name}",n).replace("{size}",f),p.showUploadError(o,l),p.setThumbStatus(a,"Error"),p.filestack[e]=null))},initCaption:function(){var e=this,i=e.initialCaption||"";return e.overwriteInitial||R(i)?(e.$caption.html(""),!1):(e.setCaption(i),!0)},setCaption:function(i,t){var a,n,r=this;if(t)a=e("
    "+r.msgValidationError+"
    ").text(),n=''+r.msgValidationErrorIcon+a+"";else{if(R(i)||0===r.$caption.length)return;a=e("
    "+i+"
    ").text(),n=r.getLayoutTemplate("icon")+a}r.$caption.html(n),r.$caption.attr("title",a),r.$captionContainer.find(".file-caption-ellipsis").attr("title",a),r.setEllipsis()},initBrowse:function(e){var i=this;i.$btnFile=e.find(".btn-file"),i.$btnFile.append(i.$element)},createContainer:function(){var i=this,t=e(document.createElement("span")).attr({"class":"file-input file-input-new"}).html(i.renderMain());return i.$element.before(t),i.initBrowse(t),t},refreshContainer:function(){var e=this,i=e.$container;i.before(e.$element),i.html(e.renderMain()),e.initBrowse(i)},renderMain:function(){var e=this,i=e.isUploadable&&e.dropZoneEnabled?" file-drop-zone":"",t=e.showPreview?e.getLayoutTemplate("preview").repl("{class}",e.previewClass).repl("{dropClass}",i):"",a=e.isDisabled?e.captionClass+" file-caption-disabled":e.captionClass,n=e.captionTemplate.repl("{class}",a+" kv-fileinput-caption");return e.mainTemplate.repl("{class}",e.mainClass).repl("{preview}",t).repl("{caption}",n).repl("{upload}",e.renderUpload()).repl("{remove}",e.renderRemove()).repl("{cancel}",e.renderCancel()).repl("{browse}",e.renderBrowse())},renderBrowse:function(){var e=this,i=e.browseClass+" btn-file",t="";return e.isDisabled&&(t=" disabled "),'
    "+e.browseIcon+e.browseLabel+"
    "},renderRemove:function(){var e=this,i=e.removeClass+" fileinput-remove fileinput-remove-button",t="";return e.showRemove?(e.isDisabled&&(t=" disabled "),'"):""},renderCancel:function(){var e=this,i=e.cancelClass+" fileinput-cancel fileinput-cancel-button";return e.showCancel?'":""},renderUpload:function(){var e=this,i=e.uploadClass+" kv-fileinput-upload fileinput-upload-button",t="",a="";return e.showUpload?(e.isDisabled&&(a=" disabled "),t=!e.isUploadable||e.isDisabled?'":'"+e.uploadIcon+e.uploadLabel+""):""}},e.fn.fileinput=function(t){if(n()||i(9)){var a=Array.apply(null,arguments);return a.shift(),this.each(function(){var i,n=e(this),r=n.data("fileinput"),l="object"==typeof t&&t,o=l.language||n.data("language")||"en";r||(i=e.extend({},e.fn.fileinput.defaults),"en"===o||R(e.fn.fileinputLocales[o])||(i=e.extend(i,e.fn.fileinputLocales[o])),r=new _(this,e.extend(i,l,n.data())),n.data("fileinput",r)),"string"==typeof t&&r[t].apply(r,a)})}},e.fn.fileinput.defaults={language:"en",showCaption:!0,showPreview:!0,showRemove:!0,showUpload:!0,showCancel:!0,showUploadedThumbs:!0,mainClass:"",previewClass:"",captionClass:"",mainTemplate:null,initialCaption:"",initialPreview:[],initialPreviewDelimiter:"*$$*",initialPreviewConfig:[],initialPreviewThumbTags:[],previewThumbTags:{},initialPreviewShowDelete:!0,deleteUrl:"",deleteExtraData:{},overwriteInitial:!0,layoutTemplates:U,previewTemplates:j,allowedPreviewTypes:A,allowedPreviewMimeTypes:null,allowedFileTypes:null,allowedFileExtensions:null,customLayoutTags:{},customPreviewTags:{},previewSettings:L,fileTypeSettings:O,previewFileIcon:'',browseIcon:'  ',browseClass:"btn btn-primary",removeIcon:' ',removeClass:"btn btn-default",cancelIcon:' ',cancelClass:"btn btn-default",uploadIcon:' ',uploadClass:"btn btn-default",uploadUrl:null,uploadAsync:!0,uploadExtraData:{},minImageWidth:null,minImageHeight:null,maxImageWidth:null,maxImageHeight:null,maxFileSize:0,minFileCount:0,maxFileCount:0,msgValidationErrorClass:"text-danger",msgValidationErrorIcon:' ',msgErrorClass:"file-error-message",progressClass:"progress-bar progress-bar-success progress-bar-striped active",progressCompleteClass:"progress-bar progress-bar-success",previewFileType:"image",wrapTextLength:250,wrapIndicator:' […]',elCaptionContainer:null,elCaptionText:null,elPreviewContainer:null,elPreviewImage:null,elPreviewStatus:null,elErrorContainer:null,slugCallback:null,dropZoneEnabled:!0,dropZoneTitleClass:"file-drop-zone-title",fileActionSettings:{},otherActionButtons:"",textEncoding:"UTF-8",ajaxSettings:{},ajaxDeleteSettings:{},showAjaxErrorDetails:!0},e.fn.fileinputLocales.en={fileSingle:"file",filePlural:"files",browseLabel:"Browse …",removeLabel:"Remove",removeTitle:"Clear selected files",cancelLabel:"Cancel",cancelTitle:"Abort ongoing upload",uploadLabel:"Upload",uploadTitle:"Upload selected files",msgSizeTooLarge:'File "{name}" ({size} KB) exceeds maximum allowed upload size of {maxSize} KB. Please retry your upload!',msgFilesTooLess:"You must select at least {n} {files} to upload. Please retry your upload!",msgFilesTooMany:"Number of files selected for upload ({n}) exceeds maximum allowed limit of {m}. Please retry your upload!",msgFileNotFound:'File "{name}" not found!',msgFileSecured:'Security restrictions prevent reading the file "{name}".',msgFileNotReadable:'File "{name}" is not readable.',msgFilePreviewAborted:'File preview aborted for "{name}".',msgFilePreviewError:'An error occurred while reading the file "{name}".',msgInvalidFileType:'Invalid type for file "{name}". Only "{types}" files are supported.',msgInvalidFileExtension:'Invalid extension for file "{name}". Only "{extensions}" files are supported.',msgValidationError:"File Upload Error",msgLoading:"Loading file {index} of {files} …",msgProgress:"Loading file {index} of {files} - {name} - {percent}% completed.",msgSelected:"{n} {files} selected",msgFoldersNotAllowed:"Drag & drop files only! {n} folder(s) dropped were skipped.",msgImageWidthSmall:'Width of image file "{name}" must be at least {size} px.',msgImageHeightSmall:'Height of image file "{name}" must be at least {size} px.',msgImageWidthLarge:'Width of image file "{name}" cannot exceed {size} px.',msgImageHeightLarge:'Height of image file "{name}" cannot exceed {size} px.',dropZoneTitle:"Drag & drop files here …"},e.extend(e.fn.fileinput.defaults,e.fn.fileinputLocales.en),e.fn.fileinput.Constructor=_,e(document).ready(function(){var i=e("input.file[type=file]");i.length&&i.fileinput()})}(window.jQuery); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput_locale_LANG.js b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput_locale_LANG.js deleted file mode 100644 index 492d8c4d..00000000 --- a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput_locale_LANG.js +++ /dev/null @@ -1,45 +0,0 @@ -/*! - * FileInput <_LANG_> Translations - * - * This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or - * any HTML markup tags in the messages must not be converted or translated. - * - * @see http://github.com/kartik-v/bootstrap-fileinput - * - * NOTE: this file must be saved in UTF-8 encoding. - */ -(function ($) { - "use strict"; - - $.fn.fileinputLocales['_LANG_'] = { - fileSingle: 'file', - filePlural: 'files', - browseLabel: 'Browse …', - removeLabel: 'Remove', - removeTitle: 'Clear selected files', - cancelLabel: 'Cancel', - cancelTitle: 'Abort ongoing upload', - uploadLabel: 'Upload', - uploadTitle: 'Upload selected files', - msgSizeTooLarge: 'File "{name}" ({size} KB) exceeds maximum allowed upload size of {maxSize} KB. Please retry your upload!', - msgFilesTooLess: 'You must select at least {n} {files} to upload. Please retry your upload!', - msgFilesTooMany: 'Number of files selected for upload ({n}) exceeds maximum allowed limit of {m}. Please retry your upload!', - msgFileNotFound: 'File "{name}" not found!', - msgFileSecured: 'Security restrictions prevent reading the file "{name}".', - msgFileNotReadable: 'File "{name}" is not readable.', - msgFilePreviewAborted: 'File preview aborted for "{name}".', - msgFilePreviewError: 'An error occurred while reading the file "{name}".', - msgInvalidFileType: 'Invalid type for file "{name}". Only "{types}" files are supported.', - msgInvalidFileExtension: 'Invalid extension for file "{name}". Only "{extensions}" files are supported.', - msgValidationError: 'File Upload Error', - msgLoading: 'Loading file {index} of {files} …', - msgProgress: 'Loading file {index} of {files} - {name} - {percent}% completed.', - msgSelected: '{n} {files} selected', - msgFoldersNotAllowed: 'Drag & drop files only! Skipped {n} dropped folder(s).', - msgImageWidthSmall: 'Width of image file "{name}" must be at least {size} px.', - msgImageHeightSmall: 'Height of image file "{name}" must be at least {size} px.', - msgImageWidthLarge: 'Width of image file "{name}" cannot exceed {size} px.', - msgImageHeightLarge: 'Height of image file "{name}" cannot exceed {size} px.', - dropZoneTitle: 'Drag & drop files here …' - }; -})(window.jQuery); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput_locale_zh.js b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput_locale_zh.js deleted file mode 100644 index 12d83710..00000000 --- a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput_locale_zh.js +++ /dev/null @@ -1,49 +0,0 @@ -/*! - * FileInput Chinese Translations - * - * This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or - * any HTML markup tags in the messages must not be converted or translated. - * - * @see http://github.com/kartik-v/bootstrap-fileinput - * @author kangqf - * - * NOTE: this file must be saved in UTF-8 encoding. - */ -(function ($) { - "use strict"; - - $.fn.fileinputLocales['zh'] = { - fileSingle: '文件', - filePlural: '多个文件', - browseLabel: '选择 …', - removeLabel: '移除', - removeTitle: '清除选中文件', - cancelLabel: '取消', - cancelTitle: '取消进行中的上传', - uploadLabel: '上传', - uploadTitle: '上传选中文件', - msgSizeTooLarge: '文件 "{name}" ({size} KB) 超过了允许大小 {maxSize} KB. 请重新上传!', - msgFilesTooLess: '你必须选择最少 {n} {files} 来上传. 请重新上传!', - msgFilesTooMany: '选择的上传文件个数 ({n}) 超出最大文件的限制个数 {m}. 请重新上传!', - msgFileNotFound: '文件 "{name}" 未找到!', - msgFileSecured: '安全限制,为了防止读取文件 "{name}".', - msgFileNotReadable: '文件 "{name}" 不可读.', - msgFilePreviewAborted: '取消 "{name}" 的预览.', - msgFilePreviewError: '读取 "{name}" 时出现了一个错误.', - msgInvalidFileType: '不正确的类型 "{name}". 只支持 "{types}" 类型的文件.', - msgInvalidFileExtension: '不正确的文件扩展名 "{name}". 只支持 "{extensions}" 的文件扩展名.', - msgValidationError: '文件上传错误', - msgLoading: '加载第 {index} 文件 共 {files} …', - msgProgress: '加载第 {index} 文件 共 {files} - {name} - {percent}% 完成.', - msgSelected: '{n} {files} 选中', - msgFoldersNotAllowed: '只支持拖拽文件! 跳过 {n} 拖拽的文件夹.', - msgImageWidthSmall: '宽度的图像文件的"{name}"的必须是至少{size}像素.', - msgImageHeightSmall: '图像文件的"{name}"的高度必须至少为{size}像素.', - msgImageWidthLarge: '宽度的图像文件"{name}"不能超过{size}像素.', - msgImageHeightLarge: '图像文件"{name}"的高度不能超过{size}像素.', - dropZoneTitle: '拖拽文件到这里 …', - slugCallback: function(text) { - return text ? text.split(/(\\|\/)/g).pop().replace(/[^\w\u4e00-\u9fa5\-.\\\/ ]+/g, '') : ''; - } - }; -})(window.jQuery); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-growl/bootstrap-growl.min.js b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-growl/bootstrap-growl.min.js deleted file mode 100644 index 40642941..00000000 --- a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-growl/bootstrap-growl.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/* Project: Bootstrap Growl - v2.0.0 | Author: Mouse0270 aka Robert McIntosh | License: MIT License | Website: https://github.com/mouse0270/bootstrap-growl */ -(function(e,t,n,r){var i="growl",s="plugin_"+i,o={element:"body",type:"info",allow_dismiss:true,placement:{from:"top",align:"right"},offset:20,spacing:10,z_index:1031,delay:5e3,timer:1e3,url_target:"_blank",mouse_over:false,animate:{enter:"animated fadeInDown",exit:"animated fadeOutUp"},icon_type:"class",template:''};var u=function(t,n){o=e.extend(true,{},o,n)},a=function(t,n,r){var n={content:{message:typeof n=="object"?n.message:n,title:n.title?n.title:null,icon:n.icon?n.icon:null,url:n.url?n.url:null}};r=e.extend(true,{},n,r);this.settings=e.extend(true,{},o,r);plugin=this;f(r,this.settings,plugin);this.$template=$template},f=function(t,n,r){var i={settings:n,$element:e(n.element),template:n.template};$template=l(i);c($template,i.settings);h($template,i.settings);p($template,i.settings,r)},l=function(t){var n=e(t.settings.template);n.addClass("alert-"+t.settings.type);n.attr("data-growl-position",t.settings.placement.from+"-"+t.settings.placement.align);n.find('[data-growl="dismiss"]').css("display","none");if(t.settings.allow_dismiss){n.find('[data-growl="dismiss"]').css("display","inline-block")}return n},c=function(e,t){e.find('[data-growl="dismiss"]').css({position:"absolute",top:"5px",right:"10px","z-index":t.z_index-1>=1?t.z_index-1:1});if(t.content.icon){if(t.icon_type.toLowerCase()=="class"){e.find('[data-growl="icon"]').addClass(t.content.icon)}else{if(e.find('[data-growl="icon"]').is("img")){e.find('[data-growl="icon"]').attr("src",t.content.icon)}else{e.find('[data-growl="icon"]').append('')}}}if(t.content.title){e.find('[data-growl="title"]').html(t.content.title)}if(t.content.message){e.find('[data-growl="message"]').html(t.content.message)}if(t.content.url){e.find('[data-growl="url"]').attr("href",t.content.url).attr("target",t.url_target);e.find('[data-growl="url"]').css({position:"absolute",top:"0px",left:"0px",width:"100%",height:"100%","z-index":t.z_index-2>=1?t.z_index-2:1})}},h=function(t,n){var r=n.offset,i={position:n.element==="body"?"fixed":"absolute",margin:0,"z-index":n.z_index,display:"inline-block"};e('[data-growl-position="'+n.placement.from+"-"+n.placement.align+'"]').each(function(){return r=Math.max(r,parseInt(e(this).css(n.placement.from))+e(this).outerHeight()+n.spacing)});i[n.placement.from]=r+"px";t.css(i);e(n.element).append(t);switch(n.placement.align){case"center":t.css({left:"50%",marginLeft:-(t.outerWidth()/2)+"px"});break;case"left":t.css("left",n.offset+"px");break;case"right":t.css("right",n.offset+"px");break}t.addClass("growl-animated")},p=function(e,t,n){e.addClass(t.animate.enter);e.find('[data-growl="dismiss"]').on("click",function(){n.close()});e.on("mouseover",function(t){e.addClass("hovering")}).on("mouseout",function(){e.removeClass("hovering")});if(t.delay>=1){e.data("growl-delay",t.delay);var r=setInterval(function(){var i=parseInt(e.data("growl-delay"))-t.timer;console.log();if(!e.hasClass("hovering")&&t.mouse_over=="pause"||t.mouse_over!="pause"){e.data("growl-delay",i)}if(i<=0){clearInterval(r);n.close()}},t.timer)}};a.prototype={update:function(e,t){switch(e){case"icon":if(this.settings.icon_type.toLowerCase()=="class"){this.$template.find('[data-growl="icon"]').removeClass(this.settings.content.icon);this.$template.find('[data-growl="icon"]').addClass(t)}else{if(this.$template.find('[data-growl="icon"]').is("img")){this.$template.find('[data-growl="icon"]')}else{this.$template.find('[data-growl="icon"]').find("img").attr().attr("src",t)}}break;case"url":this.$template.find('[data-growl="url"]').attr("href",t);break;case"type":this.$template.removeClass("alert-"+this.settings.type);this.$template.addClass("alert-"+t);break;default:this.$template.find('[data-growl="'+e+'"]').html(t)}return this},close:function(){var t=this.$template,n=this.settings,r=t.css(n.placement.from),i=false;t.addClass(this.settings.animate.exit);t.nextAll('[data-growl-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]').each(function(){e(this).css(n.placement.from,r);r=parseInt(r)+n.spacing+e(this).outerHeight()});t.one("webkitAnimationStart oanimationstart MSAnimationStart animationstart",function(e){i=true});t.one("webkitAnimationEnd oanimationend MSAnimationEnd animationend",function(t){e(this).remove()});setTimeout(function(){console.log(i);if(!i){t.remove()}},100);return this}};e.growl=function(e,t){if(e==false){u(this,t);return false}var n=new a(this,e,t);return n}})(jQuery,window,document) \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/css/bootstrap-modal-bs3patch.css b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/css/bootstrap-modal-bs3patch.css deleted file mode 100644 index 9939f3ce..00000000 --- a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/css/bootstrap-modal-bs3patch.css +++ /dev/null @@ -1,51 +0,0 @@ -/*! - * Bootstrap Modal - * - * Copyright Jordan Schroter - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Boostrap 3 patch for for bootstrap-modal. Include BEFORE bootstrap-modal.css! - */ - -body.modal-open, -.modal-open .navbar-fixed-top, -.modal-open .navbar-fixed-bottom { - margin-right: 0; -} - -.modal { - left: 50%; - bottom: auto; - right: auto; - z-index: 1050; - padding: 0; - width: 600px; - margin-left: -300px; - background-color: #ffffff; - border: 1px solid #999999; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - background-clip: padding-box; -} - -.modal.container { - max-width: none; -} - -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; -} - -.modal.bootbox { - border: none; - background: none; - box-shadow: none; -} \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/css/bootstrap-modal.css b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/css/bootstrap-modal.css deleted file mode 100644 index bc62761a..00000000 --- a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/css/bootstrap-modal.css +++ /dev/null @@ -1,214 +0,0 @@ -/*! - * Bootstrap Modal - * - * Copyright Jordan Schroter - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - */ - -.modal-open { - overflow: hidden; -} - - -/* add a scroll bar to stop page from jerking around */ -.modal-open.page-overflow .page-container, -.modal-open.page-overflow .page-container .navbar-fixed-top, -.modal-open.page-overflow .page-container .navbar-fixed-bottom, -.modal-open.page-overflow .modal-scrollable { - overflow-y: scroll; -} - -@media (max-width: 979px) { - .modal-open.page-overflow .page-container .navbar-fixed-top, - .modal-open.page-overflow .page-container .navbar-fixed-bottom { - overflow-y: visible; - } -} - - -.modal-scrollable { - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - overflow: auto; -} - -.modal { - outline: none; - position: absolute; - margin-top: 0; - top: 50%; - overflow: visible; /* allow content to popup out (i.e tooltips) */ -} - -.modal.fade { - top: -100%; - -webkit-transition: opacity 0.3s linear, top 0.3s ease-out, bottom 0.3s ease-out, margin-top 0.3s ease-out; - -moz-transition: opacity 0.3s linear, top 0.3s ease-out, bottom 0.3s ease-out, margin-top 0.3s ease-out; - -o-transition: opacity 0.3s linear, top 0.3s ease-out, bottom 0.3s ease-out, margin-top 0.3s ease-out; - transition: opacity 0.3s linear, top 0.3s ease-out, bottom 0.3s ease-out, margin-top 0.3s ease-out; -} - -.modal.fade.in { - top: 50%; -} - -.modal-body { - max-height: none; - overflow: visible; -} - -.modal.modal-absolute { - position: absolute; - z-index: 950; -} - -.modal .loading-mask { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - background: #fff; - border-radius: 6px; -} - -.modal-backdrop.modal-absolute{ - position: absolute; - z-index: 940; -} - -.modal-backdrop, -.modal-backdrop.fade.in{ - opacity: 0.7; - filter: alpha(opacity=70); - background: #fff; -} - -.modal.container { - width: 940px; - margin-left: -470px; -} - -/* Modal Overflow */ - -.modal-overflow.modal { - top: 5%; -} - -.modal-overflow.modal.fade { - top: -100%; -} - -.modal-overflow.modal.fade.in { - top: 5%; -} - -.modal-overflow .modal-body { - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -/* Responsive */ - -@media (min-width: 1200px) { - .modal.container { - width: 1170px; - margin-left: -585px; - } -} - -@media (max-width: 979px) { - .modal, - .modal.container, - .modal.modal-overflow { - top: 1%; - right: 1%; - left: 1%; - bottom: auto; - width: auto !important; - height: auto !important; - margin: 0 !important; - padding: 0 !important; - } - - .modal.fade.in, - .modal.container.fade.in, - .modal.modal-overflow.fade.in { - top: 1%; - bottom: auto; - } - - .modal-body, - .modal-overflow .modal-body { - position: static; - margin: 0; - height: auto !important; - max-height: none !important; - overflow: visible !important; - } - - .modal-footer, - .modal-overflow .modal-footer { - position: static; - } -} - -.loading-spinner { - position: absolute; - top: 50%; - left: 50%; - margin: -12px 0 0 -12px; -} - -/* -Animate.css - http://daneden.me/animate -Licensed under the ☺ license (http://licence.visualidiot.com/) - -Copyright (c) 2012 Dan Eden*/ - -.animated { - -webkit-animation-duration: 1s; - -moz-animation-duration: 1s; - -o-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-fill-mode: both; - -moz-animation-fill-mode: both; - -o-animation-fill-mode: both; - animation-fill-mode: both; -} - -@-webkit-keyframes shake { - 0%, 100% {-webkit-transform: translateX(0);} - 10%, 30%, 50%, 70%, 90% {-webkit-transform: translateX(-10px);} - 20%, 40%, 60%, 80% {-webkit-transform: translateX(10px);} -} - -@-moz-keyframes shake { - 0%, 100% {-moz-transform: translateX(0);} - 10%, 30%, 50%, 70%, 90% {-moz-transform: translateX(-10px);} - 20%, 40%, 60%, 80% {-moz-transform: translateX(10px);} -} - -@-o-keyframes shake { - 0%, 100% {-o-transform: translateX(0);} - 10%, 30%, 50%, 70%, 90% {-o-transform: translateX(-10px);} - 20%, 40%, 60%, 80% {-o-transform: translateX(10px);} -} - -@keyframes shake { - 0%, 100% {transform: translateX(0);} - 10%, 30%, 50%, 70%, 90% {transform: translateX(-10px);} - 20%, 40%, 60%, 80% {transform: translateX(10px);} -} - -.shake { - -webkit-animation-name: shake; - -moz-animation-name: shake; - -o-animation-name: shake; - animation-name: shake; -} diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/img/ajax-loader.gif b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/img/ajax-loader.gif deleted file mode 100644 index 4e651edc478b3db7ad5758bdb912e890e884aaf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1737 zcmaLXeN0pL8o=>mVSNFFR?eYHw^G0X@>)6Uoc8qfwB-~EmKV=JuoeomNbTCui!i-L z=kN3!r(^bLoJMDK8l%x|IKbKHm<(nhIwM!-)#&x=G)AK_8jR7aG1oiqb^nq3{Q1k1 zUp~nzkUI+-`SAN5_T@8zv_wD=RBEZ{Ga)@#E>~>GS8$@7uR891gEtyY}qavsbTP z^>{osn{EI8{U=YJT(f4)_U+s6-MhDE&mN=E$Z_1!qeml=$m!Fk{eC||5Tm1`M~)n! zC<@2%hYuek@#4kHmoGnf@L*zMV#kghhYlSY931TH>pOVxU@#aA1OiT{GZu@POeVcvKQc0c zVc5XHKwVv(#bRk`X^BRojg5_3t+v0vzq-1*x3_oW#*I67?u7oF%-4y|a(c0qtSv7s zR>#fy<301=>DI8<)8p+>^>y_uS9$!NPXZxNM{!rs7lJZh#7h$X*eZPU!<&eZ=!;Jw zz(iP9k-eaZW5w^z&o2fTfwKvT@4a780&ukfV+6uEN)ChJ?ND4|YCmK!89;oJY!Ee@ zz&o?yK}c5)gvrPtP8xwIC2bJ4=zv%#A2eERKq8%+!RZRpC`L9aDHH#}` zFzs;XyCU}Z+OODBHbI!p1DvU-svCv~48&I(PEr)eU37XFMu6N&4ijy^LX}eSFl`=# zO!E44u0&w_31~~pDkTI_Qr@cgjUjUy3Y#+=Ru9e7+DiYo(yb6Tz(9goGXXcg1xgZ9 zyM*pS0S8${Rl=0y*-8EYt8sTOuR{=P{fZY{Kaku17HRcbV;I4}8NN}LFibJ_4>Cv^$JKBNg0W_6p4CF?%q7=3 zN}>q=OEu?c^AF~kbkVmuQ=U@l%naB$NGliR&g)$2cRE-yyCR^V43=dnHF}25Db;Yk zmTDc)HstY8MN%Aa6iQ;U6^$U^BVzEJ4?!p}$yMl+jO9Q~Dp<@>RO5m~JF(jpGgq-A& zWZ|$t9kcej0U{aYSBB#N)@J%Ut87{zU{D%HnS$KEBqp#Jr6xdeutyvVYEbp~01W+&U*-=m_&?a36sMhwFQDo6g^Oz(TyI~{Rn!!o ztLMq=uEeDC+pbQ3^ZVB`CjRVgV%%WT8Fg7|4kBoqL_k_Jby+NilprXCBf7jwb3|<* zID3Wz0XX_CU*{u-Fdo2*^o~W)G9?fe|I7;(=77?C_eiry1{BFIIj487`3f|z zDEg!wM$#HqyEUx1W>vU1ImQ21>y&q1iZEGK(Ryx)YNocI{}0FE1ce|J#xWR5!EH91 zfz9CvxLgM_') - .append(this.options.spinner) - .appendTo(this.$element); - - if (doAnimate) this.$loading[0].offsetWidth; // force reflow - - this.$loading.addClass('in'); - - this.isLoading = true; - - doAnimate ? - this.$loading.one($.support.transition.end, callback) : - callback(); - - } else if (this.isLoading && this.$loading) { - this.$loading.removeClass('in'); - - var that = this; - $.support.transition && this.$element.hasClass('fade')? - this.$loading.one($.support.transition.end, function () { that.removeLoading() }) : - that.removeLoading(); - - } else if (callback) { - callback(this.isLoading); - } - }, - - focus: function () { - var $focusElem = this.$element.find(this.options.focusOn); - - $focusElem = $focusElem.length ? $focusElem : this.$element; - - $focusElem.focus(); - }, - - attention: function (){ - // NOTE: transitionEnd with keyframes causes odd behaviour - - if (this.options.attentionAnimation){ - this.$element - .removeClass('animated') - .removeClass(this.options.attentionAnimation); - - var that = this; - - setTimeout(function () { - that.$element - .addClass('animated') - .addClass(that.options.attentionAnimation); - }, 0); - } - - - this.focus(); - }, - - - destroy: function () { - var e = $.Event('destroy'); - - this.$element.trigger(e); - - if (e.isDefaultPrevented()) return; - - this.$element - .off('.modal') - .removeData('modal') - .removeClass('in') - .attr('aria-hidden', true); - - if (this.$parent !== this.$element.parent()) { - this.$element.appendTo(this.$parent); - } else if (!this.$parent.length) { - // modal is not part of the DOM so remove it. - this.$element.remove(); - this.$element = null; - } - - this.$element.trigger('destroyed'); - } - }; - - - /* MODAL PLUGIN DEFINITION - * ======================= */ - - $.fn.modal = function (option, args) { - return this.each(function () { - var $this = $(this), - data = $this.data('modal'), - options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option); - - if (!data) $this.data('modal', (data = new Modal(this, options))); - if (typeof option == 'string') data[option].apply(data, [].concat(args)); - else if (options.show) data.show() - }) - }; - - $.fn.modal.defaults = { - keyboard: true, - backdrop: true, - loading: false, - show: true, - width: null, - height: null, - maxHeight: null, - modalOverflow: false, - consumeTab: true, - focusOn: null, - replace: false, - resize: false, - attentionAnimation: 'shake', - manager: 'body', - spinner: '
    ', - backdropTemplate: '