From 355dfbefe6f9f64d395368e4d262f67688f7d011 Mon Sep 17 00:00:00 2001 From: "Elvis.Shi" Date: Sun, 3 Apr 2022 09:49:11 +0800 Subject: [PATCH] V 2.1.3 Former-commit-id: 710132ebaf418af1ef540e2cda73537b6a38a032 [formerly 815cbd4f0709b5d061392b4ab0caab90a7e25e97] [formerly 93affb91a67ea41c7cc39ee6eafa091629549b58 [formerly a489e2a50e18173a7c2862140f0f0093dcf381c5]] [formerly eb7c696e46d0de6cd07607f1270536f350d99501 [formerly a395cdf8535e8ee8e7d133ac4e1d34c5568a47de] [formerly 1f2edad23658f9919b457ea62610956e7764dbc0 [formerly 4b612ae899e10849e74d87bb65d4354001fe60b4]]] [formerly f0f9d2bc4eb1b1c23df4fd48c51f60cbe6646c84 [formerly 43a998c7e2cc1a6c293cc297d1eb7819dca16934]] [formerly 9bb0f2224b4bc7eb0c31f98e71d34dbaeddc02ca [formerly d1415112ccb6daebee059aa5a83887feb594eca9] [formerly 9bb0f2224b4bc7eb0c31f98e71d34dbaeddc02ca [formerly d1415112ccb6daebee059aa5a83887feb594eca9] [formerly 9d2ff6e436769c52c51fe92373a2837cce7639de [formerly c6ba81a118e6ec0d884196e4404a9ffc15922e21]]] [formerly f0f9d2bc4eb1b1c23df4fd48c51f60cbe6646c84 [formerly 43a998c7e2cc1a6c293cc297d1eb7819dca16934] [formerly f0f9d2bc4eb1b1c23df4fd48c51f60cbe6646c84 [formerly 43a998c7e2cc1a6c293cc297d1eb7819dca16934] [formerly 882094cc7f2e1482667e8a162c97d2418052914f [formerly a2484f1e7d214480fc545f6eb375296b80003bf1]]]]] [formerly 0aacfa5ec62c00b7879353d274af2477f2d1057c [formerly ef38218f0ccb7394e14e713e7216214cf1276c3f] [formerly 0aacfa5ec62c00b7879353d274af2477f2d1057c [formerly ef38218f0ccb7394e14e713e7216214cf1276c3f] [formerly 6eaa3a6c3b6405c4ecf33f2298ebe9ad942a588f [formerly 5b54b721c3c117c4fe69297d30daba41fb9e5295]]] [formerly 14de90134656d66ac6ffdb92e106500657feedd9 [formerly ef58d026e05235fb22e5057a7f7c6ec47a52f4b6]] [formerly 4d66cfe753f254ca67419d7bdb57c171a5cea3f5 [formerly 115b821539b9069a867afc973cca7171533c2914] [formerly 4d66cfe753f254ca67419d7bdb57c171a5cea3f5 [formerly 115b821539b9069a867afc973cca7171533c2914] [formerly 49504cb2a4cfdfa6f06be81a34a7bbbadc822291 [formerly 09e0c730aed4f4549c097f1de85e6fef9c45a9a1]]] [formerly 14de90134656d66ac6ffdb92e106500657feedd9 [formerly ef58d026e05235fb22e5057a7f7c6ec47a52f4b6] [formerly 14de90134656d66ac6ffdb92e106500657feedd9 [formerly ef58d026e05235fb22e5057a7f7c6ec47a52f4b6] [formerly e37c42034316ec2587580987e1c0533630839d4c [formerly 7447825f516a6d00d531cd5a2715ba45a50b0a9b [formerly f30653e98acb7e741c669cdb234d90d9aac5f2cf] [formerly 3f491793fc7811a3a587bb9e0bf47ed0d3071cf2 [formerly f3c5597e2368ee488e490c9e4fc808ddccf6cca3]] [formerly 81cadd6db031084e9644d0f8a843a683237d3263 [formerly d9eb4719e24b30f734cc473039211bff269db0cb] [formerly 44ee6df8132dc0f55567d8a15346d9e69d0861fa]] [formerly 44ee6df8132dc0f55567d8a15346d9e69d0861fa [formerly 81d098dc80297196e75aa7a1b50e1a438af282a5]] [formerly c8f3cdf03f472b9bc8669173060b33c02c5d8978 [formerly 44ee6df8132dc0f55567d8a15346d9e69d0861fa [formerly 81d098dc80297196e75aa7a1b50e1a438af282a5] [formerly c8f3cdf03f472b9bc8669173060b33c02c5d8978 [formerly 11aa70bc956f1713927a815ef063e34ce51eba2f [formerly fa7d83e17f92e4dfc5f473a3aa087fd3b27b7ab9] [formerly c8f3cdf03f472b9bc8669173060b33c02c5d8978 [formerly b5e22373b2e30ec392aec54e18c66a63918eb3af]]]]]]]]]]]] Former-commit-id: 195193d1f4397e6b5ff7f62d011fe8a966878f2e [formerly 05356a5c180ad26aded4d3dc35f952e499162c3e] [formerly 53616636866618ab1613ea39dc3e6b1a91e419b2 [formerly ee71d5853fd2cb8a797ba0285b3fcf782a894571]] [formerly 2269a482910ff8166f43517b21c0a4dfc244a892 [formerly 68d81bdf94fea8ac841cbf5d3f5c212499338165] [formerly d915de7428cbaefbf77c8a0bc18d5192d906295c [formerly fff98ea75fc9b92af4b29989be988f24263ccf6d]]] [formerly 8046eb3ff01df83b76a739d0e0acbb4a2969490f [formerly ec6eee9a8f8230c3170b9a601377edb199f41a3a]] [formerly 4f09faec44bee906c26e0a0149f5c01f137e7342 [formerly 44040e2e836d45b525d2c95902024f1cf83dff01] [formerly 4f09faec44bee906c26e0a0149f5c01f137e7342 [formerly 44040e2e836d45b525d2c95902024f1cf83dff01] [formerly 389a0275bcf031cdfe4d228c9081da06c41443ad [formerly f9659235d6f31d603d63622b06fb96932d9aaa1b]]] [formerly 8046eb3ff01df83b76a739d0e0acbb4a2969490f [formerly ec6eee9a8f8230c3170b9a601377edb199f41a3a] [formerly 8046eb3ff01df83b76a739d0e0acbb4a2969490f [formerly ec6eee9a8f8230c3170b9a601377edb199f41a3a] [formerly 3cc35de39c466500c6412ce81bad2b5dd9c874ab [formerly 6eb491686be74f7e0bdc97866be772259ca31b5c]]]]] Former-commit-id: 0299acfe8ebebf061aeb88f8dd8c5fb6dbc3fbd6 [formerly 02193e0e2092fa0cca39c92a4c65a4c4a2436d9f] [formerly 0299acfe8ebebf061aeb88f8dd8c5fb6dbc3fbd6 [formerly 02193e0e2092fa0cca39c92a4c65a4c4a2436d9f] [formerly 9fc8a024de977c7650912150582e0ec12c181b17 [formerly a30f4efc5ae5951cc2ad91106b2f62d5add47c61]]] [formerly 9a351e27a8954996584c86d69b170e1fd0629c7e [formerly 409b8b0a168c7e891f12e1677ced43866f334924] [formerly 7467168a44b436c3a3fea6d7b93d0adc8a6ce49c [formerly 0f6f03018b29257f048557a20bba63fe97ad0f65]] [formerly 7467168a44b436c3a3fea6d7b93d0adc8a6ce49c [formerly 0f6f03018b29257f048557a20bba63fe97ad0f65] [formerly 29d3047970f8c94bc6df6e9623aff8e7b67db092 [formerly 21cf72db4456f82fc322db1b201add1634f89cda]]]] Former-commit-id: 9a351e27a8954996584c86d69b170e1fd0629c7e [formerly 409b8b0a168c7e891f12e1677ced43866f334924] [formerly 9a351e27a8954996584c86d69b170e1fd0629c7e [formerly 409b8b0a168c7e891f12e1677ced43866f334924] [formerly 7467168a44b436c3a3fea6d7b93d0adc8a6ce49c [formerly 0f6f03018b29257f048557a20bba63fe97ad0f65]]] Former-commit-id: 103391802bc7fd77e58325a67a0d57d3ef040c07 [formerly b79267c743d1cbc2ff9bb668e19f9ccf486d1a91] [formerly 582f764db5fa461236e9b7586d8aefd7674c7fcf [formerly 07c55548bb1cd250093f3d86c6624f59e6b5c145]] Former-commit-id: 0861effa93535c25ef6fd11c18152d23926b1f2a [formerly adada0022bce98c7672dcfbe45f64e77930d6f18] Former-commit-id: 757fe374464916e059512d687702e8758a619871 Former-commit-id: ef125af06a88fa46995e1d7117b10b36673a4597 [formerly d374629df51c3fb9f17055db47c126d901474e46] Former-commit-id: 8b3b07f7c7fcb90cc377cc4420cf77dd074911cf Former-commit-id: 2bf47b8be04d184ba49eadec27a8ab3b726b0f45 [formerly 9cb477b490fc0cd80bc5d33c2ef16a69a301212e] [formerly 7e6e1613e16b642ed06b14154ffe12865b75d7ef [formerly 64469b896f1961e255615c08905fa4b389e90570]] [formerly 541cb693f9cb21240e1a04407a3597ba5bc1ffe6] [formerly c26ebab1fe2f58fd3627a97d026875957349eb24 [formerly bf85a742c75aba86b8571ecb3f14712406b21270 [formerly 0a37f8c2c23041a8fb5b635ed6e2c7003e711741] [formerly ec033efbef86026d93383b797f3ceeb42e0ec924 [formerly 9ca528bd6bf7aaf2271df25eb2d9274395c22c44]]]] Former-commit-id: b85fdda276646f7cfc602ef08c44b0ab7f32db12 [formerly fe52d269b63215da57c6f9729cd48a9a8b922127 [formerly e67dd0308b172480e347aa908f35caeb3dad604d] [formerly b3ad684c1097da55a194c521cda9975278ac7d4b [formerly 57a4ea7ba88c5a8b1d4eebf88277fde9d5310bc1]]] Former-commit-id: 3625614f3bc56556781e425bfe885d81756c38cd Former-commit-id: 9f07ab8c5b13e6c114b8b3feaf4e502c62cab35f [formerly 6d30bced7f6a1e7de68e364d51dd829fe912ac73] Former-commit-id: d144c1f2d0f7f2048e28040554771db0079f3ead --- .gitattributes | 1 + .gitignore | 8 + Android-APP Build.md | 40 + Centos Build(CN).md | 71 + Centos Build(EN).md | 45 + ...nvironment on Windows .pdf.REMOVED.git-id | 1 + ...端和APP客户端都可以通用).xmind.REMOVED.git-id | 1 + LICENSE | 202 ++ Package and sign apk.pdf.REMOVED.git-id | 1 + README.md | 337 +++ README_zh_Hans.md | 395 ++++ ...n version of GreaterWMS.pdf.REMOVED.git-id | 1 + Ubuntu Build(CN).md | 65 + Ubuntu Build(EN).md | 59 + Wechat.png.REMOVED.git-id | 1 + Windows10 Build(CN).md | 105 + Zebra-Profile.pdf.REMOVED.git-id | 1 + ...(上海四号位信息科技有限公司20220305).pdf.REMOVED.git-id | 1 + asn/__init__.py | 0 asn/admin.py | 5 + asn/apps.py | 5 + asn/files.py | 116 + asn/filter.py | 43 + asn/migrations/__init__.py | 0 asn/models.py | 55 + asn/page.py | 63 + asn/serializers.py | 156 ++ asn/tests.py | 0 asn/urls.py | 35 + asn/views.py | 1188 ++++++++++ binproperty/__init__.py | 0 binproperty/admin.py | 4 + binproperty/apps.py | 38 + binproperty/filter.py | 14 + binproperty/migrations/__init__.py | 0 binproperty/models.py | 18 + binproperty/serializers.py | 14 + binproperty/tests.py | 0 binproperty/urls.py | 6 + binproperty/views.py | 29 + binset/__init__.py | 0 binset/admin.py | 4 + binset/apps.py | 4 + binset/files.py | 42 + binset/filter.py | 17 + binset/migrations/__init__.py | 0 binset/models.py | 22 + binset/page.py | 70 + binset/serializers.py | 79 + binset/tests.py | 0 binset/urls.py | 14 + binset/views.py | 236 ++ binsize/__init__.py | 0 binsize/admin.py | 4 + binsize/apps.py | 4 + binsize/files.py | 42 + binsize/filter.py | 17 + binsize/migrations/__init__.py | 0 binsize/models.py | 21 + binsize/serializers.py | 64 + binsize/tests.py | 0 binsize/urls.py | 13 + binsize/views.py | 168 ++ capital/__init__.py | 0 capital/admin.py | 4 + capital/apps.py | 4 + capital/files.py | 38 + capital/filter.py | 16 + capital/migrations/__init__.py | 0 capital/models.py | 20 + capital/serializers.py | 59 + capital/tests.py | 0 capital/urls.py | 13 + capital/views.py | 165 ++ chat/__init__.py | 0 chat/admin.py | 4 + chat/apps.py | 5 + chat/filter.py | 14 + chat/migrations/__init__.py | 0 chat/models.py | 19 + chat/serializers.py | 14 + chat/tests.py | 0 chat/urls.py | 7 + chat/views.py | 57 + company/__init__.py | 0 company/admin.py | 4 + company/apps.py | 4 + company/filter.py | 18 + company/migrations/__init__.py | 0 company/models.py | 22 + company/serializers.py | 54 + company/tests.py | 0 company/urls.py | 12 + company/views.py | 114 + customer/__init__.py | 0 customer/admin.py | 4 + customer/apps.py | 4 + customer/files.py | 49 + customer/filter.py | 20 + customer/migrations/__init__.py | 0 customer/models.py | 23 + customer/serializers.py | 74 + customer/tests.py | 0 customer/urls.py | 13 + customer/views.py | 168 ++ cyclecount/__init__.py | 0 cyclecount/admin.py | 4 + cyclecount/apps.py | 4 + cyclecount/files.py | 49 + cyclecount/filter.py | 24 + cyclecount/migrations/__init__.py | 0 cyclecount/models.py | 42 + cyclecount/page.py | 9 + cyclecount/serializers.py | 63 + cyclecount/tests.py | 0 cyclecount/urls.py | 11 + cyclecount/views.py | 291 +++ dashboard/__init__.py | 0 dashboard/admin.py | 3 + dashboard/apps.py | 5 + dashboard/migrations/__init__.py | 0 dashboard/models.py | 3 + dashboard/tests.py | 3 + dashboard/urls.py | 7 + dashboard/views.py | 202 ++ dn/__init__.py | 0 dn/admin.py | 5 + dn/apps.py | 4 + dn/files.py | 120 + dn/filter.py | 60 + dn/migrations/__init__.py | 0 dn/models.py | 79 + dn/page.py | 62 + dn/serializers.py | 199 ++ dn/tests.py | 0 dn/urls.py | 44 + dn/views.py.REMOVED.git-id | 1 + driver/__init__.py | 0 driver/admin.py | 4 + driver/apps.py | 4 + driver/files.py | 38 + driver/filter.py | 29 + driver/migrations/__init__.py | 0 driver/models.py | 38 + driver/serializers.py | 71 + driver/tests.py | 0 driver/urls.py | 17 + driver/views.py | 204 ++ goods/__init__.py | 0 goods/admin.py | 4 + goods/apps.py | 4 + goods/files.py | 81 + goods/filter.py | 31 + goods/migrations/__init__.py | 0 goods/models.py | 36 + goods/page.py | 67 + goods/serializers.py | 147 ++ goods/tests.py | 0 goods/urls.py | 14 + goods/views.py | 361 +++ goodsbrand/__init__.py | 0 goodsbrand/admin.py | 4 + goodsbrand/apps.py | 4 + goodsbrand/filter.py | 14 + goodsbrand/migrations/__init__.py | 0 goodsbrand/models.py | 18 + goodsbrand/serializers.py | 38 + goodsbrand/tests.py | 0 goodsbrand/urls.py | 12 + goodsbrand/views.py | 110 + goodsclass/__init__.py | 0 goodsclass/admin.py | 4 + goodsclass/apps.py | 5 + goodsclass/filter.py | 14 + goodsclass/migrations/__init__.py | 0 goodsclass/models.py | 18 + goodsclass/serializers.py | 38 + goodsclass/tests.py | 0 goodsclass/urls.py | 12 + goodsclass/views.py | 110 + goodscolor/__init__.py | 0 goodscolor/admin.py | 4 + goodscolor/apps.py | 4 + goodscolor/filter.py | 14 + goodscolor/migrations/__init__.py | 0 goodscolor/models.py | 18 + goodscolor/serializers.py | 40 + goodscolor/tests.py | 0 goodscolor/urls.py | 12 + goodscolor/views.py | 110 + goodsorigin/__init__.py | 0 goodsorigin/admin.py | 4 + goodsorigin/apps.py | 4 + goodsorigin/filter.py | 14 + goodsorigin/migrations/__init__.py | 0 goodsorigin/models.py | 18 + goodsorigin/serializers.py | 41 + goodsorigin/tests.py | 0 goodsorigin/urls.py | 12 + goodsorigin/views.py | 112 + goodsshape/__init__.py | 0 goodsshape/admin.py | 4 + goodsshape/apps.py | 4 + goodsshape/filter.py | 14 + goodsshape/migrations/__init__.py | 0 goodsshape/models.py | 18 + goodsshape/serializers.py | 38 + goodsshape/tests.py | 0 goodsshape/urls.py | 12 + goodsshape/views.py | 110 + goodsspecs/__init__.py | 0 goodsspecs/admin.py | 4 + goodsspecs/apps.py | 4 + goodsspecs/filter.py | 14 + goodsspecs/migrations/__init__.py | 0 goodsspecs/models.py | 18 + goodsspecs/serializers.py | 38 + goodsspecs/tests.py | 0 goodsspecs/urls.py | 12 + goodsspecs/views.py | 110 + goodsunit/__init__.py | 0 goodsunit/admin.py | 4 + goodsunit/apps.py | 4 + goodsunit/filter.py | 14 + goodsunit/migrations/__init__.py | 0 goodsunit/models.py | 18 + goodsunit/serializers.py | 38 + goodsunit/tests.py | 0 goodsunit/urls.py | 12 + goodsunit/views.py | 110 + greaterwms/__init__.py | 75 + greaterwms/asgi.py | 25 + greaterwms/settings.py | 262 +++ greaterwms/urls.py | 82 + greaterwms/views.py | 88 + greaterwms/wsgi.py | 16 + manage.py | 22 + media/__init__.py | 0 media/error.wav | Bin 0 -> 57208 bytes media/scanned.mp3 | Bin 0 -> 15609 bytes nginx.conf | 97 + operater document.pdf.REMOVED.git-id | 1 + payment/__init__.py | 0 payment/admin.py | 4 + payment/apps.py | 35 + payment/files.py | 48 + payment/filter.py | 19 + payment/migrations/__init__.py | 0 payment/models.py | 23 + payment/serializers.py | 68 + payment/tests.py | 0 payment/urls.py | 13 + payment/views.py | 164 ++ requirements.txt | 59 + scanner/__init__.py | 0 scanner/admin.py | 4 + scanner/apps.py | 4 + scanner/filter.py | 12 + scanner/migrations/__init__.py | 0 scanner/models.py | 18 + scanner/serializers.py | 51 + scanner/tests.py | 0 scanner/urls.py | 8 + scanner/views.py | 125 + shopid/__init__.py | 0 shopid/admin.py | 4 + shopid/apps.py | 5 + shopid/files/douyinfiles.py | 33 + shopid/filter/__init__.py | 0 shopid/filter/douyinfilter.py | 20 + shopid/migrations/__init__.py | 0 shopid/models/__init__.py | 0 shopid/models/douyinmodels.py | 25 + shopid/serializers/__init__.py | 0 shopid/serializers/douyinserializers.py | 36 + shopid/tests.py | 3 + shopid/urls.py | 14 + shopid/views/__init__.py | 0 shopid/views/doudian/__init__.py | 0 shopid/views/doudian/doudian.py | 144 ++ shopid/views/doudian/proxy.py | 46 + shopid/views/doudian/sandbox.py | 41 + staff/__init__.py | 0 staff/admin.py | 4 + staff/apps.py | 43 + staff/files.py | 33 + staff/filter.py | 24 + staff/migrations/__init__.py | 0 staff/models.py | 36 + staff/serializers.py | 61 + staff/tests.py | 0 staff/urls.py | 14 + staff/views.py | 229 ++ static/__init__.py | 0 static/img/contact.png | Bin 0 -> 7043 bytes static/img/dongtai.png | Bin 0 -> 4694 bytes static/img/dongtai1.png | Bin 0 -> 11517 bytes static/img/github.png | Bin 0 -> 7195 bytes static/img/logo.png | Bin 0 -> 9411 bytes static/img/logout.png | Bin 0 -> 3153 bytes static/img/money.png | Bin 0 -> 13988 bytes static/img/photo.png | Bin 0 -> 6440 bytes static/img/profile.png | Bin 0 -> 11026 bytes static/img/register.png | Bin 0 -> 6108 bytes static/img/user.jpg | Bin 0 -> 29379 bytes static/img/user.png | Bin 0 -> 5197 bytes static/img/video.png | Bin 0 -> 4493 bytes static_new/__init__.py | 0 static_new/admin/css/autocomplete.css | 260 +++ static_new/admin/css/base.css | 966 ++++++++ static_new/admin/css/changelists.css | 355 +++ static_new/admin/css/dashboard.css | 26 + static_new/admin/css/fonts.css | 20 + static_new/admin/css/forms.css | 527 +++++ static_new/admin/css/login.css | 79 + static_new/admin/css/nav_sidebar.css | 119 + static_new/admin/css/responsive.css | 1004 ++++++++ static_new/admin/css/responsive_rtl.css | 80 + static_new/admin/css/rtl.css | 249 ++ .../css/vendor/select2/LICENSE-SELECT2.md | 21 + .../admin/css/vendor/select2/select2.css | 481 ++++ .../admin/css/vendor/select2/select2.min.css | 1 + static_new/admin/css/widgets.css | 574 +++++ static_new/admin/fonts/LICENSE.txt | 202 ++ static_new/admin/fonts/README.txt | 3 + .../admin/fonts/Roboto-Bold-webfont.woff | Bin 0 -> 86184 bytes .../admin/fonts/Roboto-Light-webfont.woff | Bin 0 -> 85692 bytes .../admin/fonts/Roboto-Regular-webfont.woff | Bin 0 -> 85876 bytes static_new/admin/img/LICENSE | 20 + static_new/admin/img/README.txt | 7 + static_new/admin/img/calendar-icons.svg | 14 + static_new/admin/img/gis/move_vertex_off.svg | 1 + static_new/admin/img/gis/move_vertex_on.svg | 1 + static_new/admin/img/icon-addlink.svg | 3 + static_new/admin/img/icon-alert.svg | 3 + static_new/admin/img/icon-calendar.svg | 9 + static_new/admin/img/icon-changelink.svg | 3 + static_new/admin/img/icon-clock.svg | 9 + static_new/admin/img/icon-deletelink.svg | 3 + static_new/admin/img/icon-no.svg | 3 + static_new/admin/img/icon-unknown-alt.svg | 3 + static_new/admin/img/icon-unknown.svg | 3 + static_new/admin/img/icon-viewlink.svg | 3 + static_new/admin/img/icon-yes.svg | 3 + static_new/admin/img/inline-delete.svg | 3 + static_new/admin/img/search.svg | 3 + static_new/admin/img/selector-icons.svg | 34 + static_new/admin/img/sorting-icons.svg | 19 + static_new/admin/img/tooltag-add.svg | 3 + static_new/admin/img/tooltag-arrowright.svg | 3 + static_new/admin/js/SelectBox.js | 110 + static_new/admin/js/SelectFilter2.js | 236 ++ static_new/admin/js/actions.js | 154 ++ static_new/admin/js/actions.min.js | 7 + .../admin/js/admin/DateTimeShortcuts.js | 417 ++++ .../admin/js/admin/RelatedObjectLookups.js | 159 ++ static_new/admin/js/autocomplete.js | 38 + static_new/admin/js/calendar.js | 207 ++ static_new/admin/js/cancel.js | 28 + static_new/admin/js/change_form.js | 16 + static_new/admin/js/collapse.js | 43 + static_new/admin/js/collapse.min.js | 2 + static_new/admin/js/core.js | 163 ++ static_new/admin/js/inlines.js | 348 +++ static_new/admin/js/inlines.min.js | 11 + static_new/admin/js/jquery.init.js | 8 + static_new/admin/js/nav_sidebar.js | 39 + static_new/admin/js/popup_response.js | 16 + static_new/admin/js/prepopulate.js | 43 + static_new/admin/js/prepopulate.min.js | 1 + static_new/admin/js/prepopulate_init.js | 11 + static_new/admin/js/urlify.js | 185 ++ static_new/admin/js/vendor/jquery/LICENSE.txt | 20 + .../js/vendor/jquery/jquery.js.REMOVED.git-id | 1 + .../admin/js/vendor/jquery/jquery.min.js | 2 + static_new/admin/js/vendor/select2/LICENSE.md | 21 + static_new/admin/js/vendor/select2/i18n/af.js | 3 + static_new/admin/js/vendor/select2/i18n/ar.js | 3 + static_new/admin/js/vendor/select2/i18n/az.js | 3 + static_new/admin/js/vendor/select2/i18n/bg.js | 3 + static_new/admin/js/vendor/select2/i18n/bn.js | 3 + static_new/admin/js/vendor/select2/i18n/bs.js | 3 + static_new/admin/js/vendor/select2/i18n/ca.js | 3 + static_new/admin/js/vendor/select2/i18n/cs.js | 3 + static_new/admin/js/vendor/select2/i18n/da.js | 3 + static_new/admin/js/vendor/select2/i18n/de.js | 3 + .../admin/js/vendor/select2/i18n/dsb.js | 3 + static_new/admin/js/vendor/select2/i18n/el.js | 3 + static_new/admin/js/vendor/select2/i18n/en.js | 3 + static_new/admin/js/vendor/select2/i18n/es.js | 3 + static_new/admin/js/vendor/select2/i18n/et.js | 3 + static_new/admin/js/vendor/select2/i18n/eu.js | 3 + static_new/admin/js/vendor/select2/i18n/fa.js | 3 + static_new/admin/js/vendor/select2/i18n/fi.js | 3 + static_new/admin/js/vendor/select2/i18n/fr.js | 3 + static_new/admin/js/vendor/select2/i18n/gl.js | 3 + static_new/admin/js/vendor/select2/i18n/he.js | 3 + static_new/admin/js/vendor/select2/i18n/hi.js | 3 + static_new/admin/js/vendor/select2/i18n/hr.js | 3 + .../admin/js/vendor/select2/i18n/hsb.js | 3 + static_new/admin/js/vendor/select2/i18n/hu.js | 3 + static_new/admin/js/vendor/select2/i18n/hy.js | 3 + static_new/admin/js/vendor/select2/i18n/id.js | 3 + static_new/admin/js/vendor/select2/i18n/is.js | 3 + static_new/admin/js/vendor/select2/i18n/it.js | 3 + static_new/admin/js/vendor/select2/i18n/ja.js | 3 + static_new/admin/js/vendor/select2/i18n/ka.js | 3 + static_new/admin/js/vendor/select2/i18n/km.js | 3 + static_new/admin/js/vendor/select2/i18n/ko.js | 3 + static_new/admin/js/vendor/select2/i18n/lt.js | 3 + static_new/admin/js/vendor/select2/i18n/lv.js | 3 + static_new/admin/js/vendor/select2/i18n/mk.js | 3 + static_new/admin/js/vendor/select2/i18n/ms.js | 3 + static_new/admin/js/vendor/select2/i18n/nb.js | 3 + static_new/admin/js/vendor/select2/i18n/ne.js | 3 + static_new/admin/js/vendor/select2/i18n/nl.js | 3 + static_new/admin/js/vendor/select2/i18n/pl.js | 3 + static_new/admin/js/vendor/select2/i18n/ps.js | 3 + .../admin/js/vendor/select2/i18n/pt-BR.js | 3 + static_new/admin/js/vendor/select2/i18n/pt.js | 3 + static_new/admin/js/vendor/select2/i18n/ro.js | 3 + static_new/admin/js/vendor/select2/i18n/ru.js | 3 + static_new/admin/js/vendor/select2/i18n/sk.js | 3 + static_new/admin/js/vendor/select2/i18n/sl.js | 3 + static_new/admin/js/vendor/select2/i18n/sq.js | 3 + .../admin/js/vendor/select2/i18n/sr-Cyrl.js | 3 + static_new/admin/js/vendor/select2/i18n/sr.js | 3 + static_new/admin/js/vendor/select2/i18n/sv.js | 3 + static_new/admin/js/vendor/select2/i18n/th.js | 3 + static_new/admin/js/vendor/select2/i18n/tk.js | 3 + static_new/admin/js/vendor/select2/i18n/tr.js | 3 + static_new/admin/js/vendor/select2/i18n/uk.js | 3 + static_new/admin/js/vendor/select2/i18n/vi.js | 3 + .../admin/js/vendor/select2/i18n/zh-CN.js | 3 + .../admin/js/vendor/select2/i18n/zh-TW.js | 3 + .../select2/select2.full.js.REMOVED.git-id | 1 + .../js/vendor/select2/select2.full.min.js | 2 + .../admin/js/vendor/xregexp/LICENSE.txt | 21 + .../vendor/xregexp/xregexp.js.REMOVED.git-id | 1 + .../xregexp/xregexp.min.js.REMOVED.git-id | 1 + static_new/drf-yasg/immutable.min.js | 34 + static_new/drf-yasg/insQ.min.js | 4 + static_new/drf-yasg/redoc-init.js | 67 + .../redoc-old/redoc.min.js.REMOVED.git-id | 1 + static_new/drf-yasg/redoc/redoc-logo.png | Bin 0 -> 4969 bytes .../redoc/redoc.min.js.REMOVED.git-id | 1 + static_new/drf-yasg/style.css | 73 + .../drf-yasg/swagger-ui-dist/absolute-path.js | 14 + .../swagger-ui-dist/favicon-32x32.png | Bin 0 -> 628 bytes static_new/drf-yasg/swagger-ui-dist/index.js | 17 + .../swagger-ui-dist/oauth2-redirect.html | 74 + .../swagger-ui-bundle.js.REMOVED.git-id | 1 + ...wagger-ui-es-bundle-core.js.REMOVED.git-id | 1 + .../swagger-ui-es-bundle.js.REMOVED.git-id | 1 + ...ger-ui-standalone-preset.js.REMOVED.git-id | 1 + .../swagger-ui.css.REMOVED.git-id | 1 + static_new/drf-yasg/swagger-ui-init.js | 385 ++++ static_new/drf-yasg/url-polyfill.min.js | 1 + static_new/img/contact.png | Bin 0 -> 7043 bytes static_new/img/dongtai.png | Bin 0 -> 4694 bytes static_new/img/dongtai1.png | Bin 0 -> 11517 bytes static_new/img/github.png | Bin 0 -> 7195 bytes static_new/img/logo.png | Bin 0 -> 9411 bytes static_new/img/logout.png | Bin 0 -> 3153 bytes static_new/img/money.png | Bin 0 -> 13988 bytes static_new/img/photo.png | Bin 0 -> 6440 bytes static_new/img/profile.png | Bin 0 -> 11026 bytes static_new/img/register.png | Bin 0 -> 6108 bytes static_new/img/user.jpg | Bin 0 -> 29379 bytes static_new/img/user.png | Bin 0 -> 5197 bytes static_new/img/video.png | Bin 0 -> 4493 bytes .../css/bootstrap-theme.min.css | 6 + .../rest_framework/css/bootstrap-tweaks.css | 233 ++ .../css/bootstrap.min.css.REMOVED.git-id | 1 + static_new/rest_framework/css/default.css | 82 + .../rest_framework/css/font-awesome-4.0.3.css | 1338 +++++++++++ static_new/rest_framework/css/prettify.css | 30 + static_new/rest_framework/docs/css/base.css | 359 +++ .../rest_framework/docs/css/highlight.css | 125 + .../docs/css/jquery.json-view.min.css | 11 + .../rest_framework/docs/img/favicon.ico | Bin 0 -> 5430 bytes static_new/rest_framework/docs/img/grid.png | Bin 0 -> 1458 bytes static_new/rest_framework/docs/js/api.js | 321 +++ .../docs/js/highlight.pack.js.REMOVED.git-id | 1 + .../docs/js/jquery.json-view.min.js | 7 + .../fonts/fontawesome-webfont.eot | Bin 0 -> 38205 bytes .../fontawesome-webfont.svg.REMOVED.git-id | 1 + .../fonts/fontawesome-webfont.ttf | Bin 0 -> 80652 bytes .../fonts/fontawesome-webfont.woff | Bin 0 -> 44432 bytes .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes ...icons-halflings-regular.svg.REMOVED.git-id | 1 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../img/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes .../img/glyphicons-halflings.png | Bin 0 -> 12762 bytes static_new/rest_framework/img/grid.png | Bin 0 -> 1458 bytes static_new/rest_framework/js/ajax-form.js | 127 ++ static_new/rest_framework/js/bootstrap.min.js | 6 + .../js/coreapi-0.1.1.js.REMOVED.git-id | 1 + static_new/rest_framework/js/csrf.js | 52 + static_new/rest_framework/js/default.js | 47 + .../rest_framework/js/jquery-3.5.1.min.js | 2 + static_new/rest_framework/js/prettify-min.js | 28 + static_new/silk/css/cell.css | 25 + static_new/silk/css/colors.css | 14 + static_new/silk/css/fonts.css | 71 + static_new/silk/css/heading.css | 12 + static_new/silk/css/numeric.css | 11 + static_new/silk/css/summary.css | 18 + static_new/silk/favicon-16x16.png | Bin 0 -> 825 bytes static_new/silk/favicon-32x32.png | Bin 0 -> 1811 bytes static_new/silk/filter.png | Bin 0 -> 3540 bytes static_new/silk/filter2.png | Bin 0 -> 3006 bytes .../fantasque/FantasqueSansMono-Bold.woff | Bin 0 -> 51496 bytes .../FantasqueSansMono-BoldItalic.woff | Bin 0 -> 55648 bytes .../FantasqueSansMono-RegItalic.woff | Bin 0 -> 56336 bytes .../fantasque/FantasqueSansMono-Regular.woff | Bin 0 -> 52092 bytes static_new/silk/fonts/fira/FiraSans-Bold.woff | Bin 0 -> 89534 bytes .../silk/fonts/fira/FiraSans-BoldItalic.woff | Bin 0 -> 92217 bytes .../silk/fonts/fira/FiraSans-Light.woff | Bin 0 -> 95406 bytes .../silk/fonts/fira/FiraSans-LightItalic.woff | Bin 0 -> 98125 bytes .../silk/fonts/fira/FiraSans-Medium.woff | Bin 0 -> 89883 bytes .../fonts/fira/FiraSans-MediumItalic.woff | Bin 0 -> 92565 bytes .../silk/fonts/fira/FiraSans-Regular.woff | Bin 0 -> 91946 bytes .../fonts/fira/FiraSans-RegularItalic.woff | Bin 0 -> 94369 bytes .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes ...icons-halflings-regular.svg.REMOVED.git-id | 1 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes static_new/silk/js/cell.js | 24 + static_new/silk/js/filters.js | 50 + static_new/silk/js/summary.js | 57 + .../silk/lib/bootstrap-datetimepicker.min.css | 9 + .../silk/lib/bootstrap-datetimepicker.min.js | 1 + static_new/silk/lib/bootstrap-theme.min.css | 5 + .../silk/lib/bootstrap.min.css.REMOVED.git-id | 1 + static_new/silk/lib/bootstrap.min.js | 7 + static_new/silk/lib/highlight/foundation.css | 133 ++ .../silk/lib/highlight/highlight.pack.js | 1 + .../silk/lib/images/animated-overlay.gif | Bin 0 -> 1738 bytes .../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 0 -> 491 bytes .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 0 -> 387 bytes .../images/ui-bg_flat_10_000000_40x100.png | Bin 0 -> 278 bytes .../images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 0 -> 336 bytes .../images/ui-bg_glass_100_fdf5ce_1x400.png | Bin 0 -> 421 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 280 bytes .../ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 0 -> 5888 bytes .../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 0 -> 353 bytes .../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 0 -> 401 bytes .../lib/images/ui-icons_222222_256x240.png | Bin 0 -> 6893 bytes .../lib/images/ui-icons_228ef1_256x240.png | Bin 0 -> 4653 bytes .../lib/images/ui-icons_ef8c08_256x240.png | Bin 0 -> 4653 bytes .../lib/images/ui-icons_ffd27a_256x240.png | Bin 0 -> 4653 bytes .../lib/images/ui-icons_ffffff_256x240.png | Bin 0 -> 6381 bytes static_new/silk/lib/jquery-ui-1.10.4.min.css | 7 + .../jquery-ui-1.10.4.min.js.REMOVED.git-id | 1 + static_new/silk/lib/jquery.datetimepicker.css | 545 +++++ static_new/silk/lib/jquery.datetimepicker.js | 2026 +++++++++++++++++ static_new/silk/lib/jquery.min.js | 4 + static_new/silk/lib/sortable.js | 497 ++++ static_new/silk/lib/svg-pan-zoom.min.js | 3 + .../silk/lib/viz-lite.js.REMOVED.git-id | 1 + stock/__init__.py | 0 stock/admin.py | 5 + stock/apps.py | 4 + stock/files.py | 128 ++ stock/filter.py | 47 + stock/migrations/__init__.py | 0 stock/models.py | 56 + stock/serializers.py | 103 + stock/tests.py | 0 stock/urls.py | 16 + stock/views.py | 546 +++++ supplier/__init__.py | 0 supplier/admin.py | 4 + supplier/apps.py | 4 + supplier/files.py | 48 + supplier/filter.py | 19 + supplier/migrations/__init__.py | 0 supplier/models.py | 23 + supplier/serializers.py | 75 + supplier/tests.py | 0 supplier/urls.py | 13 + supplier/views.py | 168 ++ templates/.editorconfig | 9 + templates/.eslintignore | 6 + templates/.eslintrc.js | 72 + templates/.gitignore | 31 + templates/.postcssrc.js | 8 + templates/.vscode/extensions.json | 12 + templates/.vscode/settings.json | 7 + templates/README.md | 26 + templates/babel.config.js | 6 + .../app-release-unsigned.apk.REMOVED.git-id | 1 + .../cordova/android/apk/release/output.json | 20 + .../logs/manifest-merger-release-report.txt | 279 +++ .../release/sdkDependencies.txt | 473 ++++ templates/dist/spa/css/14.01c6672a.css | 1 + templates/dist/spa/css/15.01c6672a.css | 1 + templates/dist/spa/css/16.01c6672a.css | 1 + templates/dist/spa/css/2.01c6672a.css | 1 + templates/dist/spa/css/app.d6495f19.css | 1 + .../css/vendor.021a65db.css.REMOVED.git-id | 1 + templates/dist/spa/css/vendor.021a65db.css.gz | Bin 0 -> 35233 bytes templates/dist/spa/favicon.ico | Bin 0 -> 16645 bytes ...-Vdg-IuiaDsNa.a7d6a198.woff.REMOVED.git-id | 1 + ...iaDsNcIhQ8tQ.4c7c4ea2.woff2.REMOVED.git-id | 1 + templates/dist/spa/icons/favicon-128x128.png | Bin 0 -> 4565 bytes templates/dist/spa/icons/favicon-16x16.png | Bin 0 -> 555 bytes templates/dist/spa/icons/favicon-32x32.png | Bin 0 -> 998 bytes templates/dist/spa/icons/favicon-96x96.png | Bin 0 -> 3295 bytes templates/dist/spa/index.html | 4 + .../dist/spa/js/1.3c29b115.js.REMOVED.git-id | 1 + templates/dist/spa/js/1.3c29b115.js.gz | Bin 0 -> 32110 bytes templates/dist/spa/js/10.5d154557.js | 1 + templates/dist/spa/js/100.aee456d0.js | 1 + templates/dist/spa/js/101.56352bf4.js | 1 + templates/dist/spa/js/102.4ae60fa7.js | 1 + templates/dist/spa/js/103.9525f2e0.js | 1 + templates/dist/spa/js/104.28f849f5.js | 1 + templates/dist/spa/js/105.90b5cc46.js | 1 + templates/dist/spa/js/106.fc0193e1.js | 1 + templates/dist/spa/js/107.14a1465e.js | 1 + templates/dist/spa/js/108.b89ef622.js | 1 + templates/dist/spa/js/109.fa4d41a9.js | 1 + templates/dist/spa/js/11.6400b7f8.js | 1 + templates/dist/spa/js/110.13f424f0.js | 1 + templates/dist/spa/js/111.fef2e28c.js | 1 + templates/dist/spa/js/112.35ac5b63.js | 1 + templates/dist/spa/js/113.c884a2d3.js | 1 + templates/dist/spa/js/114.3e6697c4.js | 1 + templates/dist/spa/js/115.9acdc8fe.js | 1 + templates/dist/spa/js/116.a4475956.js | 1 + templates/dist/spa/js/117.4a4fb734.js | 1 + templates/dist/spa/js/118.1866f793.js | 1 + templates/dist/spa/js/119.880acaf3.js | 1 + templates/dist/spa/js/119.880acaf3.js.gz | Bin 0 -> 3225 bytes templates/dist/spa/js/12.160f4ca4.js | 1 + templates/dist/spa/js/120.757905f3.js | 1 + templates/dist/spa/js/121.2f028204.js | 1 + templates/dist/spa/js/122.c716a0b5.js | 1 + templates/dist/spa/js/123.bb15fba5.js | 1 + templates/dist/spa/js/124.91785738.js | 1 + templates/dist/spa/js/125.1356aac8.js | 1 + templates/dist/spa/js/14.8aa596c5.js | 1 + templates/dist/spa/js/14.8aa596c5.js.gz | Bin 0 -> 6505 bytes templates/dist/spa/js/15.eb5d6875.js | 1 + templates/dist/spa/js/15.eb5d6875.js.gz | Bin 0 -> 3784 bytes templates/dist/spa/js/16.69d4c3c1.js | 1 + templates/dist/spa/js/16.69d4c3c1.js.gz | Bin 0 -> 3786 bytes templates/dist/spa/js/17.c5937d87.js | 1 + templates/dist/spa/js/17.c5937d87.js.gz | Bin 0 -> 3507 bytes templates/dist/spa/js/18.e7ed8d41.js | 1 + templates/dist/spa/js/18.e7ed8d41.js.gz | Bin 0 -> 3804 bytes templates/dist/spa/js/19.6f499969.js | 1 + templates/dist/spa/js/19.6f499969.js.gz | Bin 0 -> 3799 bytes templates/dist/spa/js/2.597d53a6.js | 1 + templates/dist/spa/js/2.597d53a6.js.gz | Bin 0 -> 7592 bytes templates/dist/spa/js/20.80d67a0c.js | 1 + templates/dist/spa/js/21.83d3a509.js | 1 + templates/dist/spa/js/22.e160fd7f.js | 1 + templates/dist/spa/js/23.33bba67d.js | 1 + templates/dist/spa/js/24.28621a41.js | 1 + templates/dist/spa/js/24.28621a41.js.gz | Bin 0 -> 2665 bytes templates/dist/spa/js/25.c4ca3120.js | 1 + templates/dist/spa/js/25.c4ca3120.js.gz | Bin 0 -> 2688 bytes templates/dist/spa/js/26.1c866e37.js | 1 + templates/dist/spa/js/27.60406e91.js | 1 + templates/dist/spa/js/28.83900f23.js | 1 + templates/dist/spa/js/28.83900f23.js.gz | Bin 0 -> 3312 bytes templates/dist/spa/js/29.44acbd13.js | 1 + templates/dist/spa/js/29.44acbd13.js.gz | Bin 0 -> 3463 bytes templates/dist/spa/js/3.cd5dc64f.js | 1 + templates/dist/spa/js/30.119d6239.js | 1 + templates/dist/spa/js/30.119d6239.js.gz | Bin 0 -> 3504 bytes templates/dist/spa/js/31.35a2eb88.js | 1 + templates/dist/spa/js/31.35a2eb88.js.gz | Bin 0 -> 3010 bytes templates/dist/spa/js/32.3b2ffeb8.js | 1 + templates/dist/spa/js/32.3b2ffeb8.js.gz | Bin 0 -> 3011 bytes templates/dist/spa/js/33.a4c89348.js | 1 + templates/dist/spa/js/33.a4c89348.js.gz | Bin 0 -> 3011 bytes templates/dist/spa/js/34.dc3cf657.js | 1 + templates/dist/spa/js/34.dc3cf657.js.gz | Bin 0 -> 5162 bytes templates/dist/spa/js/35.eeaaf374.js | 1 + templates/dist/spa/js/35.eeaaf374.js.gz | Bin 0 -> 3035 bytes templates/dist/spa/js/36.9d40db7b.js | 1 + templates/dist/spa/js/36.9d40db7b.js.gz | Bin 0 -> 3011 bytes templates/dist/spa/js/37.ea6663c6.js | 1 + templates/dist/spa/js/37.ea6663c6.js.gz | Bin 0 -> 3016 bytes templates/dist/spa/js/38.0cc3c3d5.js | 1 + templates/dist/spa/js/38.0cc3c3d5.js.gz | Bin 0 -> 2993 bytes templates/dist/spa/js/39.ebf832ea.js | 1 + templates/dist/spa/js/39.ebf832ea.js.gz | Bin 0 -> 6102 bytes templates/dist/spa/js/4.afff8fd0.js | 1 + templates/dist/spa/js/40.09c1003e.js | 1 + templates/dist/spa/js/41.d4becca4.js | 1 + templates/dist/spa/js/42.543714ae.js | 1 + templates/dist/spa/js/43.273c2711.js | 1 + templates/dist/spa/js/44.9e8356b1.js | 1 + templates/dist/spa/js/45.809d4f6e.js | 1 + templates/dist/spa/js/46.6b785f05.js | 1 + templates/dist/spa/js/46.6b785f05.js.gz | Bin 0 -> 3229 bytes templates/dist/spa/js/47.e71769a8.js | 1 + templates/dist/spa/js/47.e71769a8.js.gz | Bin 0 -> 3077 bytes templates/dist/spa/js/48.d54bad36.js | 1 + templates/dist/spa/js/48.d54bad36.js.gz | Bin 0 -> 2968 bytes templates/dist/spa/js/49.bfd06519.js | 1 + templates/dist/spa/js/5.034375a9.js | 1 + templates/dist/spa/js/50.b366d436.js | 1 + templates/dist/spa/js/51.06c0480a.js | 1 + templates/dist/spa/js/51.06c0480a.js.gz | Bin 0 -> 3375 bytes templates/dist/spa/js/52.7aaa0eef.js | 1 + templates/dist/spa/js/52.7aaa0eef.js.gz | Bin 0 -> 3440 bytes templates/dist/spa/js/53.6d217e15.js | 1 + templates/dist/spa/js/53.6d217e15.js.gz | Bin 0 -> 5097 bytes templates/dist/spa/js/54.6ab8f510.js | 1 + templates/dist/spa/js/54.6ab8f510.js.gz | Bin 0 -> 3793 bytes templates/dist/spa/js/55.ffac4e92.js | 1 + templates/dist/spa/js/56.790d169e.js | 1 + templates/dist/spa/js/56.790d169e.js.gz | Bin 0 -> 4331 bytes templates/dist/spa/js/57.07a7d138.js | 1 + templates/dist/spa/js/58.ec52918b.js | 1 + templates/dist/spa/js/58.ec52918b.js.gz | Bin 0 -> 3461 bytes templates/dist/spa/js/59.be7d8f42.js | 1 + templates/dist/spa/js/6.6a284a53.js | 1 + templates/dist/spa/js/60.2389ebb9.js | 1 + templates/dist/spa/js/60.2389ebb9.js.gz | Bin 0 -> 3126 bytes templates/dist/spa/js/61.f8dccec1.js | 1 + templates/dist/spa/js/62.94a12eb9.js | 1 + templates/dist/spa/js/63.687b20a5.js | 1 + templates/dist/spa/js/63.687b20a5.js.gz | Bin 0 -> 2491 bytes templates/dist/spa/js/64.357ed891.js | 1 + templates/dist/spa/js/65.423897eb.js | 1 + templates/dist/spa/js/65.423897eb.js.gz | Bin 0 -> 7242 bytes templates/dist/spa/js/66.b03a597b.js | 1 + templates/dist/spa/js/67.0f520ed7.js | 1 + templates/dist/spa/js/68.5634a88c.js | 1 + templates/dist/spa/js/69.76143c6d.js | 1 + templates/dist/spa/js/7.4bc79fdf.js | 1 + templates/dist/spa/js/70.621b0849.js | 1 + templates/dist/spa/js/71.f39c1a17.js | 1 + templates/dist/spa/js/72.bf86d193.js | 1 + templates/dist/spa/js/73.770f73a3.js | 1 + templates/dist/spa/js/73.770f73a3.js.gz | Bin 0 -> 3189 bytes templates/dist/spa/js/74.6572797d.js | 1 + templates/dist/spa/js/74.6572797d.js.gz | Bin 0 -> 4932 bytes templates/dist/spa/js/75.ac602613.js | 1 + templates/dist/spa/js/76.d3307305.js | 1 + templates/dist/spa/js/77.b44f2fc3.js | 1 + templates/dist/spa/js/78.ee8951ce.js | 1 + templates/dist/spa/js/79.280c9038.js | 1 + templates/dist/spa/js/8.5ec7f527.js | 1 + templates/dist/spa/js/80.67597fe1.js | 1 + templates/dist/spa/js/81.30398190.js | 1 + templates/dist/spa/js/81.30398190.js.gz | Bin 0 -> 3140 bytes templates/dist/spa/js/82.1d99e8a1.js | 1 + templates/dist/spa/js/83.e69e5b51.js | 1 + templates/dist/spa/js/84.71a8b585.js | 1 + templates/dist/spa/js/85.a8edfd8f.js | 1 + templates/dist/spa/js/86.b86e0e99.js | 1 + templates/dist/spa/js/87.0c07ca18.js | 1 + templates/dist/spa/js/87.0c07ca18.js.gz | Bin 0 -> 4046 bytes templates/dist/spa/js/88.ff033590.js | 1 + templates/dist/spa/js/88.ff033590.js.gz | Bin 0 -> 3497 bytes templates/dist/spa/js/89.15f18453.js | 1 + templates/dist/spa/js/9.aa1f3eb2.js | 1 + templates/dist/spa/js/90.3f413400.js | 1 + templates/dist/spa/js/90.3f413400.js.gz | Bin 0 -> 3252 bytes templates/dist/spa/js/91.5b09be2f.js | 1 + templates/dist/spa/js/91.5b09be2f.js.gz | Bin 0 -> 3965 bytes templates/dist/spa/js/92.a44f2e7e.js | 1 + templates/dist/spa/js/93.8619497f.js | 1 + templates/dist/spa/js/94.a1f49349.js | 1 + templates/dist/spa/js/95.e05c7c07.js | 1 + templates/dist/spa/js/96.9c28e034.js | 1 + templates/dist/spa/js/97.d82de167.js | 1 + templates/dist/spa/js/98.d554a59e.js | 1 + templates/dist/spa/js/99.c803f707.js | 1 + .../spa/js/app.e0fa73d6.js.REMOVED.git-id | 1 + templates/dist/spa/js/app.e0fa73d6.js.gz | Bin 0 -> 55070 bytes .../spa/js/vendor.a67f5770.js.REMOVED.git-id | 1 + .../js/vendor.a67f5770.js.gz.REMOVED.git-id | 1 + .../pdf/GreaterWMS_price.pdf.REMOVED.git-id | 1 + .../dist/spa/statics/baseinfo/company.png | Bin 0 -> 4857 bytes .../dist/spa/statics/baseinfo/customer.png | Bin 0 -> 9437 bytes .../dist/spa/statics/baseinfo/supplier.png | Bin 0 -> 8282 bytes templates/dist/spa/statics/baseurl.js | 1 + .../dist/spa/statics/capital/capital.png | Bin 0 -> 4961 bytes .../dist/spa/statics/capital/freight.png | Bin 0 -> 5152 bytes .../dashboard/in_and_out_statement.svg | 1 + .../spa/statics/dashboard/in_statement.png | Bin 0 -> 4586 bytes .../spa/statics/dashboard/in_statement.svg | 1 + .../spa/statics/dashboard/out_statement.png | Bin 0 -> 4373 bytes .../dist/spa/statics/dashboard/statement.png | Bin 0 -> 3614 bytes .../statics/downloadcenter/downloadcenter.png | Bin 0 -> 4644 bytes .../downloadcenter/downloadinbound.png | Bin 0 -> 2603 bytes .../dist/spa/statics/downloadcenter/reset.svg | 1 + .../dist/spa/statics/goods/goodsbrand.png | Bin 0 -> 6852 bytes .../dist/spa/statics/goods/goodsclass.png | Bin 0 -> 6853 bytes .../dist/spa/statics/goods/goodscolor.png | Bin 0 -> 6965 bytes .../dist/spa/statics/goods/goodslist.png | Bin 0 -> 4590 bytes .../dist/spa/statics/goods/goodsorigin.png | Bin 0 -> 7350 bytes .../dist/spa/statics/goods/goodsshape.png | Bin 0 -> 7457 bytes .../dist/spa/statics/goods/goodsspecs.png | Bin 0 -> 6997 bytes .../dist/spa/statics/goods/goodsunit.png | Bin 0 -> 2214 bytes templates/dist/spa/statics/goods/logo.png | Bin 0 -> 2245 bytes .../dist/spa/statics/goods/scan_goodslist.png | Bin 0 -> 3870 bytes templates/dist/spa/statics/icons/GitHub.png | Bin 0 -> 8624 bytes templates/dist/spa/statics/icons/apiauth.png | Bin 0 -> 7637 bytes templates/dist/spa/statics/icons/blog.png | Bin 0 -> 2176 bytes templates/dist/spa/statics/icons/car.png | Bin 0 -> 2935 bytes .../dist/spa/statics/icons/cyclecount.png | Bin 0 -> 6729 bytes templates/dist/spa/statics/icons/driveron.png | Bin 0 -> 5523 bytes .../dist/spa/statics/icons/favicon-32x32.png | Bin 0 -> 998 bytes templates/dist/spa/statics/icons/folders.png | Bin 0 -> 6187 bytes templates/dist/spa/statics/icons/gitee.ico | Bin 0 -> 41566 bytes templates/dist/spa/statics/icons/logo.png | Bin 0 -> 9411 bytes templates/dist/spa/statics/icons/logout.png | Bin 0 -> 3153 bytes templates/dist/spa/statics/icons/milkrun.png | Bin 0 -> 9060 bytes .../dist/spa/statics/icons/movetobin.png | Bin 0 -> 3951 bytes templates/dist/spa/statics/icons/msds.png | Bin 0 -> 6836 bytes templates/dist/spa/statics/icons/order.png | Bin 0 -> 6364 bytes templates/dist/spa/statics/icons/profile.png | Bin 0 -> 11026 bytes templates/dist/spa/statics/icons/qrcode.png | Bin 0 -> 2627 bytes templates/dist/spa/statics/icons/receive.png | Bin 0 -> 5042 bytes templates/dist/spa/statics/icons/robot.png | Bin 0 -> 8623 bytes .../spa/statics/icons/safari-pinned-tab.svg | 1 + templates/dist/spa/statics/icons/scm.png | Bin 0 -> 7120 bytes templates/dist/spa/statics/icons/tms.png | Bin 0 -> 6545 bytes templates/dist/spa/statics/icons/user.png | Bin 0 -> 291 bytes templates/dist/spa/statics/icons/users.svg | 1 + templates/dist/spa/statics/icons/wms.png | Bin 0 -> 5674 bytes .../dist/spa/statics/icons/wxcyclecount.png | Bin 0 -> 10412 bytes templates/dist/spa/statics/inbound/asn.png | Bin 0 -> 3754 bytes .../dist/spa/statics/inbound/asnfinish.png | Bin 0 -> 3472 bytes templates/dist/spa/statics/inbound/damage.png | Bin 0 -> 4163 bytes templates/dist/spa/statics/inbound/more.png | Bin 0 -> 2953 bytes templates/dist/spa/statics/inbound/polist.png | Bin 0 -> 3770 bytes .../dist/spa/statics/inbound/preloadstock.png | Bin 0 -> 4248 bytes .../dist/spa/statics/inbound/presortstock.png | Bin 0 -> 3376 bytes .../dist/spa/statics/inbound/shortage.png | Bin 0 -> 5160 bytes .../dist/spa/statics/inbound/sortstock.png | Bin 0 -> 3181 bytes .../dist/spa/statics/outbound/backorder.png | Bin 0 -> 5160 bytes .../spa/statics/outbound/dispatchlist.png | Bin 0 -> 7272 bytes .../dist/spa/statics/outbound/dnlist.png | Bin 0 -> 3836 bytes .../dist/spa/statics/outbound/freshorder.png | Bin 0 -> 2509 bytes templates/dist/spa/statics/outbound/order.png | Bin 0 -> 5273 bytes .../spa/statics/outbound/orderrelease.png | Bin 0 -> 6268 bytes .../dist/spa/statics/outbound/outbound.png | Bin 0 -> 5681 bytes .../dist/spa/statics/outbound/picked.png | Bin 0 -> 4644 bytes .../dist/spa/statics/outbound/pickinglist.png | Bin 0 -> 12504 bytes .../dist/spa/statics/outbound/pickstock.png | Bin 0 -> 3840 bytes .../dist/spa/statics/outbound/receiving.png | Bin 0 -> 7402 bytes templates/dist/spa/statics/shopid/douyin.png | Bin 0 -> 5992 bytes .../dist/spa/statics/shopid/ecomments.png | Bin 0 -> 5700 bytes templates/dist/spa/statics/staff/driver.png | Bin 0 -> 5353 bytes .../dist/spa/statics/staff/stafflist.png | Bin 0 -> 6101 bytes .../dist/spa/statics/staff/stafftype.png | Bin 0 -> 5872 bytes .../dist/spa/statics/stock/cyclecount.png | Bin 0 -> 5254 bytes .../spa/statics/stock/cyclecountrecorder.png | Bin 0 -> 6746 bytes .../dist/spa/statics/stock/stocklist.png | Bin 0 -> 8634 bytes .../spa/statics/uploadcenter/addupload.png | Bin 0 -> 3462 bytes .../spa/statics/uploadcenter/uploadcenter.png | Bin 0 -> 3062 bytes .../statics/uploadcenter/uploadinbound.png | Bin 0 -> 3292 bytes .../dist/spa/statics/warehouse/binset.png | Bin 0 -> 5169 bytes .../dist/spa/statics/warehouse/binsize.png | Bin 0 -> 3505 bytes .../dist/spa/statics/warehouse/property.png | Bin 0 -> 1947 bytes .../spa/statics/warehouse/warehouseset.png | Bin 0 -> 3388 bytes templates/jsconfig.json | 36 + templates/package-lock.json.REMOVED.git-id | 1 + templates/package.json | 80 + templates/public/favicon.ico | Bin 0 -> 16645 bytes templates/public/icons/favicon-128x128.png | Bin 0 -> 4565 bytes templates/public/icons/favicon-16x16.png | Bin 0 -> 555 bytes templates/public/icons/favicon-32x32.png | Bin 0 -> 998 bytes templates/public/icons/favicon-96x96.png | Bin 0 -> 3295 bytes .../pdf/GreaterWMS_price.pdf.REMOVED.git-id | 1 + templates/public/statics/baseinfo/company.png | Bin 0 -> 4857 bytes .../public/statics/baseinfo/customer.png | Bin 0 -> 9437 bytes .../public/statics/baseinfo/supplier.png | Bin 0 -> 8282 bytes templates/public/statics/baseurl.js | 7 + templates/public/statics/capital/capital.png | Bin 0 -> 4961 bytes templates/public/statics/capital/freight.png | Bin 0 -> 5152 bytes .../dashboard/in_and_out_statement.svg | 1 + .../public/statics/dashboard/in_statement.png | Bin 0 -> 4586 bytes .../public/statics/dashboard/in_statement.svg | 1 + .../statics/dashboard/out_statement.png | Bin 0 -> 4373 bytes .../public/statics/dashboard/statement.png | Bin 0 -> 3614 bytes .../statics/downloadcenter/downloadcenter.png | Bin 0 -> 4644 bytes .../downloadcenter/downloadinbound.png | Bin 0 -> 2603 bytes .../public/statics/downloadcenter/reset.svg | 1 + templates/public/statics/goods/goodsbrand.png | Bin 0 -> 6852 bytes templates/public/statics/goods/goodsclass.png | Bin 0 -> 6853 bytes templates/public/statics/goods/goodscolor.png | Bin 0 -> 6965 bytes templates/public/statics/goods/goodslist.png | Bin 0 -> 4590 bytes .../public/statics/goods/goodsorigin.png | Bin 0 -> 7350 bytes templates/public/statics/goods/goodsshape.png | Bin 0 -> 7457 bytes templates/public/statics/goods/goodsspecs.png | Bin 0 -> 6997 bytes templates/public/statics/goods/goodsunit.png | Bin 0 -> 2214 bytes templates/public/statics/goods/logo.png | Bin 0 -> 2245 bytes .../public/statics/goods/scan_goodslist.png | Bin 0 -> 3870 bytes templates/public/statics/icons/GitHub.png | Bin 0 -> 8624 bytes templates/public/statics/icons/apiauth.png | Bin 0 -> 7637 bytes templates/public/statics/icons/blog.png | Bin 0 -> 2176 bytes templates/public/statics/icons/car.png | Bin 0 -> 2935 bytes templates/public/statics/icons/cyclecount.png | Bin 0 -> 6729 bytes templates/public/statics/icons/driveron.png | Bin 0 -> 5523 bytes .../public/statics/icons/favicon-32x32.png | Bin 0 -> 998 bytes templates/public/statics/icons/folders.png | Bin 0 -> 6187 bytes templates/public/statics/icons/gitee.ico | Bin 0 -> 41566 bytes templates/public/statics/icons/logo.png | Bin 0 -> 9411 bytes templates/public/statics/icons/logout.png | Bin 0 -> 3153 bytes templates/public/statics/icons/milkrun.png | Bin 0 -> 9060 bytes templates/public/statics/icons/movetobin.png | Bin 0 -> 3951 bytes templates/public/statics/icons/msds.png | Bin 0 -> 6836 bytes templates/public/statics/icons/order.png | Bin 0 -> 6364 bytes templates/public/statics/icons/profile.png | Bin 0 -> 11026 bytes templates/public/statics/icons/qrcode.png | Bin 0 -> 2627 bytes templates/public/statics/icons/receive.png | Bin 0 -> 5042 bytes templates/public/statics/icons/robot.png | Bin 0 -> 8623 bytes .../statics/icons/safari-pinned-tab.svg | 1 + templates/public/statics/icons/scm.png | Bin 0 -> 7120 bytes templates/public/statics/icons/tms.png | Bin 0 -> 6545 bytes templates/public/statics/icons/user.png | Bin 0 -> 291 bytes templates/public/statics/icons/users.svg | 1 + templates/public/statics/icons/wms.png | Bin 0 -> 5674 bytes .../public/statics/icons/wxcyclecount.png | Bin 0 -> 10412 bytes templates/public/statics/inbound/asn.png | Bin 0 -> 3754 bytes .../public/statics/inbound/asnfinish.png | Bin 0 -> 3472 bytes templates/public/statics/inbound/damage.png | Bin 0 -> 4163 bytes templates/public/statics/inbound/more.png | Bin 0 -> 2953 bytes templates/public/statics/inbound/polist.png | Bin 0 -> 3770 bytes .../public/statics/inbound/preloadstock.png | Bin 0 -> 4248 bytes .../public/statics/inbound/presortstock.png | Bin 0 -> 3376 bytes templates/public/statics/inbound/shortage.png | Bin 0 -> 5160 bytes .../public/statics/inbound/sortstock.png | Bin 0 -> 3181 bytes .../public/statics/outbound/backorder.png | Bin 0 -> 5160 bytes .../public/statics/outbound/dispatchlist.png | Bin 0 -> 7272 bytes templates/public/statics/outbound/dnlist.png | Bin 0 -> 3836 bytes .../public/statics/outbound/freshorder.png | Bin 0 -> 2509 bytes templates/public/statics/outbound/order.png | Bin 0 -> 5273 bytes .../public/statics/outbound/orderrelease.png | Bin 0 -> 6268 bytes .../public/statics/outbound/outbound.png | Bin 0 -> 5681 bytes templates/public/statics/outbound/picked.png | Bin 0 -> 4644 bytes .../public/statics/outbound/pickinglist.png | Bin 0 -> 12504 bytes .../public/statics/outbound/pickstock.png | Bin 0 -> 3840 bytes .../public/statics/outbound/receiving.png | Bin 0 -> 7402 bytes templates/public/statics/shopid/douyin.png | Bin 0 -> 5992 bytes templates/public/statics/shopid/ecomments.png | Bin 0 -> 5700 bytes templates/public/statics/staff/driver.png | Bin 0 -> 5353 bytes templates/public/statics/staff/stafflist.png | Bin 0 -> 6101 bytes templates/public/statics/staff/stafftype.png | Bin 0 -> 5872 bytes templates/public/statics/stock/cyclecount.png | Bin 0 -> 5254 bytes .../statics/stock/cyclecountrecorder.png | Bin 0 -> 6746 bytes templates/public/statics/stock/stocklist.png | Bin 0 -> 8634 bytes .../public/statics/uploadcenter/addupload.png | Bin 0 -> 3462 bytes .../statics/uploadcenter/uploadcenter.png | Bin 0 -> 3062 bytes .../statics/uploadcenter/uploadinbound.png | Bin 0 -> 3292 bytes templates/public/statics/warehouse/binset.png | Bin 0 -> 5169 bytes .../public/statics/warehouse/binsize.png | Bin 0 -> 3505 bytes .../public/statics/warehouse/property.png | Bin 0 -> 1947 bytes .../public/statics/warehouse/warehouseset.png | Bin 0 -> 3388 bytes templates/quasar.conf.js | 282 +++ templates/quasar.extensions.json | 1 + templates/src-cordova/.gitignore | 7 + templates/src-cordova/config.xml | 66 + templates/src-cordova/cordova-flag.d.ts | 10 + templates/src-cordova/package-lock.json | 1698 ++++++++++++++ templates/src-cordova/package.json | 27 + templates/src-cordova/plugins/android.json | 87 + .../LICENSE | 21 + .../README.md | 306 +++ .../hooks/after_prepare.js | 33 + .../package.json | 23 + .../plugin.xml | 47 + .../CordovaPluginIntentFileProvider.java | 4 + .../src/android/IntentShim.java | 838 +++++++ .../src/android/res/xml/provider_paths.xml | 3 + .../www/IntentShim.js | 89 + .../com.verso.cordova.clipboard/LICENSE | 20 + .../com.verso.cordova.clipboard/README.md | 62 + .../com.verso.cordova.clipboard/package.json | 38 + .../com.verso.cordova.clipboard/plugin.xml | 59 + .../src/android/Clipboard.java | 62 + .../src/ios/CDVClipboard.h | 9 + .../src/ios/CDVClipboard.m | 30 + .../src/wp8/Clipboard.cs | 58 + .../www/clipboard.js | 34 + .../cordova-plugin-app-version/CHANGELOG.md | 56 + .../cordova-plugin-app-version/LICENSE | 20 + .../cordova-plugin-app-version/README.md | 73 + .../cordova-plugin-app-version/VERSION | 1 + .../cordova-plugin-app-version/package.json | 26 + .../cordova-plugin-app-version/plugin.xml | 86 + .../src/android/AppVersion.java | 45 + .../src/browser/AppVersionProxy.js | 75 + .../src/ios/AppVersion.h | 13 + .../src/ios/AppVersion.m | 47 + .../src/windows/AppVersionProxy.js | 33 + .../src/wp8/AppVersion.cs | 53 + .../www/AppVersionPlugin.js | 65 + .../www/blackberry10/AppVersionProxy.js | 18 + .../plugins/cordova-plugin-badge/CHANGELOG.md | 141 ++ .../plugins/cordova-plugin-badge/LICENSE | 202 ++ .../plugins/cordova-plugin-badge/README.md | 199 ++ .../images/android.png.REMOVED.git-id | 1 + .../images/ios-permission.png | Bin 0 -> 69810 bytes .../cordova-plugin-badge/images/ios.png | Bin 0 -> 29472 bytes .../cordova-plugin-badge/images/osx-badge.png | Bin 0 -> 21339 bytes .../images/osx-circular.png | Bin 0 -> 22719 bytes .../images/osx-download.png | Bin 0 -> 20351 bytes .../cordova-plugin-badge/images/windows.png | Bin 0 -> 68258 bytes .../plugins/cordova-plugin-badge/package.json | 54 + .../plugins/cordova-plugin-badge/plugin.xml | 126 + .../src/android/Badge.java | 187 ++ .../src/android/BadgeImpl.java | 144 ++ .../src/android/badge.gradle | 30 + .../src/browser/BadgeProxy.js | 115 + .../src/browser/favico.min.js | 7 + .../cordova-plugin-badge/src/ios/APPBadge.h | 37 + .../cordova-plugin-badge/src/ios/APPBadge.m | 196 ++ .../cordova-plugin-badge/src/osx/APPBadge.h | 33 + .../cordova-plugin-badge/src/osx/APPBadge.m | 264 +++ .../src/osx/DockCircularProgressBar.h | 31 + .../src/osx/DockCircularProgressBar.mm | 266 +++ .../src/osx/DockDownloadProgressBar.h | 15 + .../src/osx/DockDownloadProgressBar.mm | 71 + .../src/windows/BadgeProxy.js | 119 + .../cordova-plugin-badge/tests/plugin.xml | 36 + .../cordova-plugin-badge/tests/tests.js | 155 ++ .../plugins/cordova-plugin-badge/www/badge.js | 279 +++ .../CONTRIBUTING.md | 37 + .../cordova-plugin-battery-status/LICENSE | 202 ++ .../cordova-plugin-battery-status/NOTICE | 5 + .../cordova-plugin-battery-status/README.md | 112 + .../RELEASENOTES.md | 161 ++ .../package.json | 52 + .../cordova-plugin-battery-status/plugin.xml | 72 + .../src/android/BatteryListener.java | 162 ++ .../src/browser/BatteryProxy.js | 80 + .../src/ios/CDVBattery.h | 40 + .../src/ios/CDVBattery.m | 148 ++ .../src/windows/BatteryProxy.js | 125 + .../src/windows/BatteryStatus.winmd | Bin 0 -> 9216 bytes .../BatteryStatus/BatteryStatus.cs | 104 + .../BatteryStatus/BatteryStatus.csproj | 72 + .../BatteryStatus/Properties/AssemblyInfo.cs | 44 + .../tests/package.json | 14 + .../tests/plugin.xml | 31 + .../tests/tests.js | 556 +++++ .../types/index.d.ts | 46 + .../www/battery.js | 109 + .../cordova-plugin-ble-central/CHANGES.txt | 196 ++ .../cordova-plugin-ble-central/LICENSE.txt | 13 + .../cordova-plugin-ble-central/README.md | 1044 +++++++++ .../examples/battery/README.md | 16 + .../examples/battery/config.xml | 13 + .../examples/battery/hooks/README.md | 83 + .../examples/battery/www/css/index.css | 61 + .../examples/battery/www/index.html | 31 + .../examples/battery/www/js/index.js | 105 + .../examples/bluefruitle/README.md | 37 + .../examples/bluefruitle/config.xml | 13 + .../examples/bluefruitle/hooks/README.md | 83 + .../examples/bluefruitle/www/css/index.css | 77 + .../examples/bluefruitle/www/index.html | 34 + .../examples/bluefruitle/www/js/index.js | 158 ++ .../examples/heartrate/README.md | 9 + .../examples/heartrate/config.xml | 12 + .../examples/heartrate/hooks/README.md | 196 ++ .../examples/heartrate/www/css/index.css | 27 + .../examples/heartrate/www/index.html | 20 + .../examples/heartrate/www/js/index.js | 83 + .../examples/metawear/README.md | 18 + .../examples/metawear/config.xml | 12 + .../examples/metawear/hooks/README.md | 83 + .../examples/metawear/www/css/index.css | 95 + .../examples/metawear/www/index.html | 37 + .../examples/metawear/www/js/index.js | 156 ++ .../examples/redbearlab/README.md | 18 + .../examples/redbearlab/config.xml | 12 + .../examples/redbearlab/hooks/README.md | 83 + .../examples/redbearlab/www/css/index.css | 77 + .../examples/redbearlab/www/index.html | 34 + .../examples/redbearlab/www/js/index.js | 124 + .../examples/rfduinoLedButton/README.md | 16 + .../examples/rfduinoLedButton/config.xml | 13 + .../examples/rfduinoLedButton/hooks/README.md | 83 + .../rfduinoLedButton/www/css/index.css | 61 + .../examples/rfduinoLedButton/www/index.html | 31 + .../examples/rfduinoLedButton/www/js/index.js | 186 ++ .../examples/robosmart/README.md | 15 + .../examples/robosmart/config.xml | 13 + .../examples/robosmart/hooks/README.md | 83 + .../examples/robosmart/www/css/index.css | 66 + .../examples/robosmart/www/index.html | 37 + .../examples/robosmart/www/js/index.js | 157 ++ .../examples/sensortag/README.md | 17 + .../examples/sensortag/config.xml | 13 + .../examples/sensortag/hooks/README.md | 83 + .../examples/sensortag/www/css/index.css | 61 + .../examples/sensortag/www/index.html | 31 + .../examples/sensortag/www/js/index.js | 141 ++ .../examples/sensortag_cc2650/README.md | 18 + .../examples/sensortag_cc2650/config.xml | 13 + .../examples/sensortag_cc2650/hooks/README.md | 83 + .../sensortag_cc2650/www/css/index.css | 61 + .../examples/sensortag_cc2650/www/index.html | 32 + .../examples/sensortag_cc2650/www/js/index.js | 216 ++ .../cordova-plugin-ble-central/package.json | 35 + .../cordova-plugin-ble-central/plugin.xml | 101 + .../src/android/BLECentralPlugin.java | 881 +++++++ .../src/android/BLECommand.java | 61 + .../src/android/Helper.java | 158 ++ .../src/android/Peripheral.java | 897 ++++++++ .../android/SequentialCallbackContext.java | 55 + .../src/android/UUIDHelper.java | 48 + .../src/browser/BLECentralPlugin.js | 78 + .../src/ios/BLECentralPlugin.h | 73 + .../src/ios/BLECentralPlugin.m | 948 ++++++++ .../src/ios/BLECommandContext.h | 16 + .../src/ios/BLECommandContext.m | 10 + .../src/ios/CBPeripheral+Extensions.h | 37 + .../src/ios/CBPeripheral+Extensions.m | 293 +++ .../src/wp/BLECentralPlugin.cs | 132 ++ .../tests/plugin.xml | 11 + .../cordova-plugin-ble-central/tests/tests.js | 71 + .../cordova-plugin-ble-central/www/ble.js | 337 +++ .../cordova-plugin-camera/CONTRIBUTING.md | 37 + .../plugins/cordova-plugin-camera/LICENSE | 202 ++ .../plugins/cordova-plugin-camera/NOTICE | 5 + .../plugins/cordova-plugin-camera/README.md | 703 ++++++ .../cordova-plugin-camera/RELEASENOTES.md | 484 ++++ .../cordova-plugin-camera/package.json | 61 + .../plugins/cordova-plugin-camera/plugin.xml | 163 ++ .../src/android/CameraLauncher.java | 1389 +++++++++++ .../src/android/ExifHelper.java | 185 ++ .../src/android/FileHelper.java | 319 +++ .../src/android/FileProvider.java | 21 + .../src/android/GalleryPathVO.java | 43 + .../src/android/xml/camera_provider_paths.xml | 21 + .../src/browser/CameraProxy.js | 126 + .../cordova-plugin-camera/src/ios/CDVCamera.h | 115 + .../cordova-plugin-camera/src/ios/CDVCamera.m | 750 ++++++ .../cordova-plugin-camera/src/ios/CDVExif.h | 43 + .../src/ios/CDVJpegHeaderWriter.h | 62 + .../src/ios/CDVJpegHeaderWriter.m | 547 +++++ .../src/ios/UIImage+CropScaleOrientation.h | 29 + .../src/ios/UIImage+CropScaleOrientation.m | 175 ++ .../cordova-plugin-camera/src/osx/CDVCamera.h | 80 + .../cordova-plugin-camera/src/osx/CDVCamera.m | 258 +++ .../src/windows/CameraProxy.js | 861 +++++++ .../cordova-plugin-camera/types/index.d.ts | 177 ++ .../cordova-plugin-camera/www/Camera.js | 185 ++ .../www/CameraConstants.js | 92 + .../www/CameraPopoverHandle.js | 32 + .../www/CameraPopoverOptions.js | 56 + .../www/ios/CameraPopoverHandle.js | 66 + .../cordova-plugin-device/CONTRIBUTING.md | 37 + .../plugins/cordova-plugin-device/LICENSE | 202 ++ .../plugins/cordova-plugin-device/NOTICE | 5 + .../plugins/cordova-plugin-device/README.md | 264 +++ .../cordova-plugin-device/RELEASENOTES.md | 194 ++ .../cordova-plugin-device/package.json | 55 + .../plugins/cordova-plugin-device/plugin.xml | 93 + .../src/android/Device.java | 174 ++ .../src/browser/DeviceProxy.js | 84 + .../cordova-plugin-device/src/ios/CDVDevice.h | 30 + .../cordova-plugin-device/src/ios/CDVDevice.m | 115 + .../cordova-plugin-device/src/osx/CDVDevice.h | 28 + .../cordova-plugin-device/src/osx/CDVDevice.m | 113 + .../src/windows/DeviceProxy.js | 96 + .../cordova-plugin-device/tests/package.json | 14 + .../cordova-plugin-device/tests/plugin.xml | 31 + .../cordova-plugin-device/tests/tests.js | 113 + .../cordova-plugin-device/types/index.d.ts | 35 + .../cordova-plugin-device/www/device.js | 83 + .../.appveyor.yml | 28 + .../.github/PULL_REQUEST_TEMPLATE.md | 22 + .../cordova-plugin-file-transfer/.jscsrc | 23 + .../cordova-plugin-file-transfer/.jshintrc | 19 + .../cordova-plugin-file-transfer/.npmignore | 15 + .../cordova-plugin-file-transfer/.travis.yml | 71 + .../CONTRIBUTING.md | 37 + .../cordova-plugin-file-transfer/LICENSE | 202 ++ .../cordova-plugin-file-transfer/NOTICE | 8 + .../cordova-plugin-file-transfer/README.md | 598 +++++ .../RELEASENOTES.md | 319 +++ .../doc/de/README.md | 311 +++ .../doc/de/index.md | 302 +++ .../doc/es/README.md | 311 +++ .../doc/es/index.md | 262 +++ .../doc/fr/README.md | 270 +++ .../doc/fr/index.md | 261 +++ .../doc/it/README.md | 311 +++ .../doc/it/index.md | 302 +++ .../doc/ja/README.md | 311 +++ .../doc/ja/index.md | 302 +++ .../doc/ko/README.md | 311 +++ .../doc/ko/index.md | 302 +++ .../doc/pl/README.md | 311 +++ .../doc/pl/index.md | 302 +++ .../doc/ru/index.md | 290 +++ .../doc/zh/README.md | 311 +++ .../doc/zh/index.md | 302 +++ .../cordova-plugin-file-transfer/package.json | 64 + .../cordova-plugin-file-transfer/plugin.xml | 170 ++ .../src/amazon/FileTransfer.java | 898 ++++++++ .../src/android/FileProgressResult.java | 63 + .../src/android/FileTransfer.java | 932 ++++++++ .../src/android/FileUploadResult.java | 73 + .../src/ios/CDVFileTransfer.h | 89 + .../src/ios/CDVFileTransfer.m | 861 +++++++ .../src/ubuntu/file-transfer.cpp | 265 +++ .../src/ubuntu/file-transfer.h | 103 + .../src/windows/FileTransferProxy.js | 579 +++++ .../src/wp/FileTransfer.cs | 994 ++++++++ .../tests/hooks/after_prepare.js | 75 + .../tests/package.json | 14 + .../tests/plugin.xml | 34 + .../tests/tests.js | 1739 ++++++++++++++ .../types/index.d.ts | 136 ++ .../www/FileTransfer.js | 239 ++ .../www/FileTransferError.js | 41 + .../www/blackberry10/.jshintrc | 5 + .../www/blackberry10/FileTransfer.js | 190 ++ .../www/blackberry10/FileTransferProxy.js | 36 + .../www/blackberry10/xhrFileTransfer.js | 260 +++ .../www/browser/FileTransfer.js | 346 +++ .../www/firefoxos/FileTransferProxy.js | 222 ++ .../www/wp7/base64.js | 73 + .../plugins/cordova-plugin-file/.jshintrc | 30 + .../plugins/cordova-plugin-file/.ratignore | 1 + .../cordova-plugin-file/CONTRIBUTING.md | 37 + .../plugins/cordova-plugin-file/LICENSE | 202 ++ .../plugins/cordova-plugin-file/NOTICE | 5 + .../plugins/cordova-plugin-file/README.md | 833 +++++++ .../cordova-plugin-file/RELEASENOTES.md | 496 ++++ .../cordova-plugin-file/doc/plugins.md | 120 + .../plugins/cordova-plugin-file/package.json | 58 + .../plugins/cordova-plugin-file/plugin.xml | 260 +++ .../src/android/AssetFilesystem.java | 294 +++ .../src/android/ContentFilesystem.java | 223 ++ .../src/android/DirectoryManager.java | 134 ++ .../src/android/EncodingException.java | 29 + .../src/android/FileExistsException.java | 29 + .../src/android/FileUtils.java | 1225 ++++++++++ .../src/android/Filesystem.java | 331 +++ .../android/InvalidModificationException.java | 30 + .../src/android/LocalFilesystem.java | 513 +++++ .../src/android/LocalFilesystemURL.java | 64 + .../NoModificationAllowedException.java | 29 + .../src/android/PendingRequests.java | 94 + .../src/android/TypeMismatchException.java | 30 + .../src/android/build-extras.gradle | 47 + .../src/browser/FileProxy.js | 1059 +++++++++ .../src/ios/CDVAssetLibraryFilesystem.h | 30 + .../src/ios/CDVAssetLibraryFilesystem.m | 253 ++ .../cordova-plugin-file/src/ios/CDVFile.h | 157 ++ .../cordova-plugin-file/src/ios/CDVFile.m | 1119 +++++++++ .../src/ios/CDVLocalFilesystem.h | 32 + .../src/ios/CDVLocalFilesystem.m | 750 ++++++ .../cordova-plugin-file/src/osx/CDVFile.h | 189 ++ .../cordova-plugin-file/src/osx/CDVFile.m | 1056 +++++++++ .../src/osx/CDVLocalFilesystem.h | 32 + .../src/osx/CDVLocalFilesystem.m | 733 ++++++ .../src/windows/FileProxy.js | 1190 ++++++++++ .../cordova-plugin-file/tests/package.json | 17 + .../cordova-plugin-file/tests/plugin.xml | 43 + .../src/android/TestContentProvider.java | 93 + .../tests/tests.js.REMOVED.git-id | 1 + .../www/fixtures/asset-test/asset-test.txt | 1 + .../cordova-plugin-file/types/index.d.ts | 378 +++ .../cordova-plugin-file/www/DirectoryEntry.js | 117 + .../www/DirectoryReader.js | 72 + .../plugins/cordova-plugin-file/www/Entry.js | 260 +++ .../plugins/cordova-plugin-file/www/File.js | 78 + .../cordova-plugin-file/www/FileEntry.js | 92 + .../cordova-plugin-file/www/FileError.js | 46 + .../cordova-plugin-file/www/FileReader.js | 298 +++ .../cordova-plugin-file/www/FileSystem.js | 55 + .../www/FileUploadOptions.js | 41 + .../www/FileUploadResult.js | 30 + .../cordova-plugin-file/www/FileWriter.js | 325 +++ .../plugins/cordova-plugin-file/www/Flags.js | 36 + .../www/LocalFileSystem.js | 23 + .../cordova-plugin-file/www/Metadata.js | 40 + .../cordova-plugin-file/www/ProgressEvent.js | 67 + .../www/android/FileSystem.js | 48 + .../www/browser/FileSystem.js | 30 + .../www/browser/Preparing.js | 192 ++ .../www/browser/isChrome.js | 26 + .../www/fileSystemPaths.js | 62 + .../www/fileSystems-roots.js | 46 + .../cordova-plugin-file/www/fileSystems.js | 25 + .../cordova-plugin-file/www/ios/FileSystem.js | 29 + .../cordova-plugin-file/www/osx/FileSystem.js | 29 + .../www/requestFileSystem.js | 81 + .../www/resolveLocalFileSystemURI.js | 91 + .../CONTRIBUTING.md | 37 + .../cordova-plugin-geolocation/LICENSE | 202 ++ .../plugins/cordova-plugin-geolocation/NOTICE | 5 + .../cordova-plugin-geolocation/README.md | 781 +++++++ .../RELEASENOTES.md | 234 ++ .../cordova-plugin-geolocation/package.json | 42 + .../cordova-plugin-geolocation/plugin.xml | 123 + .../src/android/Geolocation.java | 107 + .../src/ios/CDVLocation.h | 70 + .../src/ios/CDVLocation.m | 374 +++ .../src/windows/GeolocationProxy.js | 206 ++ .../www/Coordinates.js | 69 + .../www/Position.js | 41 + .../www/PositionError.js | 38 + .../www/android/geolocation.js | 71 + .../www/geolocation.js | 216 ++ .../plugins/cordova-plugin-insomnia/README.md | 148 ++ .../cordova-plugin-insomnia/package.json | 39 + .../cordova-plugin-insomnia/plugin.xml | 74 + .../nl/xservices/plugins/Insomnia.java | 47 + .../src/browser/Insomnia.js | 10 + .../src/firefoxos/insomnia.js | 16 + .../src/ios/Insomnia.h | 9 + .../src/ios/Insomnia.m | 32 + .../src/windows/InsomniaProxy.js | 48 + .../src/wp8/Insomnia.cs | 19 + .../cordova-plugin-insomnia/www/Insomnia.js | 21 + .../plugins/cordova-plugin-keyboard/README.md | 296 +++ .../cordova-plugin-keyboard/package.json | 34 + .../cordova-plugin-keyboard/plugin.xml | 40 + .../src/android/Keyboard.java | 39 + .../src/ios/CDVKeyboard.h | 39 + .../src/ios/CDVKeyboard.m | 285 +++ .../cordova-plugin-keyboard/www/keyboard.js | 106 + .../CONTRIBUTING.md | 37 + .../cordova-plugin-media-capture/LICENSE | 202 ++ .../cordova-plugin-media-capture/NOTICE | 5 + .../cordova-plugin-media-capture/README.md | 628 +++++ .../RELEASENOTES.md | 217 ++ .../cordova-plugin-media-capture/package.json | 59 + .../cordova-plugin-media-capture/plugin.xml | 136 ++ .../src/android/Capture.java | 588 +++++ .../src/android/FileHelper.java | 60 + .../src/android/PendingRequests.java | 228 ++ .../src/browser/CaptureProxy.js | 233 ++ .../src/ios/CDVCapture.bundle/controls_bg.png | Bin 0 -> 955 bytes .../ios/CDVCapture.bundle/controls_bg@2x.png | Bin 0 -> 971 bytes .../CDVCapture.bundle/controls_bg@2x~ipad.png | Bin 0 -> 2858 bytes .../CDVCapture.bundle/controls_bg~ipad.png | Bin 0 -> 969 bytes .../de.lproj/Localizable.strings | 28 + .../en.lproj/Localizable.strings | 27 + .../es.lproj/Localizable.strings | 27 + ...crophone-568h@2x~iphone.png.REMOVED.git-id | 1 + .../src/ios/CDVCapture.bundle/microphone.png | Bin 0 -> 72226 bytes .../microphone@2x.png.REMOVED.git-id | 1 + .../microphone@2x~ipad.png.REMOVED.git-id | 1 + .../microphone~ipad.png.REMOVED.git-id | 1 + .../ios/CDVCapture.bundle/record_button.png | Bin 0 -> 5852 bytes .../CDVCapture.bundle/record_button@2x.png | Bin 0 -> 13875 bytes .../record_button@2x~ipad.png | Bin 0 -> 15822 bytes .../CDVCapture.bundle/record_button~ipad.png | Bin 0 -> 7547 bytes .../ios/CDVCapture.bundle/recording_bg.png | Bin 0 -> 973 bytes .../ios/CDVCapture.bundle/recording_bg@2x.png | Bin 0 -> 990 bytes .../recording_bg@2x~ipad.png | Bin 0 -> 1026 bytes .../CDVCapture.bundle/recording_bg~ipad.png | Bin 0 -> 996 bytes .../se.lproj/Localizable.strings | 28 + .../src/ios/CDVCapture.bundle/stop_button.png | Bin 0 -> 5514 bytes .../ios/CDVCapture.bundle/stop_button@2x.png | Bin 0 -> 12965 bytes .../CDVCapture.bundle/stop_button@2x~ipad.png | Bin 0 -> 14474 bytes .../CDVCapture.bundle/stop_button~ipad.png | Bin 0 -> 7119 bytes .../src/ios/CDVCapture.h | 119 + .../src/ios/CDVCapture.m | 979 ++++++++ .../src/windows/CaptureProxy.js | 488 ++++ .../src/windows/MediaFile.js | 65 + .../tests/package.json | 14 + .../tests/plugin.xml | 33 + .../tests/tests.js | 358 +++ .../types/index.d.ts | 168 ++ .../www/CaptureAudioOptions.js | 32 + .../www/CaptureError.js | 42 + .../www/CaptureImageOptions.js | 30 + .../www/CaptureVideoOptions.js | 34 + .../www/ConfigurationData.js | 36 + .../www/MediaFile.js | 55 + .../www/MediaFileData.js | 39 + .../www/android/init.js | 44 + .../www/capture.js | 82 + .../www/helpers.js | 44 + .../plugins/cordova-plugin-media/.jshintrc | 17 + .../cordova-plugin-media/CONTRIBUTING.md | 37 + .../plugins/cordova-plugin-media/LICENSE | 202 ++ .../plugins/cordova-plugin-media/NOTICE | 5 + .../plugins/cordova-plugin-media/README.md | 696 ++++++ .../cordova-plugin-media/RELEASENOTES.md | 275 +++ .../plugins/cordova-plugin-media/package.json | 53 + .../plugins/cordova-plugin-media/plugin.xml | 100 + .../src/android/AudioHandler.java | 568 +++++ .../src/android/AudioPlayer.java | 760 +++++++ .../src/android/FileHelper.java | 38 + .../cordova-plugin-media/src/ios/CDVSound.h | 124 + .../cordova-plugin-media/src/ios/CDVSound.m | 1010 ++++++++ .../src/windows/MediaProxy.js | 410 ++++ .../cordova-plugin-media/tests/package.json | 14 + .../cordova-plugin-media/tests/plugin.xml | 29 + .../cordova-plugin-media/tests/tests.js | 1173 ++++++++++ .../cordova-plugin-media/types/index.d.ts | 84 + .../plugins/cordova-plugin-media/www/Media.js | 257 +++ .../cordova-plugin-media/www/MediaError.js | 55 + .../cordova-plugin-media/www/browser/Media.js | 293 +++ .../CONTRIBUTING.md | 37 + .../LICENSE | 202 ++ .../cordova-plugin-network-information/NOTICE | 8 + .../README.md | 315 +++ .../RELEASENOTES.md | 214 ++ .../package.json | 46 + .../plugin.xml | 87 + .../src/android/NetworkManager.java | 297 +++ .../src/browser/network.js | 46 + .../src/ios/CDVConnection.h | 34 + .../src/ios/CDVConnection.m | 162 ++ .../src/ios/CDVReachability.h | 81 + .../src/ios/CDVReachability.m | 237 ++ .../src/windows/NetworkInfoProxy.js | 81 + .../types/index.d.ts | 62 + .../www/Connection.js | 34 + .../www/network.js | 91 + .../cordova-plugin-screen-orientation/LICENSE | 202 ++ .../README.md | 122 + .../RELEASENOTES.md | 100 + .../package.json | 48 + .../plugin.xml | 65 + .../src/android/CDVOrientation.java | 98 + .../src/ios/CDVOrientation.h | 35 + .../src/ios/CDVOrientation.m | 99 + .../src/windows/CDVOrientationProxy.js | 62 + .../tests/package.json | 14 + .../tests/plugin.xml | 31 + .../tests/tests.js | 161 ++ .../www/screenorientation.js | 154 ++ .../CONTRIBUTING.md | 37 + .../cordova-plugin-splashscreen/LICENSE | 202 ++ .../cordova-plugin-splashscreen/NOTICE | 5 + .../cordova-plugin-splashscreen/README.md | 550 +++++ .../RELEASENOTES.md | 271 +++ .../cordova-plugin-splashscreen/package.json | 48 + .../cordova-plugin-splashscreen/plugin.xml | 73 + .../src/android/SplashScreen.java | 413 ++++ .../src/browser/SplashScreenProxy.js | 168 ++ .../src/windows/SplashScreenProxy.js | 35 + .../types/index.d.ts | 17 + .../www/splashscreen.js | 33 + .../cordova-plugin-statusbar/.jshintrc | 16 + .../cordova-plugin-statusbar/CONTRIBUTING.md | 37 + .../plugins/cordova-plugin-statusbar/LICENSE | 202 ++ .../plugins/cordova-plugin-statusbar/NOTICE | 5 + .../cordova-plugin-statusbar/README.md | 341 +++ .../cordova-plugin-statusbar/RELEASENOTES.md | 191 ++ .../cordova-plugin-statusbar/package.json | 52 + .../cordova-plugin-statusbar/plugin.xml | 99 + .../src/android/StatusBar.java | 276 +++ .../src/browser/StatusBarProxy.js | 50 + .../src/ios/CDVStatusBar.h | 50 + .../src/ios/CDVStatusBar.m | 479 ++++ .../src/windows/StatusBarProxy.js | 114 + .../src/wp/StatusBar.cs | 141 ++ .../tests/package.json | 14 + .../cordova-plugin-statusbar/tests/plugin.xml | 31 + .../cordova-plugin-statusbar/tests/tests.js | 151 ++ .../cordova-plugin-statusbar/types/index.d.ts | 81 + .../cordova-plugin-statusbar/www/statusbar.js | 113 + .../plugins/cordova-plugin-ubx/package.json | 11 + .../plugins/cordova-plugin-ubx/plugin.xml | 20 + .../src/android/Uplugin.java | 184 ++ .../src/android/platform_sdk_v4.1.0326.jar | Bin 0 -> 44910 bytes .../plugins/cordova-plugin-ubx/www/Uplugin.js | 9 + .../cordova-plugin-vibration/.appveyor.yml | 28 + .../cordova-plugin-vibration/.eslintrc.yml | 10 + .../.github/ISSUE_TEMPLATE.md | 42 + .../.github/ISSUE_TEMPLATE/BUG_REPORT.md | 50 + .../.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md | 29 + .../ISSUE_TEMPLATE/SUPPORT_QUESTION.md | 27 + .../.github/PULL_REQUEST_TEMPLATE.md | 35 + .../cordova-plugin-vibration/.ratignore | 2 + .../cordova-plugin-vibration/.travis.yml | 115 + .../cordova-plugin-vibration/CONTRIBUTING.md | 37 + .../plugins/cordova-plugin-vibration/LICENSE | 202 ++ .../plugins/cordova-plugin-vibration/NOTICE | 7 + .../cordova-plugin-vibration/README.md | 136 ++ .../cordova-plugin-vibration/RELEASENOTES.md | 198 ++ .../cordova-plugin-vibration/package.json | 51 + .../cordova-plugin-vibration/plugin.xml | 79 + .../src/browser/Vibration.js | 27 + .../src/ios/CDVVibration.h | 29 + .../src/ios/CDVVibration.m | 29 + .../Vibration/Properties/AssemblyInfo.cs | 44 + .../src/windows/Vibration/Vibration.cs | 55 + .../src/windows/Vibration/Vibration.csproj | 70 + .../src/windows/VibrationProxy.js | 253 ++ .../tests/package.json | 14 + .../cordova-plugin-vibration/tests/plugin.xml | 31 + .../cordova-plugin-vibration/tests/tests.js | 213 ++ .../cordova-plugin-vibration/types/index.d.ts | 22 + .../cordova-plugin-vibration/www/vibration.js | 81 + .../cordova-plugin-whitelist/CONTRIBUTING.md | 37 + .../plugins/cordova-plugin-whitelist/LICENSE | 202 ++ .../plugins/cordova-plugin-whitelist/NOTICE | 5 + .../cordova-plugin-whitelist/README.md | 185 ++ .../cordova-plugin-whitelist/RELEASENOTES.md | 101 + .../cordova-plugin-whitelist/package.json | 33 + .../cordova-plugin-whitelist/plugin.xml | 44 + .../src/android/WhitelistPlugin.java | 161 ++ .../plugins/es6-promise-plugin/CHANGELOG.md | 9 + .../plugins/es6-promise-plugin/LICENSE | 21 + .../plugins/es6-promise-plugin/README.md | 36 + .../plugins/es6-promise-plugin/package.json | 25 + .../plugins/es6-promise-plugin/plugin.xml | 27 + .../plugins/es6-promise-plugin/www/promise.js | 10 + templates/src-cordova/plugins/fetch.json | 10 + .../plugins/phonegap-nfc/CHANGES.txt | 118 + .../plugins/phonegap-nfc/LICENSE.txt | 21 + .../plugins/phonegap-nfc/README.md | 1352 +++++++++++ .../doc/GettingStartedBlackBerry10.md | 64 + .../phonegap-nfc/doc/GettingStartedCLI.md | 71 + .../doc/GettingStartedPhoneGapBuild.md | 77 + .../doc/phonegap_build.png.REMOVED.git-id | 1 + .../phonegap-nfc/doc/read_tag_1_basic_app.png | Bin 0 -> 19688 bytes .../phonegap-nfc/doc/read_tag_2_dump_tag.png | Bin 0 -> 32218 bytes .../doc/read_tag_3_payload_as_string.png | Bin 0 -> 18191 bytes .../plugins/phonegap-nfc/package.json | 36 + .../plugins/phonegap-nfc/plugin.xml | 147 ++ .../nfc/plugin/NfcPlugin.java | 1016 +++++++++ .../com/chariotsolutions/nfc/plugin/Util.java | 140 ++ .../phonegap-nfc/src/blackberry10/index.js | 148 ++ .../plugins/phonegap-nfc/src/ios/NfcPlugin.h | 40 + .../plugins/phonegap-nfc/src/ios/NfcPlugin.m | 622 +++++ .../phonegap-nfc/src/webworks/build.xml | 24 + .../nfc/plugin/NfcPlugin.java | 341 +++ .../com/chariotsolutions/nfc/plugin/Util.java | 137 ++ .../phonegap-nfc/src/windows-phone-8/Ndef.cs | 191 ++ .../src/windows-phone-8/NfcPlugin.cs | 200 ++ .../phonegap-nfc/src/windows/nfc-plugin.js | 285 +++ .../plugins/phonegap-nfc/tests/package.json | 14 + .../plugins/phonegap-nfc/tests/plugin.xml | 11 + .../plugins/phonegap-nfc/tests/tests.js | 135 ++ .../www/phonegap-nfc-blackberry.js | 76 + .../plugins/phonegap-nfc/www/phonegap-nfc.js | 912 ++++++++ .../res/android/icon-144-xxhdpi.png | Bin 0 -> 6489 bytes .../res/android/icon-192-xxxhdpi.png | Bin 0 -> 9355 bytes .../src-cordova/res/android/icon-36-ldpi.png | Bin 0 -> 1370 bytes .../src-cordova/res/android/icon-48-mdpi.png | Bin 0 -> 1899 bytes .../src-cordova/res/android/icon-72-hdpi.png | Bin 0 -> 2994 bytes .../src-cordova/res/android/icon-96-xhdpi.png | Bin 0 -> 4205 bytes .../res/ios/icon-1024.png.REMOVED.git-id | 1 + templates/src-cordova/res/ios/icon-167.png | Bin 0 -> 7998 bytes templates/src-cordova/res/ios/icon-2x.png | Bin 0 -> 5091 bytes templates/src-cordova/res/ios/icon-40-2x.png | Bin 0 -> 3435 bytes templates/src-cordova/res/ios/icon-40.png | Bin 0 -> 1567 bytes templates/src-cordova/res/ios/icon-50-2x.png | Bin 0 -> 4337 bytes templates/src-cordova/res/ios/icon-50.png | Bin 0 -> 1986 bytes templates/src-cordova/res/ios/icon-60-2x.png | Bin 0 -> 5364 bytes templates/src-cordova/res/ios/icon-60-3x.png | Bin 0 -> 8668 bytes templates/src-cordova/res/ios/icon-60.png | Bin 0 -> 2436 bytes templates/src-cordova/res/ios/icon-72-2x.png | Bin 0 -> 6489 bytes templates/src-cordova/res/ios/icon-72.png | Bin 0 -> 2994 bytes .../src-cordova/res/ios/icon-83.5-2x.png | Bin 0 -> 7998 bytes templates/src-cordova/res/ios/icon.png | Bin 0 -> 2291 bytes .../screen-hdpi-landscape.png.REMOVED.git-id | 1 + .../screen-hdpi-portrait.png.REMOVED.git-id | 1 + .../screen-ldpi-landscape.png.REMOVED.git-id | 1 + .../screen-ldpi-portrait.png.REMOVED.git-id | 1 + .../screen-mdpi-landscape.png.REMOVED.git-id | 1 + .../screen-mdpi-portrait.png.REMOVED.git-id | 1 + .../screen-xhdpi-landscape.png.REMOVED.git-id | 1 + .../screen-xhdpi-portrait.png.REMOVED.git-id | 1 + ...screen-xxhdpi-landscape.png.REMOVED.git-id | 1 + .../screen-xxhdpi-portrait.png.REMOVED.git-id | 1 + ...creen-xxxhdpi-landscape.png.REMOVED.git-id | 1 + ...screen-xxxhdpi-portrait.png.REMOVED.git-id | 1 + ...ult@2x~universal~anyany.png.REMOVED.git-id | 1 + ...creen-ipad-landscape-2x.png.REMOVED.git-id | 1 + .../screen-ipad-landscape2.png.REMOVED.git-id | 1 + ...screen-ipad-portrait-2x.png.REMOVED.git-id | 1 + .../screen-ipad-portrait.png.REMOVED.git-id | 1 + ...een-iphone-landscape-2x.png.REMOVED.git-id | 1 + ...screen-iphone-landscape.png.REMOVED.git-id | 1 + ...-iphone-portrait-2x.png.png.REMOVED.git-id | 1 + ...iphone-portrait-568h_2x.png.REMOVED.git-id | 1 + ...een-iphone-portrait.png.png.REMOVED.git-id | 1 + templates/src-cordova/www/index.html | 35 + templates/src-electron/electron-flag.d.ts | 9 + .../icons/icon.icns.REMOVED.git-id | 1 + templates/src-electron/icons/icon.ico | Bin 0 -> 4123 bytes .../src-electron/icons/linux-512x512.png | Bin 0 -> 25932 bytes .../main-process/electron-main.dev.js | 19 + .../main-process/electron-main.js | 136 ++ .../main-process/electron-preload.js | 0 templates/src/App.vue | 10 + templates/src/assets/quasar-logo-full.svg | 191 ++ templates/src/assets/sad.svg | 1 + templates/src/boot/.gitkeep | 0 templates/src/boot/axios_request.js | 601 +++++ templates/src/boot/bus.js | 2 + templates/src/boot/i18n.js | 26 + templates/src/boot/notify_default.js | 7 + templates/src/boot/quasar-lang-pack.js | 19 + templates/src/boot/vueMain.js | 12 + templates/src/components/lottie-web-cimo.vue | 39 + .../components/welcome.json.REMOVED.git-id | 1 + .../xlsx.full.min.js.REMOVED.git-id | 1 + templates/src/css/app.sass | 88 + templates/src/css/quasar.variables.sass | 24 + templates/src/db/database.js | 11 + templates/src/db/schema.js | 11 + templates/src/i18n/ar/index.js | 554 +++++ templates/src/i18n/de/index.js | 554 +++++ templates/src/i18n/en-us/index.js | 553 +++++ templates/src/i18n/fr/index.js | 554 +++++ templates/src/i18n/index.js | 25 + templates/src/i18n/it/index.js | 554 +++++ templates/src/i18n/ja/index.js | 552 +++++ templates/src/i18n/pt/index.js | 554 +++++ templates/src/i18n/ru/index.js | 554 +++++ templates/src/i18n/sp/index.js | 554 +++++ templates/src/i18n/zh-hans/index.js | 554 +++++ templates/src/i18n/zh-hant/index.js | 552 +++++ templates/src/index.template.html | 25 + templates/src/layouts/MainLayout.vue | 1647 ++++++++++++++ templates/src/layouts/MainLayoutMobile.vue | 1389 +++++++++++ .../src/layouts/MainLayoutScannerUrovo.vue | 515 +++++ .../src/layouts/MainLayoutScannerZebra.vue | 515 +++++ templates/src/layouts/initial.vue | 55 + templates/src/pages/Error404.vue | 25 + templates/src/pages/Index.vue | 73 + templates/src/pages/IndexMobile.vue | 76 + templates/src/pages/IndexScanner.vue | 85 + templates/src/pages/baseinfo/baseinfo.vue | 39 + templates/src/pages/baseinfo/company.vue | 541 +++++ templates/src/pages/baseinfo/customer.vue | 609 +++++ templates/src/pages/baseinfo/supplier.vue | 609 +++++ templates/src/pages/customerdn/customer.vue | 36 + .../src/pages/customerdn/customerdnlist.vue | 320 +++ templates/src/pages/customerdn/pod.vue | 245 ++ templates/src/pages/dashboard/dashboard.vue | 52 + templates/src/pages/dashboard/inbound.vue | 115 + .../pages/dashboard/inboundAndOutbound.vue | 197 ++ templates/src/pages/dashboard/outbound.vue | 115 + .../src/pages/downloadcenter/download.vue | 67 + .../pages/downloadcenter/downloadbinlist.vue | 328 +++ .../downloadcenter/downloadgoodslist.vue | 366 +++ .../pages/downloadcenter/downloadinbound.vue | 416 ++++ .../pages/downloadcenter/downloadoutbound.vue | 429 ++++ .../downloadcenter/downloadstocklist.vue | 368 +++ .../src/pages/driverlist/dispatchlist.vue | 222 ++ templates/src/pages/driverlist/driver.vue | 43 + templates/src/pages/driverlist/driverlist.vue | 464 ++++ templates/src/pages/finance/capitallist.vue | 533 +++++ templates/src/pages/finance/finance.vue | 36 + templates/src/pages/finance/freight.vue | 578 +++++ templates/src/pages/goods/goods.vue | 54 + templates/src/pages/goods/goodsbrand.vue | 429 ++++ templates/src/pages/goods/goodsclass.vue | 429 ++++ templates/src/pages/goods/goodscolor.vue | 429 ++++ templates/src/pages/goods/goodslist.vue | 1037 +++++++++ templates/src/pages/goods/goodsorigin.vue | 431 ++++ templates/src/pages/goods/goodsshape.vue | 429 ++++ templates/src/pages/goods/goodsspecs.vue | 429 ++++ templates/src/pages/goods/goodsunit.vue | 429 ++++ templates/src/pages/inbound/asn.vue | 1394 ++++++++++++ templates/src/pages/inbound/asnfinish.vue | 246 ++ templates/src/pages/inbound/inbound.vue | 54 + templates/src/pages/inbound/more.vue | 237 ++ .../src/pages/inbound/predeliverystock.vue | 237 ++ templates/src/pages/inbound/preloadstock.vue | 237 ++ templates/src/pages/inbound/presortstock.vue | 237 ++ templates/src/pages/inbound/shortage.vue | 237 ++ templates/src/pages/inbound/sortstock.vue | 365 +++ .../src/pages/mobile/baseinfo/baseinfo.vue | 36 + .../src/pages/mobile/baseinfo/customer.vue | 499 ++++ .../src/pages/mobile/baseinfo/supplier.vue | 485 ++++ .../src/pages/mobile/dashboard/dashboard.vue | 34 + .../mobile/dashboard/inboundAndOutbound.vue | 194 ++ .../pages/mobile/driverlist/dispatchlist.vue | 219 ++ .../src/pages/mobile/driverlist/driver.vue | 43 + .../pages/mobile/driverlist/driverlist.vue | 370 +++ .../src/pages/mobile/finance/capitallist.vue | 520 +++++ .../src/pages/mobile/finance/finance.vue | 36 + .../src/pages/mobile/finance/freight.vue | 570 +++++ templates/src/pages/mobile/goods/goods.vue | 33 + .../src/pages/mobile/goods/goodslist.vue | 1031 +++++++++ templates/src/pages/mobile/inbound/asn.vue | 758 ++++++ .../src/pages/mobile/inbound/asnfinish.vue | 243 ++ .../src/pages/mobile/inbound/inbound.vue | 36 + templates/src/pages/mobile/outbound/dn.vue | 989 ++++++++ .../src/pages/mobile/outbound/outbound.vue | 36 + .../pages/mobile/outbound/shippedstock.vue | 230 ++ templates/src/pages/mobile/staff/staff.vue | 36 + .../src/pages/mobile/staff/stafflist.vue | 544 +++++ .../mobile/staff/stafflist_check_code.vue | 221 ++ templates/src/pages/mobile/stock/stock.vue | 36 + .../src/pages/mobile/stock/stockbinlist.vue | 340 +++ .../src/pages/mobile/stock/stocklist.vue | 230 ++ .../src/pages/mobile/warehouse/binset.vue | 431 ++++ .../src/pages/mobile/warehouse/warehouse.vue | 36 + .../pages/mobile/warehouse/warehouseset.vue | 424 ++++ templates/src/pages/outbound/backorder.vue | 297 +++ templates/src/pages/outbound/dn.vue | 1801 +++++++++++++++ templates/src/pages/outbound/freshorder.vue | 237 ++ templates/src/pages/outbound/neworder.vue | 237 ++ templates/src/pages/outbound/outbound.vue | 57 + templates/src/pages/outbound/pickedstock.vue | 233 ++ templates/src/pages/outbound/pickinglist.vue | 233 ++ templates/src/pages/outbound/pickstock.vue | 237 ++ templates/src/pages/outbound/pod.vue | 245 ++ templates/src/pages/outbound/shippedstock.vue | 233 ++ templates/src/pages/scan/cyclecount.vue | 277 +++ templates/src/pages/scan/goodslist.vue | 286 +++ templates/src/pages/scan/locationquery.vue | 185 ++ templates/src/pages/scan/movetobin.vue | 351 +++ templates/src/pages/scan/picking.vue | 259 +++ templates/src/pages/scan/shipping.vue | 283 +++ templates/src/pages/scan/sorting.vue | 216 ++ templates/src/pages/scan/stocklist.vue | 159 ++ templates/src/pages/scan/uptobin.vue | 320 +++ templates/src/pages/scan/urovoscan.vue | 429 ++++ templates/src/pages/scan/zebrascan.vue | 592 +++++ templates/src/pages/shopid/douyin.vue | 438 ++++ templates/src/pages/shopid/shopid.vue | 33 + templates/src/pages/staff/staff.vue | 39 + templates/src/pages/staff/stafflist.vue | 746 ++++++ .../src/pages/staff/stafflist_check_code.vue | 224 ++ templates/src/pages/staff/stafftype.vue | 191 ++ templates/src/pages/stock/cyclecount.vue | 249 ++ .../src/pages/stock/cyclecountrecorder.vue | 273 +++ templates/src/pages/stock/emptybin.vue | 229 ++ templates/src/pages/stock/occupiedbin.vue | 229 ++ templates/src/pages/stock/stock.vue | 48 + templates/src/pages/stock/stockbinlist.vue | 343 +++ templates/src/pages/stock/stocklist.vue | 233 ++ templates/src/pages/supplierasn/supplier.vue | 36 + .../pages/supplierasn/supplierasnfinish.vue | 245 ++ .../src/pages/supplierasn/supplierasnlist.vue | 313 +++ .../src/pages/uploadcenter/addupload.vue | 165 ++ .../pages/uploadcenter/initializeupload.vue | 175 ++ templates/src/pages/uploadcenter/upload.vue | 42 + .../src/pages/uploadcenter/uploadlist.vue | 168 ++ templates/src/pages/warehouse/binset.vue | 566 +++++ templates/src/pages/warehouse/binsize.vue | 554 +++++ templates/src/pages/warehouse/property.vue | 197 ++ templates/src/pages/warehouse/warehouse.vue | 42 + .../src/pages/warehouse/warehouseset.vue | 533 +++++ templates/src/router/index.js | 47 + templates/src/router/routes.js | 708 ++++++ templates/src/store/bardata/actions.js | 4 + templates/src/store/bardata/getters.js | 4 + templates/src/store/bardata/index.js | 12 + templates/src/store/bardata/mutations.js | 3 + templates/src/store/bardata/state.js | 5 + templates/src/store/fabchange/actions.js | 4 + templates/src/store/fabchange/getters.js | 4 + templates/src/store/fabchange/index.js | 12 + templates/src/store/fabchange/mutations.js | 3 + templates/src/store/fabchange/state.js | 5 + templates/src/store/index.js | 33 + templates/src/store/scanedsolve/actions.js | 4 + templates/src/store/scanedsolve/getters.js | 4 + templates/src/store/scanedsolve/index.js | 12 + templates/src/store/scanedsolve/mutations.js | 3 + templates/src/store/scanedsolve/state.js | 5 + templates/src/store/store-flag.d.ts | 10 + templates/yarn.lock.REMOVED.git-id | 1 + throttle/__init__.py | 0 throttle/admin.py | 4 + throttle/apps.py | 4 + throttle/filter.py | 0 throttle/migrations/__init__.py | 0 throttle/models.py | 18 + throttle/serializers.py | 0 throttle/tests.py | 0 throttle/urls.py | 0 throttle/views.py | 0 uploadfile/__init__.py | 0 uploadfile/admin.py | 0 uploadfile/apps.py | 4 + uploadfile/migrations/__init__.py | 0 uploadfile/models.py | 0 uploadfile/serializers.py | 0 uploadfile/tests.py | 0 uploadfile/urls.py | 15 + uploadfile/views.py | 1037 +++++++++ userlogin/__init__.py | 0 userlogin/admin.py | 0 userlogin/apps.py | 4 + userlogin/migrations/__init__.py | 0 userlogin/models.py | 0 userlogin/tests.py | 0 userlogin/urls.py | 6 + userlogin/views.py | 40 + userprofile/__init__.py | 0 userprofile/admin.py | 4 + userprofile/apps.py | 4 + userprofile/migrations/__init__.py | 0 userprofile/models.py | 18 + userprofile/tests.py | 0 userprofile/views.py | 0 userregister/__init__.py | 0 userregister/admin.py | 0 userregister/apps.py | 4 + userregister/migrations/__init__.py | 0 userregister/models.py | 0 userregister/tests.py | 0 userregister/urls.py | 6 + userregister/views.py | 89 + utils/__init__.py | 0 utils/auth.py | 20 + utils/datasolve.py | 115 + utils/fbmsg.py | 280 +++ utils/logs.py | 5 + utils/md5.py | 9 + utils/my_exceptions.py | 21 + utils/page.py | 9 + utils/permission.py | 20 + utils/throttle.py | 151 ++ utils/websocket.py | 59 + warehouse/__init__.py | 0 warehouse/admin.py | 4 + warehouse/apps.py | 4 + warehouse/filter.py | 18 + warehouse/migrations/__init__.py | 0 warehouse/models.py | 22 + warehouse/serializers.py | 65 + warehouse/tests.py | 0 warehouse/urls.py | 12 + warehouse/views.py | 121 + 二次开发合作商名单.md | 10 + 适配的硬件清单.pdf.REMOVED.git-id | 1 + 1836 files changed, 167831 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 Android-APP Build.md create mode 100644 Centos Build(CN).md create mode 100644 Centos Build(EN).md create mode 100644 Configure GreaterWMS for the Android environment on Windows .pdf.REMOVED.git-id create mode 100644 GreaterWMS V2 Web端脑图(客户端和APP客户端都可以通用).xmind.REMOVED.git-id create mode 100644 LICENSE create mode 100644 Package and sign apk.pdf.REMOVED.git-id create mode 100644 README.md create mode 100644 README_zh_Hans.md create mode 100644 Regarding the Windows system configuration of the Android environment revision version of GreaterWMS.pdf.REMOVED.git-id create mode 100644 Ubuntu Build(CN).md create mode 100644 Ubuntu Build(EN).md create mode 100644 Wechat.png.REMOVED.git-id create mode 100644 Windows10 Build(CN).md create mode 100644 Zebra-Profile.pdf.REMOVED.git-id create mode 100644 a.适配的硬件清单/GreaterWMS系统硬件清单(上海四号位信息科技有限公司20220305).pdf.REMOVED.git-id create mode 100644 asn/__init__.py create mode 100644 asn/admin.py create mode 100644 asn/apps.py create mode 100644 asn/files.py create mode 100644 asn/filter.py create mode 100644 asn/migrations/__init__.py create mode 100644 asn/models.py create mode 100644 asn/page.py create mode 100644 asn/serializers.py create mode 100644 asn/tests.py create mode 100644 asn/urls.py create mode 100644 asn/views.py create mode 100644 binproperty/__init__.py create mode 100644 binproperty/admin.py create mode 100644 binproperty/apps.py create mode 100644 binproperty/filter.py create mode 100644 binproperty/migrations/__init__.py create mode 100644 binproperty/models.py create mode 100644 binproperty/serializers.py create mode 100644 binproperty/tests.py create mode 100644 binproperty/urls.py create mode 100644 binproperty/views.py create mode 100644 binset/__init__.py create mode 100644 binset/admin.py create mode 100644 binset/apps.py create mode 100644 binset/files.py create mode 100644 binset/filter.py create mode 100644 binset/migrations/__init__.py create mode 100644 binset/models.py create mode 100644 binset/page.py create mode 100644 binset/serializers.py create mode 100644 binset/tests.py create mode 100644 binset/urls.py create mode 100644 binset/views.py create mode 100644 binsize/__init__.py create mode 100644 binsize/admin.py create mode 100644 binsize/apps.py create mode 100644 binsize/files.py create mode 100644 binsize/filter.py create mode 100644 binsize/migrations/__init__.py create mode 100644 binsize/models.py create mode 100644 binsize/serializers.py create mode 100644 binsize/tests.py create mode 100644 binsize/urls.py create mode 100644 binsize/views.py create mode 100644 capital/__init__.py create mode 100644 capital/admin.py create mode 100644 capital/apps.py create mode 100644 capital/files.py create mode 100644 capital/filter.py create mode 100644 capital/migrations/__init__.py create mode 100644 capital/models.py create mode 100644 capital/serializers.py create mode 100644 capital/tests.py create mode 100644 capital/urls.py create mode 100644 capital/views.py create mode 100644 chat/__init__.py create mode 100644 chat/admin.py create mode 100644 chat/apps.py create mode 100644 chat/filter.py create mode 100644 chat/migrations/__init__.py create mode 100644 chat/models.py create mode 100644 chat/serializers.py create mode 100644 chat/tests.py create mode 100644 chat/urls.py create mode 100644 chat/views.py create mode 100644 company/__init__.py create mode 100644 company/admin.py create mode 100644 company/apps.py create mode 100644 company/filter.py create mode 100644 company/migrations/__init__.py create mode 100644 company/models.py create mode 100644 company/serializers.py create mode 100644 company/tests.py create mode 100644 company/urls.py create mode 100644 company/views.py create mode 100644 customer/__init__.py create mode 100644 customer/admin.py create mode 100644 customer/apps.py create mode 100644 customer/files.py create mode 100644 customer/filter.py create mode 100644 customer/migrations/__init__.py create mode 100644 customer/models.py create mode 100644 customer/serializers.py create mode 100644 customer/tests.py create mode 100644 customer/urls.py create mode 100644 customer/views.py create mode 100644 cyclecount/__init__.py create mode 100644 cyclecount/admin.py create mode 100644 cyclecount/apps.py create mode 100644 cyclecount/files.py create mode 100644 cyclecount/filter.py create mode 100644 cyclecount/migrations/__init__.py create mode 100644 cyclecount/models.py create mode 100644 cyclecount/page.py create mode 100644 cyclecount/serializers.py create mode 100644 cyclecount/tests.py create mode 100644 cyclecount/urls.py create mode 100644 cyclecount/views.py create mode 100644 dashboard/__init__.py create mode 100644 dashboard/admin.py create mode 100644 dashboard/apps.py create mode 100644 dashboard/migrations/__init__.py create mode 100644 dashboard/models.py create mode 100644 dashboard/tests.py create mode 100644 dashboard/urls.py create mode 100644 dashboard/views.py create mode 100644 dn/__init__.py create mode 100644 dn/admin.py create mode 100644 dn/apps.py create mode 100644 dn/files.py create mode 100644 dn/filter.py create mode 100644 dn/migrations/__init__.py create mode 100644 dn/models.py create mode 100644 dn/page.py create mode 100644 dn/serializers.py create mode 100644 dn/tests.py create mode 100644 dn/urls.py create mode 100644 dn/views.py.REMOVED.git-id create mode 100644 driver/__init__.py create mode 100644 driver/admin.py create mode 100644 driver/apps.py create mode 100644 driver/files.py create mode 100644 driver/filter.py create mode 100644 driver/migrations/__init__.py create mode 100644 driver/models.py create mode 100644 driver/serializers.py create mode 100644 driver/tests.py create mode 100644 driver/urls.py create mode 100644 driver/views.py create mode 100644 goods/__init__.py create mode 100644 goods/admin.py create mode 100644 goods/apps.py create mode 100644 goods/files.py create mode 100644 goods/filter.py create mode 100644 goods/migrations/__init__.py create mode 100644 goods/models.py create mode 100644 goods/page.py create mode 100644 goods/serializers.py create mode 100644 goods/tests.py create mode 100644 goods/urls.py create mode 100644 goods/views.py create mode 100644 goodsbrand/__init__.py create mode 100644 goodsbrand/admin.py create mode 100644 goodsbrand/apps.py create mode 100644 goodsbrand/filter.py create mode 100644 goodsbrand/migrations/__init__.py create mode 100644 goodsbrand/models.py create mode 100644 goodsbrand/serializers.py create mode 100644 goodsbrand/tests.py create mode 100644 goodsbrand/urls.py create mode 100644 goodsbrand/views.py create mode 100644 goodsclass/__init__.py create mode 100644 goodsclass/admin.py create mode 100644 goodsclass/apps.py create mode 100644 goodsclass/filter.py create mode 100644 goodsclass/migrations/__init__.py create mode 100644 goodsclass/models.py create mode 100644 goodsclass/serializers.py create mode 100644 goodsclass/tests.py create mode 100644 goodsclass/urls.py create mode 100644 goodsclass/views.py create mode 100644 goodscolor/__init__.py create mode 100644 goodscolor/admin.py create mode 100644 goodscolor/apps.py create mode 100644 goodscolor/filter.py create mode 100644 goodscolor/migrations/__init__.py create mode 100644 goodscolor/models.py create mode 100644 goodscolor/serializers.py create mode 100644 goodscolor/tests.py create mode 100644 goodscolor/urls.py create mode 100644 goodscolor/views.py create mode 100644 goodsorigin/__init__.py create mode 100644 goodsorigin/admin.py create mode 100644 goodsorigin/apps.py create mode 100644 goodsorigin/filter.py create mode 100644 goodsorigin/migrations/__init__.py create mode 100644 goodsorigin/models.py create mode 100644 goodsorigin/serializers.py create mode 100644 goodsorigin/tests.py create mode 100644 goodsorigin/urls.py create mode 100644 goodsorigin/views.py create mode 100644 goodsshape/__init__.py create mode 100644 goodsshape/admin.py create mode 100644 goodsshape/apps.py create mode 100644 goodsshape/filter.py create mode 100644 goodsshape/migrations/__init__.py create mode 100644 goodsshape/models.py create mode 100644 goodsshape/serializers.py create mode 100644 goodsshape/tests.py create mode 100644 goodsshape/urls.py create mode 100644 goodsshape/views.py create mode 100644 goodsspecs/__init__.py create mode 100644 goodsspecs/admin.py create mode 100644 goodsspecs/apps.py create mode 100644 goodsspecs/filter.py create mode 100644 goodsspecs/migrations/__init__.py create mode 100644 goodsspecs/models.py create mode 100644 goodsspecs/serializers.py create mode 100644 goodsspecs/tests.py create mode 100644 goodsspecs/urls.py create mode 100644 goodsspecs/views.py create mode 100644 goodsunit/__init__.py create mode 100644 goodsunit/admin.py create mode 100644 goodsunit/apps.py create mode 100644 goodsunit/filter.py create mode 100644 goodsunit/migrations/__init__.py create mode 100644 goodsunit/models.py create mode 100644 goodsunit/serializers.py create mode 100644 goodsunit/tests.py create mode 100644 goodsunit/urls.py create mode 100644 goodsunit/views.py create mode 100644 greaterwms/__init__.py create mode 100644 greaterwms/asgi.py create mode 100644 greaterwms/settings.py create mode 100644 greaterwms/urls.py create mode 100644 greaterwms/views.py create mode 100644 greaterwms/wsgi.py create mode 100644 manage.py create mode 100644 media/__init__.py create mode 100644 media/error.wav create mode 100644 media/scanned.mp3 create mode 100644 nginx.conf create mode 100644 operater document.pdf.REMOVED.git-id create mode 100644 payment/__init__.py create mode 100644 payment/admin.py create mode 100644 payment/apps.py create mode 100644 payment/files.py create mode 100644 payment/filter.py create mode 100644 payment/migrations/__init__.py create mode 100644 payment/models.py create mode 100644 payment/serializers.py create mode 100644 payment/tests.py create mode 100644 payment/urls.py create mode 100644 payment/views.py create mode 100644 requirements.txt create mode 100644 scanner/__init__.py create mode 100644 scanner/admin.py create mode 100644 scanner/apps.py create mode 100644 scanner/filter.py create mode 100644 scanner/migrations/__init__.py create mode 100644 scanner/models.py create mode 100644 scanner/serializers.py create mode 100644 scanner/tests.py create mode 100644 scanner/urls.py create mode 100644 scanner/views.py create mode 100644 shopid/__init__.py create mode 100644 shopid/admin.py create mode 100644 shopid/apps.py create mode 100644 shopid/files/douyinfiles.py create mode 100644 shopid/filter/__init__.py create mode 100644 shopid/filter/douyinfilter.py create mode 100644 shopid/migrations/__init__.py create mode 100644 shopid/models/__init__.py create mode 100644 shopid/models/douyinmodels.py create mode 100644 shopid/serializers/__init__.py create mode 100644 shopid/serializers/douyinserializers.py create mode 100644 shopid/tests.py create mode 100644 shopid/urls.py create mode 100644 shopid/views/__init__.py create mode 100644 shopid/views/doudian/__init__.py create mode 100644 shopid/views/doudian/doudian.py create mode 100644 shopid/views/doudian/proxy.py create mode 100644 shopid/views/doudian/sandbox.py create mode 100644 staff/__init__.py create mode 100644 staff/admin.py create mode 100644 staff/apps.py create mode 100644 staff/files.py create mode 100644 staff/filter.py create mode 100644 staff/migrations/__init__.py create mode 100644 staff/models.py create mode 100644 staff/serializers.py create mode 100644 staff/tests.py create mode 100644 staff/urls.py create mode 100644 staff/views.py create mode 100644 static/__init__.py create mode 100644 static/img/contact.png create mode 100644 static/img/dongtai.png create mode 100644 static/img/dongtai1.png create mode 100644 static/img/github.png create mode 100644 static/img/logo.png create mode 100644 static/img/logout.png create mode 100644 static/img/money.png create mode 100644 static/img/photo.png create mode 100644 static/img/profile.png create mode 100644 static/img/register.png create mode 100644 static/img/user.jpg create mode 100644 static/img/user.png create mode 100644 static/img/video.png create mode 100644 static_new/__init__.py create mode 100644 static_new/admin/css/autocomplete.css create mode 100644 static_new/admin/css/base.css create mode 100644 static_new/admin/css/changelists.css create mode 100644 static_new/admin/css/dashboard.css create mode 100644 static_new/admin/css/fonts.css create mode 100644 static_new/admin/css/forms.css create mode 100644 static_new/admin/css/login.css create mode 100644 static_new/admin/css/nav_sidebar.css create mode 100644 static_new/admin/css/responsive.css create mode 100644 static_new/admin/css/responsive_rtl.css create mode 100644 static_new/admin/css/rtl.css create mode 100644 static_new/admin/css/vendor/select2/LICENSE-SELECT2.md create mode 100644 static_new/admin/css/vendor/select2/select2.css create mode 100644 static_new/admin/css/vendor/select2/select2.min.css create mode 100644 static_new/admin/css/widgets.css create mode 100644 static_new/admin/fonts/LICENSE.txt create mode 100644 static_new/admin/fonts/README.txt create mode 100644 static_new/admin/fonts/Roboto-Bold-webfont.woff create mode 100644 static_new/admin/fonts/Roboto-Light-webfont.woff create mode 100644 static_new/admin/fonts/Roboto-Regular-webfont.woff create mode 100644 static_new/admin/img/LICENSE create mode 100644 static_new/admin/img/README.txt create mode 100644 static_new/admin/img/calendar-icons.svg create mode 100644 static_new/admin/img/gis/move_vertex_off.svg create mode 100644 static_new/admin/img/gis/move_vertex_on.svg create mode 100644 static_new/admin/img/icon-addlink.svg create mode 100644 static_new/admin/img/icon-alert.svg create mode 100644 static_new/admin/img/icon-calendar.svg create mode 100644 static_new/admin/img/icon-changelink.svg create mode 100644 static_new/admin/img/icon-clock.svg create mode 100644 static_new/admin/img/icon-deletelink.svg create mode 100644 static_new/admin/img/icon-no.svg create mode 100644 static_new/admin/img/icon-unknown-alt.svg create mode 100644 static_new/admin/img/icon-unknown.svg create mode 100644 static_new/admin/img/icon-viewlink.svg create mode 100644 static_new/admin/img/icon-yes.svg create mode 100644 static_new/admin/img/inline-delete.svg create mode 100644 static_new/admin/img/search.svg create mode 100644 static_new/admin/img/selector-icons.svg create mode 100644 static_new/admin/img/sorting-icons.svg create mode 100644 static_new/admin/img/tooltag-add.svg create mode 100644 static_new/admin/img/tooltag-arrowright.svg create mode 100644 static_new/admin/js/SelectBox.js create mode 100644 static_new/admin/js/SelectFilter2.js create mode 100644 static_new/admin/js/actions.js create mode 100644 static_new/admin/js/actions.min.js create mode 100644 static_new/admin/js/admin/DateTimeShortcuts.js create mode 100644 static_new/admin/js/admin/RelatedObjectLookups.js create mode 100644 static_new/admin/js/autocomplete.js create mode 100644 static_new/admin/js/calendar.js create mode 100644 static_new/admin/js/cancel.js create mode 100644 static_new/admin/js/change_form.js create mode 100644 static_new/admin/js/collapse.js create mode 100644 static_new/admin/js/collapse.min.js create mode 100644 static_new/admin/js/core.js create mode 100644 static_new/admin/js/inlines.js create mode 100644 static_new/admin/js/inlines.min.js create mode 100644 static_new/admin/js/jquery.init.js create mode 100644 static_new/admin/js/nav_sidebar.js create mode 100644 static_new/admin/js/popup_response.js create mode 100644 static_new/admin/js/prepopulate.js create mode 100644 static_new/admin/js/prepopulate.min.js create mode 100644 static_new/admin/js/prepopulate_init.js create mode 100644 static_new/admin/js/urlify.js create mode 100644 static_new/admin/js/vendor/jquery/LICENSE.txt create mode 100644 static_new/admin/js/vendor/jquery/jquery.js.REMOVED.git-id create mode 100644 static_new/admin/js/vendor/jquery/jquery.min.js create mode 100644 static_new/admin/js/vendor/select2/LICENSE.md create mode 100644 static_new/admin/js/vendor/select2/i18n/af.js create mode 100644 static_new/admin/js/vendor/select2/i18n/ar.js create mode 100644 static_new/admin/js/vendor/select2/i18n/az.js create mode 100644 static_new/admin/js/vendor/select2/i18n/bg.js create mode 100644 static_new/admin/js/vendor/select2/i18n/bn.js create mode 100644 static_new/admin/js/vendor/select2/i18n/bs.js create mode 100644 static_new/admin/js/vendor/select2/i18n/ca.js create mode 100644 static_new/admin/js/vendor/select2/i18n/cs.js create mode 100644 static_new/admin/js/vendor/select2/i18n/da.js create mode 100644 static_new/admin/js/vendor/select2/i18n/de.js create mode 100644 static_new/admin/js/vendor/select2/i18n/dsb.js create mode 100644 static_new/admin/js/vendor/select2/i18n/el.js create mode 100644 static_new/admin/js/vendor/select2/i18n/en.js create mode 100644 static_new/admin/js/vendor/select2/i18n/es.js create mode 100644 static_new/admin/js/vendor/select2/i18n/et.js create mode 100644 static_new/admin/js/vendor/select2/i18n/eu.js create mode 100644 static_new/admin/js/vendor/select2/i18n/fa.js create mode 100644 static_new/admin/js/vendor/select2/i18n/fi.js create mode 100644 static_new/admin/js/vendor/select2/i18n/fr.js create mode 100644 static_new/admin/js/vendor/select2/i18n/gl.js create mode 100644 static_new/admin/js/vendor/select2/i18n/he.js create mode 100644 static_new/admin/js/vendor/select2/i18n/hi.js create mode 100644 static_new/admin/js/vendor/select2/i18n/hr.js create mode 100644 static_new/admin/js/vendor/select2/i18n/hsb.js create mode 100644 static_new/admin/js/vendor/select2/i18n/hu.js create mode 100644 static_new/admin/js/vendor/select2/i18n/hy.js create mode 100644 static_new/admin/js/vendor/select2/i18n/id.js create mode 100644 static_new/admin/js/vendor/select2/i18n/is.js create mode 100644 static_new/admin/js/vendor/select2/i18n/it.js create mode 100644 static_new/admin/js/vendor/select2/i18n/ja.js create mode 100644 static_new/admin/js/vendor/select2/i18n/ka.js create mode 100644 static_new/admin/js/vendor/select2/i18n/km.js create mode 100644 static_new/admin/js/vendor/select2/i18n/ko.js create mode 100644 static_new/admin/js/vendor/select2/i18n/lt.js create mode 100644 static_new/admin/js/vendor/select2/i18n/lv.js create mode 100644 static_new/admin/js/vendor/select2/i18n/mk.js create mode 100644 static_new/admin/js/vendor/select2/i18n/ms.js create mode 100644 static_new/admin/js/vendor/select2/i18n/nb.js create mode 100644 static_new/admin/js/vendor/select2/i18n/ne.js create mode 100644 static_new/admin/js/vendor/select2/i18n/nl.js create mode 100644 static_new/admin/js/vendor/select2/i18n/pl.js create mode 100644 static_new/admin/js/vendor/select2/i18n/ps.js create mode 100644 static_new/admin/js/vendor/select2/i18n/pt-BR.js create mode 100644 static_new/admin/js/vendor/select2/i18n/pt.js create mode 100644 static_new/admin/js/vendor/select2/i18n/ro.js create mode 100644 static_new/admin/js/vendor/select2/i18n/ru.js create mode 100644 static_new/admin/js/vendor/select2/i18n/sk.js create mode 100644 static_new/admin/js/vendor/select2/i18n/sl.js create mode 100644 static_new/admin/js/vendor/select2/i18n/sq.js create mode 100644 static_new/admin/js/vendor/select2/i18n/sr-Cyrl.js create mode 100644 static_new/admin/js/vendor/select2/i18n/sr.js create mode 100644 static_new/admin/js/vendor/select2/i18n/sv.js create mode 100644 static_new/admin/js/vendor/select2/i18n/th.js create mode 100644 static_new/admin/js/vendor/select2/i18n/tk.js create mode 100644 static_new/admin/js/vendor/select2/i18n/tr.js create mode 100644 static_new/admin/js/vendor/select2/i18n/uk.js create mode 100644 static_new/admin/js/vendor/select2/i18n/vi.js create mode 100644 static_new/admin/js/vendor/select2/i18n/zh-CN.js create mode 100644 static_new/admin/js/vendor/select2/i18n/zh-TW.js create mode 100644 static_new/admin/js/vendor/select2/select2.full.js.REMOVED.git-id create mode 100644 static_new/admin/js/vendor/select2/select2.full.min.js create mode 100644 static_new/admin/js/vendor/xregexp/LICENSE.txt create mode 100644 static_new/admin/js/vendor/xregexp/xregexp.js.REMOVED.git-id create mode 100644 static_new/admin/js/vendor/xregexp/xregexp.min.js.REMOVED.git-id create mode 100644 static_new/drf-yasg/immutable.min.js create mode 100644 static_new/drf-yasg/insQ.min.js create mode 100644 static_new/drf-yasg/redoc-init.js create mode 100644 static_new/drf-yasg/redoc-old/redoc.min.js.REMOVED.git-id create mode 100644 static_new/drf-yasg/redoc/redoc-logo.png create mode 100644 static_new/drf-yasg/redoc/redoc.min.js.REMOVED.git-id create mode 100644 static_new/drf-yasg/style.css create mode 100644 static_new/drf-yasg/swagger-ui-dist/absolute-path.js create mode 100644 static_new/drf-yasg/swagger-ui-dist/favicon-32x32.png create mode 100644 static_new/drf-yasg/swagger-ui-dist/index.js create mode 100644 static_new/drf-yasg/swagger-ui-dist/oauth2-redirect.html create mode 100644 static_new/drf-yasg/swagger-ui-dist/swagger-ui-bundle.js.REMOVED.git-id create mode 100644 static_new/drf-yasg/swagger-ui-dist/swagger-ui-es-bundle-core.js.REMOVED.git-id create mode 100644 static_new/drf-yasg/swagger-ui-dist/swagger-ui-es-bundle.js.REMOVED.git-id create mode 100644 static_new/drf-yasg/swagger-ui-dist/swagger-ui-standalone-preset.js.REMOVED.git-id create mode 100644 static_new/drf-yasg/swagger-ui-dist/swagger-ui.css.REMOVED.git-id create mode 100644 static_new/drf-yasg/swagger-ui-init.js create mode 100644 static_new/drf-yasg/url-polyfill.min.js create mode 100644 static_new/img/contact.png create mode 100644 static_new/img/dongtai.png create mode 100644 static_new/img/dongtai1.png create mode 100644 static_new/img/github.png create mode 100644 static_new/img/logo.png create mode 100644 static_new/img/logout.png create mode 100644 static_new/img/money.png create mode 100644 static_new/img/photo.png create mode 100644 static_new/img/profile.png create mode 100644 static_new/img/register.png create mode 100644 static_new/img/user.jpg create mode 100644 static_new/img/user.png create mode 100644 static_new/img/video.png create mode 100644 static_new/rest_framework/css/bootstrap-theme.min.css create mode 100644 static_new/rest_framework/css/bootstrap-tweaks.css create mode 100644 static_new/rest_framework/css/bootstrap.min.css.REMOVED.git-id create mode 100644 static_new/rest_framework/css/default.css create mode 100644 static_new/rest_framework/css/font-awesome-4.0.3.css create mode 100644 static_new/rest_framework/css/prettify.css create mode 100644 static_new/rest_framework/docs/css/base.css create mode 100644 static_new/rest_framework/docs/css/highlight.css create mode 100644 static_new/rest_framework/docs/css/jquery.json-view.min.css create mode 100644 static_new/rest_framework/docs/img/favicon.ico create mode 100644 static_new/rest_framework/docs/img/grid.png create mode 100644 static_new/rest_framework/docs/js/api.js create mode 100644 static_new/rest_framework/docs/js/highlight.pack.js.REMOVED.git-id create mode 100644 static_new/rest_framework/docs/js/jquery.json-view.min.js create mode 100644 static_new/rest_framework/fonts/fontawesome-webfont.eot create mode 100644 static_new/rest_framework/fonts/fontawesome-webfont.svg.REMOVED.git-id create mode 100644 static_new/rest_framework/fonts/fontawesome-webfont.ttf create mode 100644 static_new/rest_framework/fonts/fontawesome-webfont.woff create mode 100644 static_new/rest_framework/fonts/glyphicons-halflings-regular.eot create mode 100644 static_new/rest_framework/fonts/glyphicons-halflings-regular.svg.REMOVED.git-id create mode 100644 static_new/rest_framework/fonts/glyphicons-halflings-regular.ttf create mode 100644 static_new/rest_framework/fonts/glyphicons-halflings-regular.woff create mode 100644 static_new/rest_framework/fonts/glyphicons-halflings-regular.woff2 create mode 100644 static_new/rest_framework/img/glyphicons-halflings-white.png create mode 100644 static_new/rest_framework/img/glyphicons-halflings.png create mode 100644 static_new/rest_framework/img/grid.png create mode 100644 static_new/rest_framework/js/ajax-form.js create mode 100644 static_new/rest_framework/js/bootstrap.min.js create mode 100644 static_new/rest_framework/js/coreapi-0.1.1.js.REMOVED.git-id create mode 100644 static_new/rest_framework/js/csrf.js create mode 100644 static_new/rest_framework/js/default.js create mode 100644 static_new/rest_framework/js/jquery-3.5.1.min.js create mode 100644 static_new/rest_framework/js/prettify-min.js create mode 100644 static_new/silk/css/cell.css create mode 100644 static_new/silk/css/colors.css create mode 100644 static_new/silk/css/fonts.css create mode 100644 static_new/silk/css/heading.css create mode 100644 static_new/silk/css/numeric.css create mode 100644 static_new/silk/css/summary.css create mode 100644 static_new/silk/favicon-16x16.png create mode 100644 static_new/silk/favicon-32x32.png create mode 100644 static_new/silk/filter.png create mode 100644 static_new/silk/filter2.png create mode 100644 static_new/silk/fonts/fantasque/FantasqueSansMono-Bold.woff create mode 100644 static_new/silk/fonts/fantasque/FantasqueSansMono-BoldItalic.woff create mode 100644 static_new/silk/fonts/fantasque/FantasqueSansMono-RegItalic.woff create mode 100644 static_new/silk/fonts/fantasque/FantasqueSansMono-Regular.woff create mode 100644 static_new/silk/fonts/fira/FiraSans-Bold.woff create mode 100644 static_new/silk/fonts/fira/FiraSans-BoldItalic.woff create mode 100644 static_new/silk/fonts/fira/FiraSans-Light.woff create mode 100644 static_new/silk/fonts/fira/FiraSans-LightItalic.woff create mode 100644 static_new/silk/fonts/fira/FiraSans-Medium.woff create mode 100644 static_new/silk/fonts/fira/FiraSans-MediumItalic.woff create mode 100644 static_new/silk/fonts/fira/FiraSans-Regular.woff create mode 100644 static_new/silk/fonts/fira/FiraSans-RegularItalic.woff create mode 100644 static_new/silk/fonts/glyphicons-halflings-regular.eot create mode 100644 static_new/silk/fonts/glyphicons-halflings-regular.svg.REMOVED.git-id create mode 100644 static_new/silk/fonts/glyphicons-halflings-regular.ttf create mode 100644 static_new/silk/fonts/glyphicons-halflings-regular.woff create mode 100644 static_new/silk/fonts/glyphicons-halflings-regular.woff2 create mode 100644 static_new/silk/js/cell.js create mode 100644 static_new/silk/js/filters.js create mode 100644 static_new/silk/js/summary.js create mode 100644 static_new/silk/lib/bootstrap-datetimepicker.min.css create mode 100644 static_new/silk/lib/bootstrap-datetimepicker.min.js create mode 100644 static_new/silk/lib/bootstrap-theme.min.css create mode 100644 static_new/silk/lib/bootstrap.min.css.REMOVED.git-id create mode 100644 static_new/silk/lib/bootstrap.min.js create mode 100644 static_new/silk/lib/highlight/foundation.css create mode 100644 static_new/silk/lib/highlight/highlight.pack.js create mode 100644 static_new/silk/lib/images/animated-overlay.gif create mode 100644 static_new/silk/lib/images/ui-bg_diagonals-thick_18_b81900_40x40.png create mode 100644 static_new/silk/lib/images/ui-bg_diagonals-thick_20_666666_40x40.png create mode 100644 static_new/silk/lib/images/ui-bg_flat_10_000000_40x100.png create mode 100644 static_new/silk/lib/images/ui-bg_glass_100_f6f6f6_1x400.png create mode 100644 static_new/silk/lib/images/ui-bg_glass_100_fdf5ce_1x400.png create mode 100644 static_new/silk/lib/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 static_new/silk/lib/images/ui-bg_gloss-wave_35_f6a828_500x100.png create mode 100644 static_new/silk/lib/images/ui-bg_highlight-soft_100_eeeeee_1x100.png create mode 100644 static_new/silk/lib/images/ui-bg_highlight-soft_75_ffe45c_1x100.png create mode 100644 static_new/silk/lib/images/ui-icons_222222_256x240.png create mode 100644 static_new/silk/lib/images/ui-icons_228ef1_256x240.png create mode 100644 static_new/silk/lib/images/ui-icons_ef8c08_256x240.png create mode 100644 static_new/silk/lib/images/ui-icons_ffd27a_256x240.png create mode 100644 static_new/silk/lib/images/ui-icons_ffffff_256x240.png create mode 100644 static_new/silk/lib/jquery-ui-1.10.4.min.css create mode 100644 static_new/silk/lib/jquery-ui-1.10.4.min.js.REMOVED.git-id create mode 100644 static_new/silk/lib/jquery.datetimepicker.css create mode 100644 static_new/silk/lib/jquery.datetimepicker.js create mode 100644 static_new/silk/lib/jquery.min.js create mode 100644 static_new/silk/lib/sortable.js create mode 100644 static_new/silk/lib/svg-pan-zoom.min.js create mode 100644 static_new/silk/lib/viz-lite.js.REMOVED.git-id create mode 100644 stock/__init__.py create mode 100644 stock/admin.py create mode 100644 stock/apps.py create mode 100644 stock/files.py create mode 100644 stock/filter.py create mode 100644 stock/migrations/__init__.py create mode 100644 stock/models.py create mode 100644 stock/serializers.py create mode 100644 stock/tests.py create mode 100644 stock/urls.py create mode 100644 stock/views.py create mode 100644 supplier/__init__.py create mode 100644 supplier/admin.py create mode 100644 supplier/apps.py create mode 100644 supplier/files.py create mode 100644 supplier/filter.py create mode 100644 supplier/migrations/__init__.py create mode 100644 supplier/models.py create mode 100644 supplier/serializers.py create mode 100644 supplier/tests.py create mode 100644 supplier/urls.py create mode 100644 supplier/views.py create mode 100644 templates/.editorconfig create mode 100644 templates/.eslintignore create mode 100644 templates/.eslintrc.js create mode 100644 templates/.gitignore create mode 100644 templates/.postcssrc.js create mode 100644 templates/.vscode/extensions.json create mode 100644 templates/.vscode/settings.json create mode 100644 templates/README.md create mode 100644 templates/babel.config.js create mode 100644 templates/dist/cordova/android/apk/release/app-release-unsigned.apk.REMOVED.git-id create mode 100644 templates/dist/cordova/android/apk/release/output.json create mode 100644 templates/dist/cordova/android/logs/manifest-merger-release-report.txt create mode 100644 templates/dist/cordova/android/sdk-dependencies/release/sdkDependencies.txt create mode 100644 templates/dist/spa/css/14.01c6672a.css create mode 100644 templates/dist/spa/css/15.01c6672a.css create mode 100644 templates/dist/spa/css/16.01c6672a.css create mode 100644 templates/dist/spa/css/2.01c6672a.css create mode 100644 templates/dist/spa/css/app.d6495f19.css create mode 100644 templates/dist/spa/css/vendor.021a65db.css.REMOVED.git-id create mode 100644 templates/dist/spa/css/vendor.021a65db.css.gz create mode 100644 templates/dist/spa/favicon.ico create mode 100644 templates/dist/spa/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.a7d6a198.woff.REMOVED.git-id create mode 100644 templates/dist/spa/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.4c7c4ea2.woff2.REMOVED.git-id create mode 100644 templates/dist/spa/icons/favicon-128x128.png create mode 100644 templates/dist/spa/icons/favicon-16x16.png create mode 100644 templates/dist/spa/icons/favicon-32x32.png create mode 100644 templates/dist/spa/icons/favicon-96x96.png create mode 100644 templates/dist/spa/index.html create mode 100644 templates/dist/spa/js/1.3c29b115.js.REMOVED.git-id create mode 100644 templates/dist/spa/js/1.3c29b115.js.gz create mode 100644 templates/dist/spa/js/10.5d154557.js create mode 100644 templates/dist/spa/js/100.aee456d0.js create mode 100644 templates/dist/spa/js/101.56352bf4.js create mode 100644 templates/dist/spa/js/102.4ae60fa7.js create mode 100644 templates/dist/spa/js/103.9525f2e0.js create mode 100644 templates/dist/spa/js/104.28f849f5.js create mode 100644 templates/dist/spa/js/105.90b5cc46.js create mode 100644 templates/dist/spa/js/106.fc0193e1.js create mode 100644 templates/dist/spa/js/107.14a1465e.js create mode 100644 templates/dist/spa/js/108.b89ef622.js create mode 100644 templates/dist/spa/js/109.fa4d41a9.js create mode 100644 templates/dist/spa/js/11.6400b7f8.js create mode 100644 templates/dist/spa/js/110.13f424f0.js create mode 100644 templates/dist/spa/js/111.fef2e28c.js create mode 100644 templates/dist/spa/js/112.35ac5b63.js create mode 100644 templates/dist/spa/js/113.c884a2d3.js create mode 100644 templates/dist/spa/js/114.3e6697c4.js create mode 100644 templates/dist/spa/js/115.9acdc8fe.js create mode 100644 templates/dist/spa/js/116.a4475956.js create mode 100644 templates/dist/spa/js/117.4a4fb734.js create mode 100644 templates/dist/spa/js/118.1866f793.js create mode 100644 templates/dist/spa/js/119.880acaf3.js create mode 100644 templates/dist/spa/js/119.880acaf3.js.gz create mode 100644 templates/dist/spa/js/12.160f4ca4.js create mode 100644 templates/dist/spa/js/120.757905f3.js create mode 100644 templates/dist/spa/js/121.2f028204.js create mode 100644 templates/dist/spa/js/122.c716a0b5.js create mode 100644 templates/dist/spa/js/123.bb15fba5.js create mode 100644 templates/dist/spa/js/124.91785738.js create mode 100644 templates/dist/spa/js/125.1356aac8.js create mode 100644 templates/dist/spa/js/14.8aa596c5.js create mode 100644 templates/dist/spa/js/14.8aa596c5.js.gz create mode 100644 templates/dist/spa/js/15.eb5d6875.js create mode 100644 templates/dist/spa/js/15.eb5d6875.js.gz create mode 100644 templates/dist/spa/js/16.69d4c3c1.js create mode 100644 templates/dist/spa/js/16.69d4c3c1.js.gz create mode 100644 templates/dist/spa/js/17.c5937d87.js create mode 100644 templates/dist/spa/js/17.c5937d87.js.gz create mode 100644 templates/dist/spa/js/18.e7ed8d41.js create mode 100644 templates/dist/spa/js/18.e7ed8d41.js.gz create mode 100644 templates/dist/spa/js/19.6f499969.js create mode 100644 templates/dist/spa/js/19.6f499969.js.gz create mode 100644 templates/dist/spa/js/2.597d53a6.js create mode 100644 templates/dist/spa/js/2.597d53a6.js.gz create mode 100644 templates/dist/spa/js/20.80d67a0c.js create mode 100644 templates/dist/spa/js/21.83d3a509.js create mode 100644 templates/dist/spa/js/22.e160fd7f.js create mode 100644 templates/dist/spa/js/23.33bba67d.js create mode 100644 templates/dist/spa/js/24.28621a41.js create mode 100644 templates/dist/spa/js/24.28621a41.js.gz create mode 100644 templates/dist/spa/js/25.c4ca3120.js create mode 100644 templates/dist/spa/js/25.c4ca3120.js.gz create mode 100644 templates/dist/spa/js/26.1c866e37.js create mode 100644 templates/dist/spa/js/27.60406e91.js create mode 100644 templates/dist/spa/js/28.83900f23.js create mode 100644 templates/dist/spa/js/28.83900f23.js.gz create mode 100644 templates/dist/spa/js/29.44acbd13.js create mode 100644 templates/dist/spa/js/29.44acbd13.js.gz create mode 100644 templates/dist/spa/js/3.cd5dc64f.js create mode 100644 templates/dist/spa/js/30.119d6239.js create mode 100644 templates/dist/spa/js/30.119d6239.js.gz create mode 100644 templates/dist/spa/js/31.35a2eb88.js create mode 100644 templates/dist/spa/js/31.35a2eb88.js.gz create mode 100644 templates/dist/spa/js/32.3b2ffeb8.js create mode 100644 templates/dist/spa/js/32.3b2ffeb8.js.gz create mode 100644 templates/dist/spa/js/33.a4c89348.js create mode 100644 templates/dist/spa/js/33.a4c89348.js.gz create mode 100644 templates/dist/spa/js/34.dc3cf657.js create mode 100644 templates/dist/spa/js/34.dc3cf657.js.gz create mode 100644 templates/dist/spa/js/35.eeaaf374.js create mode 100644 templates/dist/spa/js/35.eeaaf374.js.gz create mode 100644 templates/dist/spa/js/36.9d40db7b.js create mode 100644 templates/dist/spa/js/36.9d40db7b.js.gz create mode 100644 templates/dist/spa/js/37.ea6663c6.js create mode 100644 templates/dist/spa/js/37.ea6663c6.js.gz create mode 100644 templates/dist/spa/js/38.0cc3c3d5.js create mode 100644 templates/dist/spa/js/38.0cc3c3d5.js.gz create mode 100644 templates/dist/spa/js/39.ebf832ea.js create mode 100644 templates/dist/spa/js/39.ebf832ea.js.gz create mode 100644 templates/dist/spa/js/4.afff8fd0.js create mode 100644 templates/dist/spa/js/40.09c1003e.js create mode 100644 templates/dist/spa/js/41.d4becca4.js create mode 100644 templates/dist/spa/js/42.543714ae.js create mode 100644 templates/dist/spa/js/43.273c2711.js create mode 100644 templates/dist/spa/js/44.9e8356b1.js create mode 100644 templates/dist/spa/js/45.809d4f6e.js create mode 100644 templates/dist/spa/js/46.6b785f05.js create mode 100644 templates/dist/spa/js/46.6b785f05.js.gz create mode 100644 templates/dist/spa/js/47.e71769a8.js create mode 100644 templates/dist/spa/js/47.e71769a8.js.gz create mode 100644 templates/dist/spa/js/48.d54bad36.js create mode 100644 templates/dist/spa/js/48.d54bad36.js.gz create mode 100644 templates/dist/spa/js/49.bfd06519.js create mode 100644 templates/dist/spa/js/5.034375a9.js create mode 100644 templates/dist/spa/js/50.b366d436.js create mode 100644 templates/dist/spa/js/51.06c0480a.js create mode 100644 templates/dist/spa/js/51.06c0480a.js.gz create mode 100644 templates/dist/spa/js/52.7aaa0eef.js create mode 100644 templates/dist/spa/js/52.7aaa0eef.js.gz create mode 100644 templates/dist/spa/js/53.6d217e15.js create mode 100644 templates/dist/spa/js/53.6d217e15.js.gz create mode 100644 templates/dist/spa/js/54.6ab8f510.js create mode 100644 templates/dist/spa/js/54.6ab8f510.js.gz create mode 100644 templates/dist/spa/js/55.ffac4e92.js create mode 100644 templates/dist/spa/js/56.790d169e.js create mode 100644 templates/dist/spa/js/56.790d169e.js.gz create mode 100644 templates/dist/spa/js/57.07a7d138.js create mode 100644 templates/dist/spa/js/58.ec52918b.js create mode 100644 templates/dist/spa/js/58.ec52918b.js.gz create mode 100644 templates/dist/spa/js/59.be7d8f42.js create mode 100644 templates/dist/spa/js/6.6a284a53.js create mode 100644 templates/dist/spa/js/60.2389ebb9.js create mode 100644 templates/dist/spa/js/60.2389ebb9.js.gz create mode 100644 templates/dist/spa/js/61.f8dccec1.js create mode 100644 templates/dist/spa/js/62.94a12eb9.js create mode 100644 templates/dist/spa/js/63.687b20a5.js create mode 100644 templates/dist/spa/js/63.687b20a5.js.gz create mode 100644 templates/dist/spa/js/64.357ed891.js create mode 100644 templates/dist/spa/js/65.423897eb.js create mode 100644 templates/dist/spa/js/65.423897eb.js.gz create mode 100644 templates/dist/spa/js/66.b03a597b.js create mode 100644 templates/dist/spa/js/67.0f520ed7.js create mode 100644 templates/dist/spa/js/68.5634a88c.js create mode 100644 templates/dist/spa/js/69.76143c6d.js create mode 100644 templates/dist/spa/js/7.4bc79fdf.js create mode 100644 templates/dist/spa/js/70.621b0849.js create mode 100644 templates/dist/spa/js/71.f39c1a17.js create mode 100644 templates/dist/spa/js/72.bf86d193.js create mode 100644 templates/dist/spa/js/73.770f73a3.js create mode 100644 templates/dist/spa/js/73.770f73a3.js.gz create mode 100644 templates/dist/spa/js/74.6572797d.js create mode 100644 templates/dist/spa/js/74.6572797d.js.gz create mode 100644 templates/dist/spa/js/75.ac602613.js create mode 100644 templates/dist/spa/js/76.d3307305.js create mode 100644 templates/dist/spa/js/77.b44f2fc3.js create mode 100644 templates/dist/spa/js/78.ee8951ce.js create mode 100644 templates/dist/spa/js/79.280c9038.js create mode 100644 templates/dist/spa/js/8.5ec7f527.js create mode 100644 templates/dist/spa/js/80.67597fe1.js create mode 100644 templates/dist/spa/js/81.30398190.js create mode 100644 templates/dist/spa/js/81.30398190.js.gz create mode 100644 templates/dist/spa/js/82.1d99e8a1.js create mode 100644 templates/dist/spa/js/83.e69e5b51.js create mode 100644 templates/dist/spa/js/84.71a8b585.js create mode 100644 templates/dist/spa/js/85.a8edfd8f.js create mode 100644 templates/dist/spa/js/86.b86e0e99.js create mode 100644 templates/dist/spa/js/87.0c07ca18.js create mode 100644 templates/dist/spa/js/87.0c07ca18.js.gz create mode 100644 templates/dist/spa/js/88.ff033590.js create mode 100644 templates/dist/spa/js/88.ff033590.js.gz create mode 100644 templates/dist/spa/js/89.15f18453.js create mode 100644 templates/dist/spa/js/9.aa1f3eb2.js create mode 100644 templates/dist/spa/js/90.3f413400.js create mode 100644 templates/dist/spa/js/90.3f413400.js.gz create mode 100644 templates/dist/spa/js/91.5b09be2f.js create mode 100644 templates/dist/spa/js/91.5b09be2f.js.gz create mode 100644 templates/dist/spa/js/92.a44f2e7e.js create mode 100644 templates/dist/spa/js/93.8619497f.js create mode 100644 templates/dist/spa/js/94.a1f49349.js create mode 100644 templates/dist/spa/js/95.e05c7c07.js create mode 100644 templates/dist/spa/js/96.9c28e034.js create mode 100644 templates/dist/spa/js/97.d82de167.js create mode 100644 templates/dist/spa/js/98.d554a59e.js create mode 100644 templates/dist/spa/js/99.c803f707.js create mode 100644 templates/dist/spa/js/app.e0fa73d6.js.REMOVED.git-id create mode 100644 templates/dist/spa/js/app.e0fa73d6.js.gz create mode 100644 templates/dist/spa/js/vendor.a67f5770.js.REMOVED.git-id create mode 100644 templates/dist/spa/js/vendor.a67f5770.js.gz.REMOVED.git-id create mode 100644 templates/dist/spa/pdf/GreaterWMS_price.pdf.REMOVED.git-id create mode 100644 templates/dist/spa/statics/baseinfo/company.png create mode 100644 templates/dist/spa/statics/baseinfo/customer.png create mode 100644 templates/dist/spa/statics/baseinfo/supplier.png create mode 100644 templates/dist/spa/statics/baseurl.js create mode 100644 templates/dist/spa/statics/capital/capital.png create mode 100644 templates/dist/spa/statics/capital/freight.png create mode 100644 templates/dist/spa/statics/dashboard/in_and_out_statement.svg create mode 100644 templates/dist/spa/statics/dashboard/in_statement.png create mode 100644 templates/dist/spa/statics/dashboard/in_statement.svg create mode 100644 templates/dist/spa/statics/dashboard/out_statement.png create mode 100644 templates/dist/spa/statics/dashboard/statement.png create mode 100644 templates/dist/spa/statics/downloadcenter/downloadcenter.png create mode 100644 templates/dist/spa/statics/downloadcenter/downloadinbound.png create mode 100644 templates/dist/spa/statics/downloadcenter/reset.svg create mode 100644 templates/dist/spa/statics/goods/goodsbrand.png create mode 100644 templates/dist/spa/statics/goods/goodsclass.png create mode 100644 templates/dist/spa/statics/goods/goodscolor.png create mode 100644 templates/dist/spa/statics/goods/goodslist.png create mode 100644 templates/dist/spa/statics/goods/goodsorigin.png create mode 100644 templates/dist/spa/statics/goods/goodsshape.png create mode 100644 templates/dist/spa/statics/goods/goodsspecs.png create mode 100644 templates/dist/spa/statics/goods/goodsunit.png create mode 100644 templates/dist/spa/statics/goods/logo.png create mode 100644 templates/dist/spa/statics/goods/scan_goodslist.png create mode 100644 templates/dist/spa/statics/icons/GitHub.png create mode 100644 templates/dist/spa/statics/icons/apiauth.png create mode 100644 templates/dist/spa/statics/icons/blog.png create mode 100644 templates/dist/spa/statics/icons/car.png create mode 100644 templates/dist/spa/statics/icons/cyclecount.png create mode 100644 templates/dist/spa/statics/icons/driveron.png create mode 100644 templates/dist/spa/statics/icons/favicon-32x32.png create mode 100644 templates/dist/spa/statics/icons/folders.png create mode 100644 templates/dist/spa/statics/icons/gitee.ico create mode 100644 templates/dist/spa/statics/icons/logo.png create mode 100644 templates/dist/spa/statics/icons/logout.png create mode 100644 templates/dist/spa/statics/icons/milkrun.png create mode 100644 templates/dist/spa/statics/icons/movetobin.png create mode 100644 templates/dist/spa/statics/icons/msds.png create mode 100644 templates/dist/spa/statics/icons/order.png create mode 100644 templates/dist/spa/statics/icons/profile.png create mode 100644 templates/dist/spa/statics/icons/qrcode.png create mode 100644 templates/dist/spa/statics/icons/receive.png create mode 100644 templates/dist/spa/statics/icons/robot.png create mode 100644 templates/dist/spa/statics/icons/safari-pinned-tab.svg create mode 100644 templates/dist/spa/statics/icons/scm.png create mode 100644 templates/dist/spa/statics/icons/tms.png create mode 100644 templates/dist/spa/statics/icons/user.png create mode 100644 templates/dist/spa/statics/icons/users.svg create mode 100644 templates/dist/spa/statics/icons/wms.png create mode 100644 templates/dist/spa/statics/icons/wxcyclecount.png create mode 100644 templates/dist/spa/statics/inbound/asn.png create mode 100644 templates/dist/spa/statics/inbound/asnfinish.png create mode 100644 templates/dist/spa/statics/inbound/damage.png create mode 100644 templates/dist/spa/statics/inbound/more.png create mode 100644 templates/dist/spa/statics/inbound/polist.png create mode 100644 templates/dist/spa/statics/inbound/preloadstock.png create mode 100644 templates/dist/spa/statics/inbound/presortstock.png create mode 100644 templates/dist/spa/statics/inbound/shortage.png create mode 100644 templates/dist/spa/statics/inbound/sortstock.png create mode 100644 templates/dist/spa/statics/outbound/backorder.png create mode 100644 templates/dist/spa/statics/outbound/dispatchlist.png create mode 100644 templates/dist/spa/statics/outbound/dnlist.png create mode 100644 templates/dist/spa/statics/outbound/freshorder.png create mode 100644 templates/dist/spa/statics/outbound/order.png create mode 100644 templates/dist/spa/statics/outbound/orderrelease.png create mode 100644 templates/dist/spa/statics/outbound/outbound.png create mode 100644 templates/dist/spa/statics/outbound/picked.png create mode 100644 templates/dist/spa/statics/outbound/pickinglist.png create mode 100644 templates/dist/spa/statics/outbound/pickstock.png create mode 100644 templates/dist/spa/statics/outbound/receiving.png create mode 100644 templates/dist/spa/statics/shopid/douyin.png create mode 100644 templates/dist/spa/statics/shopid/ecomments.png create mode 100644 templates/dist/spa/statics/staff/driver.png create mode 100644 templates/dist/spa/statics/staff/stafflist.png create mode 100644 templates/dist/spa/statics/staff/stafftype.png create mode 100644 templates/dist/spa/statics/stock/cyclecount.png create mode 100644 templates/dist/spa/statics/stock/cyclecountrecorder.png create mode 100644 templates/dist/spa/statics/stock/stocklist.png create mode 100644 templates/dist/spa/statics/uploadcenter/addupload.png create mode 100644 templates/dist/spa/statics/uploadcenter/uploadcenter.png create mode 100644 templates/dist/spa/statics/uploadcenter/uploadinbound.png create mode 100644 templates/dist/spa/statics/warehouse/binset.png create mode 100644 templates/dist/spa/statics/warehouse/binsize.png create mode 100644 templates/dist/spa/statics/warehouse/property.png create mode 100644 templates/dist/spa/statics/warehouse/warehouseset.png create mode 100644 templates/jsconfig.json create mode 100644 templates/package-lock.json.REMOVED.git-id create mode 100644 templates/package.json create mode 100644 templates/public/favicon.ico create mode 100644 templates/public/icons/favicon-128x128.png create mode 100644 templates/public/icons/favicon-16x16.png create mode 100644 templates/public/icons/favicon-32x32.png create mode 100644 templates/public/icons/favicon-96x96.png create mode 100644 templates/public/pdf/GreaterWMS_price.pdf.REMOVED.git-id create mode 100644 templates/public/statics/baseinfo/company.png create mode 100644 templates/public/statics/baseinfo/customer.png create mode 100644 templates/public/statics/baseinfo/supplier.png create mode 100644 templates/public/statics/baseurl.js create mode 100644 templates/public/statics/capital/capital.png create mode 100644 templates/public/statics/capital/freight.png create mode 100644 templates/public/statics/dashboard/in_and_out_statement.svg create mode 100644 templates/public/statics/dashboard/in_statement.png create mode 100644 templates/public/statics/dashboard/in_statement.svg create mode 100644 templates/public/statics/dashboard/out_statement.png create mode 100644 templates/public/statics/dashboard/statement.png create mode 100644 templates/public/statics/downloadcenter/downloadcenter.png create mode 100644 templates/public/statics/downloadcenter/downloadinbound.png create mode 100644 templates/public/statics/downloadcenter/reset.svg create mode 100644 templates/public/statics/goods/goodsbrand.png create mode 100644 templates/public/statics/goods/goodsclass.png create mode 100644 templates/public/statics/goods/goodscolor.png create mode 100644 templates/public/statics/goods/goodslist.png create mode 100644 templates/public/statics/goods/goodsorigin.png create mode 100644 templates/public/statics/goods/goodsshape.png create mode 100644 templates/public/statics/goods/goodsspecs.png create mode 100644 templates/public/statics/goods/goodsunit.png create mode 100644 templates/public/statics/goods/logo.png create mode 100644 templates/public/statics/goods/scan_goodslist.png create mode 100644 templates/public/statics/icons/GitHub.png create mode 100644 templates/public/statics/icons/apiauth.png create mode 100644 templates/public/statics/icons/blog.png create mode 100644 templates/public/statics/icons/car.png create mode 100644 templates/public/statics/icons/cyclecount.png create mode 100644 templates/public/statics/icons/driveron.png create mode 100644 templates/public/statics/icons/favicon-32x32.png create mode 100644 templates/public/statics/icons/folders.png create mode 100644 templates/public/statics/icons/gitee.ico create mode 100644 templates/public/statics/icons/logo.png create mode 100644 templates/public/statics/icons/logout.png create mode 100644 templates/public/statics/icons/milkrun.png create mode 100644 templates/public/statics/icons/movetobin.png create mode 100644 templates/public/statics/icons/msds.png create mode 100644 templates/public/statics/icons/order.png create mode 100644 templates/public/statics/icons/profile.png create mode 100644 templates/public/statics/icons/qrcode.png create mode 100644 templates/public/statics/icons/receive.png create mode 100644 templates/public/statics/icons/robot.png create mode 100644 templates/public/statics/icons/safari-pinned-tab.svg create mode 100644 templates/public/statics/icons/scm.png create mode 100644 templates/public/statics/icons/tms.png create mode 100644 templates/public/statics/icons/user.png create mode 100644 templates/public/statics/icons/users.svg create mode 100644 templates/public/statics/icons/wms.png create mode 100644 templates/public/statics/icons/wxcyclecount.png create mode 100644 templates/public/statics/inbound/asn.png create mode 100644 templates/public/statics/inbound/asnfinish.png create mode 100644 templates/public/statics/inbound/damage.png create mode 100644 templates/public/statics/inbound/more.png create mode 100644 templates/public/statics/inbound/polist.png create mode 100644 templates/public/statics/inbound/preloadstock.png create mode 100644 templates/public/statics/inbound/presortstock.png create mode 100644 templates/public/statics/inbound/shortage.png create mode 100644 templates/public/statics/inbound/sortstock.png create mode 100644 templates/public/statics/outbound/backorder.png create mode 100644 templates/public/statics/outbound/dispatchlist.png create mode 100644 templates/public/statics/outbound/dnlist.png create mode 100644 templates/public/statics/outbound/freshorder.png create mode 100644 templates/public/statics/outbound/order.png create mode 100644 templates/public/statics/outbound/orderrelease.png create mode 100644 templates/public/statics/outbound/outbound.png create mode 100644 templates/public/statics/outbound/picked.png create mode 100644 templates/public/statics/outbound/pickinglist.png create mode 100644 templates/public/statics/outbound/pickstock.png create mode 100644 templates/public/statics/outbound/receiving.png create mode 100644 templates/public/statics/shopid/douyin.png create mode 100644 templates/public/statics/shopid/ecomments.png create mode 100644 templates/public/statics/staff/driver.png create mode 100644 templates/public/statics/staff/stafflist.png create mode 100644 templates/public/statics/staff/stafftype.png create mode 100644 templates/public/statics/stock/cyclecount.png create mode 100644 templates/public/statics/stock/cyclecountrecorder.png create mode 100644 templates/public/statics/stock/stocklist.png create mode 100644 templates/public/statics/uploadcenter/addupload.png create mode 100644 templates/public/statics/uploadcenter/uploadcenter.png create mode 100644 templates/public/statics/uploadcenter/uploadinbound.png create mode 100644 templates/public/statics/warehouse/binset.png create mode 100644 templates/public/statics/warehouse/binsize.png create mode 100644 templates/public/statics/warehouse/property.png create mode 100644 templates/public/statics/warehouse/warehouseset.png create mode 100644 templates/quasar.conf.js create mode 100644 templates/quasar.extensions.json create mode 100644 templates/src-cordova/.gitignore create mode 100644 templates/src-cordova/config.xml create mode 100644 templates/src-cordova/cordova-flag.d.ts create mode 100644 templates/src-cordova/package-lock.json create mode 100644 templates/src-cordova/package.json create mode 100644 templates/src-cordova/plugins/android.json create mode 100644 templates/src-cordova/plugins/com-darryncampbell-cordova-plugin-intent/LICENSE create mode 100644 templates/src-cordova/plugins/com-darryncampbell-cordova-plugin-intent/README.md create mode 100644 templates/src-cordova/plugins/com-darryncampbell-cordova-plugin-intent/hooks/after_prepare.js create mode 100644 templates/src-cordova/plugins/com-darryncampbell-cordova-plugin-intent/package.json create mode 100644 templates/src-cordova/plugins/com-darryncampbell-cordova-plugin-intent/plugin.xml create mode 100644 templates/src-cordova/plugins/com-darryncampbell-cordova-plugin-intent/src/android/CordovaPluginIntentFileProvider.java create mode 100644 templates/src-cordova/plugins/com-darryncampbell-cordova-plugin-intent/src/android/IntentShim.java create mode 100644 templates/src-cordova/plugins/com-darryncampbell-cordova-plugin-intent/src/android/res/xml/provider_paths.xml create mode 100644 templates/src-cordova/plugins/com-darryncampbell-cordova-plugin-intent/www/IntentShim.js create mode 100644 templates/src-cordova/plugins/com.verso.cordova.clipboard/LICENSE create mode 100644 templates/src-cordova/plugins/com.verso.cordova.clipboard/README.md create mode 100644 templates/src-cordova/plugins/com.verso.cordova.clipboard/package.json create mode 100644 templates/src-cordova/plugins/com.verso.cordova.clipboard/plugin.xml create mode 100644 templates/src-cordova/plugins/com.verso.cordova.clipboard/src/android/Clipboard.java create mode 100644 templates/src-cordova/plugins/com.verso.cordova.clipboard/src/ios/CDVClipboard.h create mode 100644 templates/src-cordova/plugins/com.verso.cordova.clipboard/src/ios/CDVClipboard.m create mode 100644 templates/src-cordova/plugins/com.verso.cordova.clipboard/src/wp8/Clipboard.cs create mode 100644 templates/src-cordova/plugins/com.verso.cordova.clipboard/www/clipboard.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-app-version/CHANGELOG.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-app-version/LICENSE create mode 100644 templates/src-cordova/plugins/cordova-plugin-app-version/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-app-version/VERSION create mode 100644 templates/src-cordova/plugins/cordova-plugin-app-version/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-app-version/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-app-version/src/android/AppVersion.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-app-version/src/browser/AppVersionProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-app-version/src/ios/AppVersion.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-app-version/src/ios/AppVersion.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-app-version/src/windows/AppVersionProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-app-version/src/wp8/AppVersion.cs create mode 100644 templates/src-cordova/plugins/cordova-plugin-app-version/www/AppVersionPlugin.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-app-version/www/blackberry10/AppVersionProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/CHANGELOG.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/LICENSE create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/images/android.png.REMOVED.git-id create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/images/ios-permission.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/images/ios.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/images/osx-badge.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/images/osx-circular.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/images/osx-download.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/images/windows.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/src/android/Badge.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/src/android/BadgeImpl.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/src/android/badge.gradle create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/src/browser/BadgeProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/src/browser/favico.min.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/src/ios/APPBadge.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/src/ios/APPBadge.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/src/osx/APPBadge.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/src/osx/APPBadge.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/src/osx/DockCircularProgressBar.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/src/osx/DockCircularProgressBar.mm create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/src/osx/DockDownloadProgressBar.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/src/osx/DockDownloadProgressBar.mm create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/src/windows/BadgeProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/tests/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/tests/tests.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-badge/www/badge.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/CONTRIBUTING.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/LICENSE create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/NOTICE create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/RELEASENOTES.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/src/android/BatteryListener.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/src/browser/BatteryProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/src/ios/CDVBattery.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/src/ios/CDVBattery.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/src/windows/BatteryProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/src/windows/BatteryStatus.winmd create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/src/windows/BatteryStatus/BatteryStatus/BatteryStatus.cs create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/src/windows/BatteryStatus/BatteryStatus/BatteryStatus.csproj create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/src/windows/BatteryStatus/BatteryStatus/Properties/AssemblyInfo.cs create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/tests/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/tests/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/tests/tests.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/types/index.d.ts create mode 100644 templates/src-cordova/plugins/cordova-plugin-battery-status/www/battery.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/CHANGES.txt create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/LICENSE.txt create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/battery/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/battery/config.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/battery/hooks/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/battery/www/css/index.css create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/battery/www/index.html create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/battery/www/js/index.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/bluefruitle/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/bluefruitle/config.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/bluefruitle/hooks/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/bluefruitle/www/css/index.css create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/bluefruitle/www/index.html create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/bluefruitle/www/js/index.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/heartrate/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/heartrate/config.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/heartrate/hooks/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/heartrate/www/css/index.css create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/heartrate/www/index.html create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/heartrate/www/js/index.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/metawear/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/metawear/config.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/metawear/hooks/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/metawear/www/css/index.css create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/metawear/www/index.html create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/metawear/www/js/index.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/redbearlab/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/redbearlab/config.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/redbearlab/hooks/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/redbearlab/www/css/index.css create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/redbearlab/www/index.html create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/redbearlab/www/js/index.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/rfduinoLedButton/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/rfduinoLedButton/config.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/rfduinoLedButton/hooks/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/rfduinoLedButton/www/css/index.css create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/rfduinoLedButton/www/index.html create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/rfduinoLedButton/www/js/index.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/robosmart/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/robosmart/config.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/robosmart/hooks/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/robosmart/www/css/index.css create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/robosmart/www/index.html create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/robosmart/www/js/index.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/sensortag/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/sensortag/config.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/sensortag/hooks/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/sensortag/www/css/index.css create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/sensortag/www/index.html create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/sensortag/www/js/index.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/sensortag_cc2650/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/sensortag_cc2650/config.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/sensortag_cc2650/hooks/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/sensortag_cc2650/www/css/index.css create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/sensortag_cc2650/www/index.html create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/examples/sensortag_cc2650/www/js/index.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/src/android/BLECentralPlugin.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/src/android/BLECommand.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/src/android/Helper.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/src/android/Peripheral.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/src/android/SequentialCallbackContext.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/src/android/UUIDHelper.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/src/browser/BLECentralPlugin.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/src/ios/BLECentralPlugin.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/src/ios/BLECentralPlugin.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/src/ios/BLECommandContext.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/src/ios/BLECommandContext.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/src/ios/CBPeripheral+Extensions.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/src/ios/CBPeripheral+Extensions.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/src/wp/BLECentralPlugin.cs create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/tests/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/tests/tests.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-ble-central/www/ble.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/CONTRIBUTING.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/LICENSE create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/NOTICE create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/RELEASENOTES.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/src/android/CameraLauncher.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/src/android/ExifHelper.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/src/android/FileHelper.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/src/android/FileProvider.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/src/android/GalleryPathVO.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/src/android/xml/camera_provider_paths.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/src/browser/CameraProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/src/ios/CDVCamera.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/src/ios/CDVCamera.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/src/ios/CDVExif.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/src/ios/CDVJpegHeaderWriter.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/src/ios/CDVJpegHeaderWriter.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/src/ios/UIImage+CropScaleOrientation.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/src/ios/UIImage+CropScaleOrientation.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/src/osx/CDVCamera.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/src/osx/CDVCamera.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/src/windows/CameraProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/types/index.d.ts create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/www/Camera.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/www/CameraConstants.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/www/CameraPopoverHandle.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/www/CameraPopoverOptions.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-camera/www/ios/CameraPopoverHandle.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-device/CONTRIBUTING.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-device/LICENSE create mode 100644 templates/src-cordova/plugins/cordova-plugin-device/NOTICE create mode 100644 templates/src-cordova/plugins/cordova-plugin-device/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-device/RELEASENOTES.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-device/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-device/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-device/src/android/Device.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-device/src/browser/DeviceProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-device/src/ios/CDVDevice.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-device/src/ios/CDVDevice.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-device/src/osx/CDVDevice.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-device/src/osx/CDVDevice.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-device/src/windows/DeviceProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-device/tests/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-device/tests/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-device/tests/tests.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-device/types/index.d.ts create mode 100644 templates/src-cordova/plugins/cordova-plugin-device/www/device.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/.appveyor.yml create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/.jscsrc create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/.jshintrc create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/.npmignore create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/.travis.yml create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/CONTRIBUTING.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/LICENSE create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/NOTICE create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/RELEASENOTES.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/doc/de/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/doc/de/index.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/doc/es/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/doc/es/index.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/doc/fr/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/doc/fr/index.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/doc/it/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/doc/it/index.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/doc/ja/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/doc/ja/index.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/doc/ko/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/doc/ko/index.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/doc/pl/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/doc/pl/index.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/doc/ru/index.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/doc/zh/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/doc/zh/index.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/src/amazon/FileTransfer.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/src/android/FileProgressResult.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/src/android/FileTransfer.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/src/android/FileUploadResult.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/src/ios/CDVFileTransfer.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/src/ios/CDVFileTransfer.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/src/ubuntu/file-transfer.cpp create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/src/ubuntu/file-transfer.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/src/windows/FileTransferProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/src/wp/FileTransfer.cs create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/tests/hooks/after_prepare.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/tests/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/tests/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/tests/tests.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/types/index.d.ts create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/www/FileTransfer.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/www/FileTransferError.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/www/blackberry10/.jshintrc create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/www/blackberry10/FileTransfer.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/www/blackberry10/FileTransferProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/www/blackberry10/xhrFileTransfer.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/www/browser/FileTransfer.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/www/firefoxos/FileTransferProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file-transfer/www/wp7/base64.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/.jshintrc create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/.ratignore create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/CONTRIBUTING.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/LICENSE create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/NOTICE create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/RELEASENOTES.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/doc/plugins.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/android/AssetFilesystem.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/android/ContentFilesystem.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/android/DirectoryManager.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/android/EncodingException.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/android/FileExistsException.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/android/FileUtils.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/android/Filesystem.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/android/InvalidModificationException.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/android/LocalFilesystem.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/android/LocalFilesystemURL.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/android/NoModificationAllowedException.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/android/PendingRequests.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/android/TypeMismatchException.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/android/build-extras.gradle create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/browser/FileProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/ios/CDVAssetLibraryFilesystem.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/ios/CDVAssetLibraryFilesystem.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/ios/CDVFile.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/ios/CDVFile.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/ios/CDVLocalFilesystem.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/ios/CDVLocalFilesystem.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/osx/CDVFile.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/osx/CDVFile.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/osx/CDVLocalFilesystem.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/osx/CDVLocalFilesystem.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/src/windows/FileProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/tests/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/tests/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/tests/src/android/TestContentProvider.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/tests/tests.js.REMOVED.git-id create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/tests/www/fixtures/asset-test/asset-test.txt create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/types/index.d.ts create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/DirectoryEntry.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/DirectoryReader.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/Entry.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/File.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/FileEntry.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/FileError.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/FileReader.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/FileSystem.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/FileUploadOptions.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/FileUploadResult.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/FileWriter.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/Flags.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/LocalFileSystem.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/Metadata.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/ProgressEvent.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/android/FileSystem.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/browser/FileSystem.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/browser/Preparing.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/browser/isChrome.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/fileSystemPaths.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/fileSystems-roots.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/fileSystems.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/ios/FileSystem.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/osx/FileSystem.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/requestFileSystem.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-file/www/resolveLocalFileSystemURI.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-geolocation/CONTRIBUTING.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-geolocation/LICENSE create mode 100644 templates/src-cordova/plugins/cordova-plugin-geolocation/NOTICE create mode 100644 templates/src-cordova/plugins/cordova-plugin-geolocation/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-geolocation/RELEASENOTES.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-geolocation/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-geolocation/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-geolocation/src/android/Geolocation.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-geolocation/src/ios/CDVLocation.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-geolocation/src/ios/CDVLocation.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-geolocation/src/windows/GeolocationProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-geolocation/www/Coordinates.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-geolocation/www/Position.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-geolocation/www/PositionError.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-geolocation/www/android/geolocation.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-geolocation/www/geolocation.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-insomnia/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-insomnia/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-insomnia/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-insomnia/src/android/nl/xservices/plugins/Insomnia.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-insomnia/src/browser/Insomnia.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-insomnia/src/firefoxos/insomnia.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-insomnia/src/ios/Insomnia.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-insomnia/src/ios/Insomnia.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-insomnia/src/windows/InsomniaProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-insomnia/src/wp8/Insomnia.cs create mode 100644 templates/src-cordova/plugins/cordova-plugin-insomnia/www/Insomnia.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-keyboard/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-keyboard/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-keyboard/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-keyboard/src/android/Keyboard.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-keyboard/src/ios/CDVKeyboard.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-keyboard/src/ios/CDVKeyboard.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-keyboard/www/keyboard.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/CONTRIBUTING.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/LICENSE create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/NOTICE create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/RELEASENOTES.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/android/Capture.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/android/FileHelper.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/android/PendingRequests.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/browser/CaptureProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/controls_bg.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/controls_bg@2x.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/controls_bg@2x~ipad.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/controls_bg~ipad.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/de.lproj/Localizable.strings create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/en.lproj/Localizable.strings create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/es.lproj/Localizable.strings create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/microphone-568h@2x~iphone.png.REMOVED.git-id create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/microphone.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/microphone@2x.png.REMOVED.git-id create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/microphone@2x~ipad.png.REMOVED.git-id create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/microphone~ipad.png.REMOVED.git-id create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/record_button.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/record_button@2x.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/record_button@2x~ipad.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/record_button~ipad.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/recording_bg.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/recording_bg@2x.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/recording_bg@2x~ipad.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/recording_bg~ipad.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/se.lproj/Localizable.strings create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/stop_button.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/stop_button@2x.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/stop_button@2x~ipad.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.bundle/stop_button~ipad.png create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/ios/CDVCapture.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/windows/CaptureProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/src/windows/MediaFile.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/tests/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/tests/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/tests/tests.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/types/index.d.ts create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/www/CaptureAudioOptions.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/www/CaptureError.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/www/CaptureImageOptions.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/www/CaptureVideoOptions.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/www/ConfigurationData.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/www/MediaFile.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/www/MediaFileData.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/www/android/init.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/www/capture.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-media-capture/www/helpers.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/.jshintrc create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/CONTRIBUTING.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/LICENSE create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/NOTICE create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/RELEASENOTES.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/src/android/AudioHandler.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/src/android/AudioPlayer.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/src/android/FileHelper.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/src/ios/CDVSound.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/src/ios/CDVSound.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/src/windows/MediaProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/tests/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/tests/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/tests/tests.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/types/index.d.ts create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/www/Media.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/www/MediaError.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-media/www/browser/Media.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-network-information/CONTRIBUTING.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-network-information/LICENSE create mode 100644 templates/src-cordova/plugins/cordova-plugin-network-information/NOTICE create mode 100644 templates/src-cordova/plugins/cordova-plugin-network-information/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-network-information/RELEASENOTES.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-network-information/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-network-information/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-network-information/src/android/NetworkManager.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-network-information/src/browser/network.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-network-information/src/ios/CDVConnection.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-network-information/src/ios/CDVConnection.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-network-information/src/ios/CDVReachability.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-network-information/src/ios/CDVReachability.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-network-information/src/windows/NetworkInfoProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-network-information/types/index.d.ts create mode 100644 templates/src-cordova/plugins/cordova-plugin-network-information/www/Connection.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-network-information/www/network.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-screen-orientation/LICENSE create mode 100644 templates/src-cordova/plugins/cordova-plugin-screen-orientation/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-screen-orientation/RELEASENOTES.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-screen-orientation/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-screen-orientation/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-screen-orientation/src/android/CDVOrientation.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-screen-orientation/src/ios/CDVOrientation.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-screen-orientation/src/ios/CDVOrientation.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-screen-orientation/src/windows/CDVOrientationProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-screen-orientation/tests/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-screen-orientation/tests/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-screen-orientation/tests/tests.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-screen-orientation/www/screenorientation.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-splashscreen/CONTRIBUTING.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-splashscreen/LICENSE create mode 100644 templates/src-cordova/plugins/cordova-plugin-splashscreen/NOTICE create mode 100644 templates/src-cordova/plugins/cordova-plugin-splashscreen/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-splashscreen/RELEASENOTES.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-splashscreen/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-splashscreen/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-splashscreen/src/android/SplashScreen.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-splashscreen/src/browser/SplashScreenProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-splashscreen/src/windows/SplashScreenProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-splashscreen/types/index.d.ts create mode 100644 templates/src-cordova/plugins/cordova-plugin-splashscreen/www/splashscreen.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-statusbar/.jshintrc create mode 100644 templates/src-cordova/plugins/cordova-plugin-statusbar/CONTRIBUTING.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-statusbar/LICENSE create mode 100644 templates/src-cordova/plugins/cordova-plugin-statusbar/NOTICE create mode 100644 templates/src-cordova/plugins/cordova-plugin-statusbar/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-statusbar/RELEASENOTES.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-statusbar/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-statusbar/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-statusbar/src/android/StatusBar.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-statusbar/src/browser/StatusBarProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-statusbar/src/ios/CDVStatusBar.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-statusbar/src/ios/CDVStatusBar.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-statusbar/src/windows/StatusBarProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-statusbar/src/wp/StatusBar.cs create mode 100644 templates/src-cordova/plugins/cordova-plugin-statusbar/tests/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-statusbar/tests/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-statusbar/tests/tests.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-statusbar/types/index.d.ts create mode 100644 templates/src-cordova/plugins/cordova-plugin-statusbar/www/statusbar.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-ubx/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-ubx/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-ubx/src/android/Uplugin.java create mode 100644 templates/src-cordova/plugins/cordova-plugin-ubx/src/android/platform_sdk_v4.1.0326.jar create mode 100644 templates/src-cordova/plugins/cordova-plugin-ubx/www/Uplugin.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/.appveyor.yml create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/.eslintrc.yml create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/.github/ISSUE_TEMPLATE.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/.github/ISSUE_TEMPLATE/BUG_REPORT.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/.github/ISSUE_TEMPLATE/SUPPORT_QUESTION.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/.ratignore create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/.travis.yml create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/CONTRIBUTING.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/LICENSE create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/NOTICE create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/RELEASENOTES.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/src/browser/Vibration.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/src/ios/CDVVibration.h create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/src/ios/CDVVibration.m create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/src/windows/Vibration/Properties/AssemblyInfo.cs create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/src/windows/Vibration/Vibration.cs create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/src/windows/Vibration/Vibration.csproj create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/src/windows/VibrationProxy.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/tests/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/tests/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/tests/tests.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/types/index.d.ts create mode 100644 templates/src-cordova/plugins/cordova-plugin-vibration/www/vibration.js create mode 100644 templates/src-cordova/plugins/cordova-plugin-whitelist/CONTRIBUTING.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-whitelist/LICENSE create mode 100644 templates/src-cordova/plugins/cordova-plugin-whitelist/NOTICE create mode 100644 templates/src-cordova/plugins/cordova-plugin-whitelist/README.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-whitelist/RELEASENOTES.md create mode 100644 templates/src-cordova/plugins/cordova-plugin-whitelist/package.json create mode 100644 templates/src-cordova/plugins/cordova-plugin-whitelist/plugin.xml create mode 100644 templates/src-cordova/plugins/cordova-plugin-whitelist/src/android/WhitelistPlugin.java create mode 100644 templates/src-cordova/plugins/es6-promise-plugin/CHANGELOG.md create mode 100644 templates/src-cordova/plugins/es6-promise-plugin/LICENSE create mode 100644 templates/src-cordova/plugins/es6-promise-plugin/README.md create mode 100644 templates/src-cordova/plugins/es6-promise-plugin/package.json create mode 100644 templates/src-cordova/plugins/es6-promise-plugin/plugin.xml create mode 100644 templates/src-cordova/plugins/es6-promise-plugin/www/promise.js create mode 100644 templates/src-cordova/plugins/fetch.json create mode 100644 templates/src-cordova/plugins/phonegap-nfc/CHANGES.txt create mode 100644 templates/src-cordova/plugins/phonegap-nfc/LICENSE.txt create mode 100644 templates/src-cordova/plugins/phonegap-nfc/README.md create mode 100644 templates/src-cordova/plugins/phonegap-nfc/doc/GettingStartedBlackBerry10.md create mode 100644 templates/src-cordova/plugins/phonegap-nfc/doc/GettingStartedCLI.md create mode 100644 templates/src-cordova/plugins/phonegap-nfc/doc/GettingStartedPhoneGapBuild.md create mode 100644 templates/src-cordova/plugins/phonegap-nfc/doc/phonegap_build.png.REMOVED.git-id create mode 100644 templates/src-cordova/plugins/phonegap-nfc/doc/read_tag_1_basic_app.png create mode 100644 templates/src-cordova/plugins/phonegap-nfc/doc/read_tag_2_dump_tag.png create mode 100644 templates/src-cordova/plugins/phonegap-nfc/doc/read_tag_3_payload_as_string.png create mode 100644 templates/src-cordova/plugins/phonegap-nfc/package.json create mode 100644 templates/src-cordova/plugins/phonegap-nfc/plugin.xml create mode 100644 templates/src-cordova/plugins/phonegap-nfc/src/android/src/com/chariotsolutions/nfc/plugin/NfcPlugin.java create mode 100644 templates/src-cordova/plugins/phonegap-nfc/src/android/src/com/chariotsolutions/nfc/plugin/Util.java create mode 100644 templates/src-cordova/plugins/phonegap-nfc/src/blackberry10/index.js create mode 100644 templates/src-cordova/plugins/phonegap-nfc/src/ios/NfcPlugin.h create mode 100644 templates/src-cordova/plugins/phonegap-nfc/src/ios/NfcPlugin.m create mode 100644 templates/src-cordova/plugins/phonegap-nfc/src/webworks/build.xml create mode 100644 templates/src-cordova/plugins/phonegap-nfc/src/webworks/src/com/chariotsolutions/nfc/plugin/NfcPlugin.java create mode 100644 templates/src-cordova/plugins/phonegap-nfc/src/webworks/src/com/chariotsolutions/nfc/plugin/Util.java create mode 100644 templates/src-cordova/plugins/phonegap-nfc/src/windows-phone-8/Ndef.cs create mode 100644 templates/src-cordova/plugins/phonegap-nfc/src/windows-phone-8/NfcPlugin.cs create mode 100644 templates/src-cordova/plugins/phonegap-nfc/src/windows/nfc-plugin.js create mode 100644 templates/src-cordova/plugins/phonegap-nfc/tests/package.json create mode 100644 templates/src-cordova/plugins/phonegap-nfc/tests/plugin.xml create mode 100644 templates/src-cordova/plugins/phonegap-nfc/tests/tests.js create mode 100644 templates/src-cordova/plugins/phonegap-nfc/www/phonegap-nfc-blackberry.js create mode 100644 templates/src-cordova/plugins/phonegap-nfc/www/phonegap-nfc.js create mode 100644 templates/src-cordova/res/android/icon-144-xxhdpi.png create mode 100644 templates/src-cordova/res/android/icon-192-xxxhdpi.png create mode 100644 templates/src-cordova/res/android/icon-36-ldpi.png create mode 100644 templates/src-cordova/res/android/icon-48-mdpi.png create mode 100644 templates/src-cordova/res/android/icon-72-hdpi.png create mode 100644 templates/src-cordova/res/android/icon-96-xhdpi.png create mode 100644 templates/src-cordova/res/ios/icon-1024.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/ios/icon-167.png create mode 100644 templates/src-cordova/res/ios/icon-2x.png create mode 100644 templates/src-cordova/res/ios/icon-40-2x.png create mode 100644 templates/src-cordova/res/ios/icon-40.png create mode 100644 templates/src-cordova/res/ios/icon-50-2x.png create mode 100644 templates/src-cordova/res/ios/icon-50.png create mode 100644 templates/src-cordova/res/ios/icon-60-2x.png create mode 100644 templates/src-cordova/res/ios/icon-60-3x.png create mode 100644 templates/src-cordova/res/ios/icon-60.png create mode 100644 templates/src-cordova/res/ios/icon-72-2x.png create mode 100644 templates/src-cordova/res/ios/icon-72.png create mode 100644 templates/src-cordova/res/ios/icon-83.5-2x.png create mode 100644 templates/src-cordova/res/ios/icon.png create mode 100644 templates/src-cordova/res/screen/android/screen-hdpi-landscape.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/android/screen-hdpi-portrait.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/android/screen-ldpi-landscape.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/android/screen-ldpi-portrait.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/android/screen-mdpi-landscape.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/android/screen-mdpi-portrait.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/android/screen-xhdpi-landscape.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/android/screen-xhdpi-portrait.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/android/screen-xxhdpi-landscape.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/android/screen-xxhdpi-portrait.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/android/screen-xxxhdpi-landscape.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/android/screen-xxxhdpi-portrait.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/ios/Default@2x~universal~anyany.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/ios/screen-ipad-landscape-2x.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/ios/screen-ipad-landscape2.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/ios/screen-ipad-portrait-2x.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/ios/screen-ipad-portrait.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/ios/screen-iphone-landscape-2x.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/ios/screen-iphone-landscape.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/ios/screen-iphone-portrait-2x.png.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/ios/screen-iphone-portrait-568h_2x.png.REMOVED.git-id create mode 100644 templates/src-cordova/res/screen/ios/screen-iphone-portrait.png.png.REMOVED.git-id create mode 100644 templates/src-cordova/www/index.html create mode 100644 templates/src-electron/electron-flag.d.ts create mode 100644 templates/src-electron/icons/icon.icns.REMOVED.git-id create mode 100644 templates/src-electron/icons/icon.ico create mode 100644 templates/src-electron/icons/linux-512x512.png create mode 100644 templates/src-electron/main-process/electron-main.dev.js create mode 100644 templates/src-electron/main-process/electron-main.js create mode 100644 templates/src-electron/main-process/electron-preload.js create mode 100644 templates/src/App.vue create mode 100644 templates/src/assets/quasar-logo-full.svg create mode 100644 templates/src/assets/sad.svg create mode 100644 templates/src/boot/.gitkeep create mode 100644 templates/src/boot/axios_request.js create mode 100644 templates/src/boot/bus.js create mode 100644 templates/src/boot/i18n.js create mode 100644 templates/src/boot/notify_default.js create mode 100644 templates/src/boot/quasar-lang-pack.js create mode 100644 templates/src/boot/vueMain.js create mode 100644 templates/src/components/lottie-web-cimo.vue create mode 100644 templates/src/components/welcome.json.REMOVED.git-id create mode 100644 templates/src/components/xlsx.full.min.js.REMOVED.git-id create mode 100644 templates/src/css/app.sass create mode 100644 templates/src/css/quasar.variables.sass create mode 100644 templates/src/db/database.js create mode 100644 templates/src/db/schema.js create mode 100644 templates/src/i18n/ar/index.js create mode 100644 templates/src/i18n/de/index.js create mode 100644 templates/src/i18n/en-us/index.js create mode 100644 templates/src/i18n/fr/index.js create mode 100644 templates/src/i18n/index.js create mode 100644 templates/src/i18n/it/index.js create mode 100644 templates/src/i18n/ja/index.js create mode 100644 templates/src/i18n/pt/index.js create mode 100644 templates/src/i18n/ru/index.js create mode 100644 templates/src/i18n/sp/index.js create mode 100644 templates/src/i18n/zh-hans/index.js create mode 100644 templates/src/i18n/zh-hant/index.js create mode 100644 templates/src/index.template.html create mode 100644 templates/src/layouts/MainLayout.vue create mode 100644 templates/src/layouts/MainLayoutMobile.vue create mode 100644 templates/src/layouts/MainLayoutScannerUrovo.vue create mode 100644 templates/src/layouts/MainLayoutScannerZebra.vue create mode 100644 templates/src/layouts/initial.vue create mode 100644 templates/src/pages/Error404.vue create mode 100644 templates/src/pages/Index.vue create mode 100644 templates/src/pages/IndexMobile.vue create mode 100644 templates/src/pages/IndexScanner.vue create mode 100644 templates/src/pages/baseinfo/baseinfo.vue create mode 100644 templates/src/pages/baseinfo/company.vue create mode 100644 templates/src/pages/baseinfo/customer.vue create mode 100644 templates/src/pages/baseinfo/supplier.vue create mode 100644 templates/src/pages/customerdn/customer.vue create mode 100644 templates/src/pages/customerdn/customerdnlist.vue create mode 100644 templates/src/pages/customerdn/pod.vue create mode 100644 templates/src/pages/dashboard/dashboard.vue create mode 100644 templates/src/pages/dashboard/inbound.vue create mode 100644 templates/src/pages/dashboard/inboundAndOutbound.vue create mode 100644 templates/src/pages/dashboard/outbound.vue create mode 100644 templates/src/pages/downloadcenter/download.vue create mode 100644 templates/src/pages/downloadcenter/downloadbinlist.vue create mode 100644 templates/src/pages/downloadcenter/downloadgoodslist.vue create mode 100644 templates/src/pages/downloadcenter/downloadinbound.vue create mode 100644 templates/src/pages/downloadcenter/downloadoutbound.vue create mode 100644 templates/src/pages/downloadcenter/downloadstocklist.vue create mode 100644 templates/src/pages/driverlist/dispatchlist.vue create mode 100644 templates/src/pages/driverlist/driver.vue create mode 100644 templates/src/pages/driverlist/driverlist.vue create mode 100644 templates/src/pages/finance/capitallist.vue create mode 100644 templates/src/pages/finance/finance.vue create mode 100644 templates/src/pages/finance/freight.vue create mode 100644 templates/src/pages/goods/goods.vue create mode 100644 templates/src/pages/goods/goodsbrand.vue create mode 100644 templates/src/pages/goods/goodsclass.vue create mode 100644 templates/src/pages/goods/goodscolor.vue create mode 100644 templates/src/pages/goods/goodslist.vue create mode 100644 templates/src/pages/goods/goodsorigin.vue create mode 100644 templates/src/pages/goods/goodsshape.vue create mode 100644 templates/src/pages/goods/goodsspecs.vue create mode 100644 templates/src/pages/goods/goodsunit.vue create mode 100644 templates/src/pages/inbound/asn.vue create mode 100644 templates/src/pages/inbound/asnfinish.vue create mode 100644 templates/src/pages/inbound/inbound.vue create mode 100644 templates/src/pages/inbound/more.vue create mode 100644 templates/src/pages/inbound/predeliverystock.vue create mode 100644 templates/src/pages/inbound/preloadstock.vue create mode 100644 templates/src/pages/inbound/presortstock.vue create mode 100644 templates/src/pages/inbound/shortage.vue create mode 100644 templates/src/pages/inbound/sortstock.vue create mode 100644 templates/src/pages/mobile/baseinfo/baseinfo.vue create mode 100644 templates/src/pages/mobile/baseinfo/customer.vue create mode 100644 templates/src/pages/mobile/baseinfo/supplier.vue create mode 100644 templates/src/pages/mobile/dashboard/dashboard.vue create mode 100644 templates/src/pages/mobile/dashboard/inboundAndOutbound.vue create mode 100644 templates/src/pages/mobile/driverlist/dispatchlist.vue create mode 100644 templates/src/pages/mobile/driverlist/driver.vue create mode 100644 templates/src/pages/mobile/driverlist/driverlist.vue create mode 100644 templates/src/pages/mobile/finance/capitallist.vue create mode 100644 templates/src/pages/mobile/finance/finance.vue create mode 100644 templates/src/pages/mobile/finance/freight.vue create mode 100644 templates/src/pages/mobile/goods/goods.vue create mode 100644 templates/src/pages/mobile/goods/goodslist.vue create mode 100644 templates/src/pages/mobile/inbound/asn.vue create mode 100644 templates/src/pages/mobile/inbound/asnfinish.vue create mode 100644 templates/src/pages/mobile/inbound/inbound.vue create mode 100644 templates/src/pages/mobile/outbound/dn.vue create mode 100644 templates/src/pages/mobile/outbound/outbound.vue create mode 100644 templates/src/pages/mobile/outbound/shippedstock.vue create mode 100644 templates/src/pages/mobile/staff/staff.vue create mode 100644 templates/src/pages/mobile/staff/stafflist.vue create mode 100644 templates/src/pages/mobile/staff/stafflist_check_code.vue create mode 100644 templates/src/pages/mobile/stock/stock.vue create mode 100644 templates/src/pages/mobile/stock/stockbinlist.vue create mode 100644 templates/src/pages/mobile/stock/stocklist.vue create mode 100644 templates/src/pages/mobile/warehouse/binset.vue create mode 100644 templates/src/pages/mobile/warehouse/warehouse.vue create mode 100644 templates/src/pages/mobile/warehouse/warehouseset.vue create mode 100644 templates/src/pages/outbound/backorder.vue create mode 100644 templates/src/pages/outbound/dn.vue create mode 100644 templates/src/pages/outbound/freshorder.vue create mode 100644 templates/src/pages/outbound/neworder.vue create mode 100644 templates/src/pages/outbound/outbound.vue create mode 100644 templates/src/pages/outbound/pickedstock.vue create mode 100644 templates/src/pages/outbound/pickinglist.vue create mode 100644 templates/src/pages/outbound/pickstock.vue create mode 100644 templates/src/pages/outbound/pod.vue create mode 100644 templates/src/pages/outbound/shippedstock.vue create mode 100644 templates/src/pages/scan/cyclecount.vue create mode 100644 templates/src/pages/scan/goodslist.vue create mode 100644 templates/src/pages/scan/locationquery.vue create mode 100644 templates/src/pages/scan/movetobin.vue create mode 100644 templates/src/pages/scan/picking.vue create mode 100644 templates/src/pages/scan/shipping.vue create mode 100644 templates/src/pages/scan/sorting.vue create mode 100644 templates/src/pages/scan/stocklist.vue create mode 100644 templates/src/pages/scan/uptobin.vue create mode 100644 templates/src/pages/scan/urovoscan.vue create mode 100644 templates/src/pages/scan/zebrascan.vue create mode 100644 templates/src/pages/shopid/douyin.vue create mode 100644 templates/src/pages/shopid/shopid.vue create mode 100644 templates/src/pages/staff/staff.vue create mode 100644 templates/src/pages/staff/stafflist.vue create mode 100644 templates/src/pages/staff/stafflist_check_code.vue create mode 100644 templates/src/pages/staff/stafftype.vue create mode 100644 templates/src/pages/stock/cyclecount.vue create mode 100644 templates/src/pages/stock/cyclecountrecorder.vue create mode 100644 templates/src/pages/stock/emptybin.vue create mode 100644 templates/src/pages/stock/occupiedbin.vue create mode 100644 templates/src/pages/stock/stock.vue create mode 100644 templates/src/pages/stock/stockbinlist.vue create mode 100644 templates/src/pages/stock/stocklist.vue create mode 100644 templates/src/pages/supplierasn/supplier.vue create mode 100644 templates/src/pages/supplierasn/supplierasnfinish.vue create mode 100644 templates/src/pages/supplierasn/supplierasnlist.vue create mode 100644 templates/src/pages/uploadcenter/addupload.vue create mode 100644 templates/src/pages/uploadcenter/initializeupload.vue create mode 100644 templates/src/pages/uploadcenter/upload.vue create mode 100644 templates/src/pages/uploadcenter/uploadlist.vue create mode 100644 templates/src/pages/warehouse/binset.vue create mode 100644 templates/src/pages/warehouse/binsize.vue create mode 100644 templates/src/pages/warehouse/property.vue create mode 100644 templates/src/pages/warehouse/warehouse.vue create mode 100644 templates/src/pages/warehouse/warehouseset.vue create mode 100644 templates/src/router/index.js create mode 100644 templates/src/router/routes.js create mode 100644 templates/src/store/bardata/actions.js create mode 100644 templates/src/store/bardata/getters.js create mode 100644 templates/src/store/bardata/index.js create mode 100644 templates/src/store/bardata/mutations.js create mode 100644 templates/src/store/bardata/state.js create mode 100644 templates/src/store/fabchange/actions.js create mode 100644 templates/src/store/fabchange/getters.js create mode 100644 templates/src/store/fabchange/index.js create mode 100644 templates/src/store/fabchange/mutations.js create mode 100644 templates/src/store/fabchange/state.js create mode 100644 templates/src/store/index.js create mode 100644 templates/src/store/scanedsolve/actions.js create mode 100644 templates/src/store/scanedsolve/getters.js create mode 100644 templates/src/store/scanedsolve/index.js create mode 100644 templates/src/store/scanedsolve/mutations.js create mode 100644 templates/src/store/scanedsolve/state.js create mode 100644 templates/src/store/store-flag.d.ts create mode 100644 templates/yarn.lock.REMOVED.git-id create mode 100644 throttle/__init__.py create mode 100644 throttle/admin.py create mode 100644 throttle/apps.py create mode 100644 throttle/filter.py create mode 100644 throttle/migrations/__init__.py create mode 100644 throttle/models.py create mode 100644 throttle/serializers.py create mode 100644 throttle/tests.py create mode 100644 throttle/urls.py create mode 100644 throttle/views.py create mode 100644 uploadfile/__init__.py create mode 100644 uploadfile/admin.py create mode 100644 uploadfile/apps.py create mode 100644 uploadfile/migrations/__init__.py create mode 100644 uploadfile/models.py create mode 100644 uploadfile/serializers.py create mode 100644 uploadfile/tests.py create mode 100644 uploadfile/urls.py create mode 100644 uploadfile/views.py create mode 100644 userlogin/__init__.py create mode 100644 userlogin/admin.py create mode 100644 userlogin/apps.py create mode 100644 userlogin/migrations/__init__.py create mode 100644 userlogin/models.py create mode 100644 userlogin/tests.py create mode 100644 userlogin/urls.py create mode 100644 userlogin/views.py create mode 100644 userprofile/__init__.py create mode 100644 userprofile/admin.py create mode 100644 userprofile/apps.py create mode 100644 userprofile/migrations/__init__.py create mode 100644 userprofile/models.py create mode 100644 userprofile/tests.py create mode 100644 userprofile/views.py create mode 100644 userregister/__init__.py create mode 100644 userregister/admin.py create mode 100644 userregister/apps.py create mode 100644 userregister/migrations/__init__.py create mode 100644 userregister/models.py create mode 100644 userregister/tests.py create mode 100644 userregister/urls.py create mode 100644 userregister/views.py create mode 100644 utils/__init__.py create mode 100644 utils/auth.py create mode 100644 utils/datasolve.py create mode 100644 utils/fbmsg.py create mode 100644 utils/logs.py create mode 100644 utils/md5.py create mode 100644 utils/my_exceptions.py create mode 100644 utils/page.py create mode 100644 utils/permission.py create mode 100644 utils/throttle.py create mode 100644 utils/websocket.py create mode 100644 warehouse/__init__.py create mode 100644 warehouse/admin.py create mode 100644 warehouse/apps.py create mode 100644 warehouse/filter.py create mode 100644 warehouse/migrations/__init__.py create mode 100644 warehouse/models.py create mode 100644 warehouse/serializers.py create mode 100644 warehouse/tests.py create mode 100644 warehouse/urls.py create mode 100644 warehouse/views.py create mode 100644 二次开发合作商名单.md create mode 100644 适配的硬件清单.pdf.REMOVED.git-id diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..6e51dee2 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.vue linguist-language=python diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..879aaf9c --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +node_modules/ +__pycache__/ +authorization.txt +authorization.json +db.sqlite3 +.idea/ +delete.py +*.xlsx diff --git a/Android-APP Build.md b/Android-APP Build.md new file mode 100644 index 00000000..88802f95 --- /dev/null +++ b/Android-APP Build.md @@ -0,0 +1,40 @@ +~~~shell +如何配置Cordova环境,请参考 +http://www.quasarchs.com/quasar-cli/developing-cordova-apps/preparation + +# 进入templates目录,创建src-cordova +quasar mode add cordova +# 进入src-cordova目录 +cd src-cordova +# 部署安卓客户端 +cordova platform add android +输入app名称为org.greaterwms.app +# 返回templates目录,先启动一次项目来创建gradle文件夹 +quasar d -m cordova -T android +Ctrl + c退出 +# 修改gradle版本下载distributionUrl,文件在tempates/src-cordova/platforms/android/gradle/wrapper/gradle-wrapper.properties +distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-4.10.3-all.zip +# 进入src-cordova目录来安装所需要的插件 +cd src-cordova +# 按顺序安装插件 +cordova plugin add cordova-plugin-device +cordova plugin add cordova-plugin-battery-status +cordova plugin add cordova-plugin-camera +cordova plugin add com-darryncampbell-cordova-plugin-intent +cordova plugin add https://gitee.com/Singosgu/cordova-plugin-ubx.git +# 修改适配问题的文件,templates\src-cordova\platforms\android\app\src\main\java\org\apache\cordova\camera\FileProvider.java +第21行的android.support.v4.content.FileProvider,修改为androidx.core.content.FileProvider +# 修改适配问题的文件,templates\src-cordova\platforms\android\app\src\main\java\org\apache\cordova\camera\CameraLauncher.java +第42行的android.support.v4.content.FileProvider,修改为androidx.core.content.FileProvider +# 回到templates,再次启动项目 +quasar d -m cordova -T android + +现在只支持Zebra扫描枪,Zebra扫描枪需要打开广播 +Zebra扫描枪配置请看: +https://github.com/Singosgu/GreaterWMS/blob/master/Zebra-Profile.pdf + +# 打包apk +quasar build -m android + +接下来在dist/cordova/android/apk/release下面可以找到一个未签名的apk,关于怎么签名,自行百度 +~~~ diff --git a/Centos Build(CN).md b/Centos Build(CN).md new file mode 100644 index 00000000..dfed6cc8 --- /dev/null +++ b/Centos Build(CN).md @@ -0,0 +1,71 @@ +~~~shell +su - // 进入管理员账号 +yum update +yum upgrade +yum -y install gcc-c++ // 安装依赖 +yum install zlib-devel xz-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gcc make // 安装python依赖 +yum install nodejs // 安装nodejs +npm install n -g // 安装n +/usr/local/bin/n 14.18.3 // 升级nodejs +npm install npm -g // 升级npm +npm install yarn -g // 安装yarn +npm install @quasar/cli -g // 安装quasar +npm install cordova -g // 安装cordova +quasar -v // 检查 Quasar 版本 +python3 // 查看python版本 +cd /usr/src // 进入src +wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz // 下载python3.9.5 +tar -zxvf Python-3.9.5.tgz // 解压 +cd Python-3.9.5/ // 进入目录 +./configure --enable-optimizations // 编译 +make altinstall // 安装 +mv /usr/bin/python3 /usr/bin/python3.bak // 备份 +ln -s /usr/local/bin/python3.9 /usr/bin/python3 // 建立软连接 +mv /usr/bin/pip3 /usr/bin/pip3.bak // 备份 +ln -s /usr/local/bin/pip3.9 /usr/bin/pip3 // 建立软连接 +python3 // 查看python版本 +pip3 list // 查看pip3 是否安装成功 +yum install git // 安装git +git clone https://github.com/Singosgu/GreaterWMS.git // 下载 GreaterWMS 从 github +chmod -R 755 GreaterWMS // 提权 GreaterWMS 文件夹 +cd GreaterWMS // 进入GreaterWMS文件夹 +pip3 install -r requirements.txt +// 有些时候,你安装这些库会出问题,是因为python3版本的问题,不用担心,pip3 install 出错的库就可以了. +/usr/local/bin/daphne -p 8008 greaterwms.asgi:application +// 现在打开浏览器,输入"127.0.0.1:8008",你会看到500错误,恭喜你,你已经可以正常部署接下来的事情了 +Ctrl + C // 回到GreaterWMS文件夹 +python3 manage.py makemigrations // 数据库生成 +python3 manage.py migrate // 数据库迁移 +/usr/local/bin/daphne -p 8008 greaterwms.asgi:application +// 现在打开浏览器,输入"127.0.0.1:8008",你会看到项目已经运行了 +// 输入 "127.0.0.1:8008/myip", 你会得到你的内网IP,一定记住它 +Ctrl + C // 回到GreaterWMS文件夹 +cd templates //进入 templates 文件夹 +/usr/local/bin/yarn install // 等待Yarn安装完成,其实你也可以npm install ,就是会慢一点 +yarn config set registry https://registry.npm.taobao.org/ //更改yarn为国内源 +/usr/local/bin/quasar d // 使用quasar命令启动前端页面 +// 前端会向 "127.0.0.1:8008"发请求, 在这里我们只是看下项目是不是可以运行 +Ctrl + C // 退回到templates文件夹 + +从2.0.19版本以后,优化了请求地址修改方式,直接修改templates/dist/spa/statics/baseurl.js,中的baseurl和wsurl,就可以成功更改前端请求地址,不再需要做下面的quasar build打包工作。 + +如果需要修改前端内容,则还需要修改templates/public/statics/baseurl.js中的baseurl和wsurl,然后重新使用quasar build进行打包 + +cd src/boot // 进入在src/boot文件夹 +vim axios_request.js // 我们开始更改请求地址 +// 更改 "127.0.0.1" 成你的内网IP, baseurl 是http请求地址 , ws 是 websocket请求地址 +按下 Esc 然后输入 ":wq" 去保存修改 +// 现在,你已经知道怎么部署和修改请求地址了 +/usr/local/bin/quasar build // 需要对修改进行重新打包 +cd .. // 回到GreaterWMS文件夹 +/usr/local/bin/daphne -b 0.0.0.0 -p 8008 greaterwms.asgi:application +// 现在,打开浏览器,输入 "你的内网IP:8008",你可以看到项目已经运行了 + +谢天谢地!!! + +顺便说一句 +1. 你知道了怎么修改请求地址 +2. 你也可以按你的喜好,去更改Port +3. 你更可以使用Nginx或者Apache,把项目发布到互联网上 +~~~ + diff --git a/Centos Build(EN).md b/Centos Build(EN).md new file mode 100644 index 00000000..aaf49c37 --- /dev/null +++ b/Centos Build(EN).md @@ -0,0 +1,45 @@ +~~~shell +su - // Enter root +yum update +yum upgrade +yum -y install gcc-c++ +yum install zlib-devel xz-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gcc make +yum install nodejs +npm install n -g +/usr/local/bin/n 14.18.3 // update nodejs +npm install npm -g +npm install yarn -g +npm install @quasar/cli -g +npm install cordova -g +cd /usr/src +wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz // download python3.9.5 +tar -zxvf Python-3.9.5.tgz +cd Python-3.9.5/ +./configure --enable-optimizations +make altinstall +mv /usr/bin/python3 /usr/bin/python3.bak // backup python3 +ln -s /usr/local/bin/python3.9 /usr/bin/python3 +mv /usr/bin/pip3 /usr/bin/pip3.bak // backup pip3 +ln -s /usr/local/bin/pip3.9 /usr/bin/pip3 +yum install git // install git +git clone https://github.com/Singosgu/GreaterWMS.git // clone GreaterWMS from github +chmod -R 755 GreaterWMS +cd GreaterWMS +pip3 install -r requirements.txt +python3 manage.py makemigrations +python3 manage.py migrate +/usr/local/bin/daphne -p 8008 greaterwms.asgi:application +// open Chrom "127.0.0.1:8008/myip", you will get your internal lan ip, remember it +Ctrl + C // back GreaterWMS folder +cd templates // enter templates folder +/usr/local/bin/yarn install +/usr/local/bin/quasar d // it will start web site +Ctrl + C // back templates folder +cd src/boot +vim axios_request.js // change request baseurl +// change "127.0.0.1" to your internal IP, baseurl is for http, ws is for websocket +// save it +/usr/local/bin/quasar build // build your web site +cd .. // back to GreaterWMS folder +/usr/local/bin/daphne -b 0.0.0.0 -p 8008 greaterwms.asgi:application +// now,you can use "internal IP:8008" to use greaterwms \ No newline at end of file diff --git a/Configure GreaterWMS for the Android environment on Windows .pdf.REMOVED.git-id b/Configure GreaterWMS for the Android environment on Windows .pdf.REMOVED.git-id new file mode 100644 index 00000000..e8cca878 --- /dev/null +++ b/Configure GreaterWMS for the Android environment on Windows .pdf.REMOVED.git-id @@ -0,0 +1 @@ +22a265356ea69c3d30d96cfaaa591988adcc37b1 \ No newline at end of file diff --git a/GreaterWMS V2 Web端脑图(客户端和APP客户端都可以通用).xmind.REMOVED.git-id b/GreaterWMS V2 Web端脑图(客户端和APP客户端都可以通用).xmind.REMOVED.git-id new file mode 100644 index 00000000..c52fd152 --- /dev/null +++ b/GreaterWMS V2 Web端脑图(客户端和APP客户端都可以通用).xmind.REMOVED.git-id @@ -0,0 +1 @@ +e1c14c564fee6800193b329912b295539a0f39ce \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..435b2f67 --- /dev/null +++ b/LICENSE @@ -0,0 +1,202 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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 + https://www.56yhz.com + + 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. diff --git a/Package and sign apk.pdf.REMOVED.git-id b/Package and sign apk.pdf.REMOVED.git-id new file mode 100644 index 00000000..3fddd73c --- /dev/null +++ b/Package and sign apk.pdf.REMOVED.git-id @@ -0,0 +1 @@ +3ea6e343625852897cca8991854acf08d3f46700 \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 00000000..cc220ec9 --- /dev/null +++ b/README.md @@ -0,0 +1,337 @@ +# GreaterWMS--Open Source Warehouse Management System + +

+ +--- + +[中文文档](https://github.com/Singosgu/GreaterWMS/blob/master/README_zh_Hans.md) + +## Production Introduce: + +Fully open source warehouse management system follows Apache License 2.0 and front-back stage decoupling method. API uses restful protocol to facilitate for add-on functions development. The html & js code is constructed with quasar(base on Vue.js v2.6.0+). According to API, it can support business models such as multi warehouse, wave shipment, combined picking and milk-run and so on. + +- Software Copyright Procedures: 10136559 +- GitHub Link: [GitHub](https://github.com/Singosgu/GreaterWMS) +- Gitee Link: [Gitee](https://gitee.com/Singosgu/GreaterWMS) +- Video Tutorials: [YouTube](https://www.youtube.com/channel/UCPW1wciGMIEh7CYOdLnsloA)(All Tutorials Will Upload To Here) +- Home Page: [DEMO](https://www.56yhz.com/)(Register can initial the demo data) +- Mail:mail@56yhz.com +- CIMO-ADMIN(vue-quasar-manage): [GitHub](https://github.com/972784674t/vue-quasar-manage) | [Gitee](https://gitee.com/incimo/vue-quasar-manage) + +--- + +## Our Original Intention: + +I have 15 years old experience focus on supply chain . I find that in this professional field . No freedom customize software can support our business deeply . Any software are closed-source and hardly to customize or dynamic with our suppliers & customers . So I design GreaterWMS , in order to give business highest freedom way to support trade development . + +- Our Vision: If you work in a non IT industry and you love your industry, please using technology to change it. + +--- + +## Development Environment: + +- Python Version 3.9.5 + + +- Django Version 3.1.12 +(This version of Django only supports asynchronous real-time communication) + +- Django-rest-framework Version 3.12.2 + (Highest versions of Django-rest-framework are more compatible with Django3) + +- Django-silk Version 4.1.0 (If you are deploying production, please turn off silk, which is only used for debugging API interface speed, which may leak users' information) + +- Quasar Version 1.7.2 + (You can view the official website of quasar to edit the webside code of greater WMS: [Quasar](https://quasar.dev/)) + +- Vue Version 2.6.0 +(Try not to use vue3, because the development environment does not use vue3, I don't know what will happened) +- API,Follow RESTful + +--- + +## Build Command: + +- Git Clone: + +~~~shell +git clone https://github.com/Singosgu/GreaterWMS.git +~~~ + +- Install Python Library: + +~~~python +pip install -r requirements.txt +~~~ + +Atention: `Installation requires Twisted library, this library sometimes cannot be installed, you need to download it and install it locally` + +- Download Link:[TWISTED](https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted) + +~~~python +pip install Twisted{Version Name Which You Download} +~~~ + +Atention: `Local installation needs to pay attention to the path` + +- Makemigrations the Database: + +~~~python +python manage.py makemigrations +~~~ + +- Migrate Database: + +~~~python +python manage.py migrate +~~~ + +Create a database. Django uses sqlite3 as the default database. If you need other database, please configure DATABASE in greaterwms/settings.py + +### Run Development Server: + +- Dev Run: + +~~~python +daphne -p 8008 greaterwms.asgi:application +~~~ + +### Run Production Server: + +- supervisor Daemon: + +~~~shell +pip install supervisor +~~~ + +Use supervisor to guard the Django process, and then use Nginx as a reverse proxy. As for supervisors, there are many tutorials, so I won’t explain them here. + +- Nginx Support: + +It is recommended to use Nginx for deployment. You need to specify the WebSocket link when deploying. If you do not specify it, the real-time communication function will report an error. + +Also need to modify ws_url in templates/dist/spa/statics/baseurl.js + +~~~shell +## Example changes before +const baseurl = 'http://127.0.0.1:8008/' +const wsurl = 'ws://127.0.0.1:8008/' + +## Example changes after +const baseurl = 'https://Your Production Server/' +const wsurl = 'wss://Your Production Server/websocket/' +~~~ + +If the server has SSL enabled, please use https and wss, if SSL is not enabled, use http and ws + +The front-end code needs to be rebuilt after modification + +--- + +## Development Guide: + +### Baseurl + +- It is the basic URL for initiating the request. If it is for local debugging, the default is http://127.0.0.1:8008/. If it is deployed on the server, you need to change it to your website access URL + +- The modification method is to modify axios_request.js. Attention: `The modification of websocket has been mentioned ` + +### Django-Silk + +- Django-Silk is a debugging tool during development. It can count the response speed of each interface. If you need to deploy to a production environment, please delete the Django-silk related configuration, because there is a risk of leaking user information, or directly modify the Django-silk library , So that users can only see their request data + +### Database Storage + +- Data migration and other issues are considered during database design, so only the user_id in users and the user_id that comes with Django are foreign keys, and all the other fields do not use foreign keys, which is convenient for data backup and database migration. + - The database is a 4-stage design + + 1. Verify data user ownership + 2. Verify data security + 3. Verify that the data can be stored in the database + 4. Save it in the database and return Response + +### About Data Request + +- The token value needs to be added to all request headers. This value is the unique identifier OPENID of the user’s data +- All data transmission needs to set content-type to application/json + +### OPENID + +- OPENID is the unique identifier of registered user data. When the administrator registers directly, there will be developer=1 as the administrator ID. +- You can do custom secondary development based on the developer label + +### APPID + +- APPID is the unique identifier of the user data group +- If you need multi company operation or multi warehouse operation, you can make unified link through appid to realize multi company and multi warehouse operation + +### User Jurisdiction + +- There are not too many restrictions on user authorization. Please limit the secondary development according to your own business needs + +--- + +## Business Process: + +### Administrator + +- Click Register, you can register as an administrator account, so as to realize the initialization program settings +- After registration, you will get two IDs and one developer label. openid is the unique ID of the user data group. All data under this openid is bound through openid. Appid is the unique ID of the user group data. Multi company and multi warehouse functions are realized through appid. The developer ID is a Boolean value, and true represents an administrator account +- There are two way for user login: + 1. Login directly with openid and staff name + 2. Administrator login with account and password +- After login, the web will localstorage login information +- you can view the openid of user data group by view my openid +- If multi company and multi warehouse operation is required, pay attention to change openid +- More administrator authrization, please develop by yourself + +### Staff + +- After registering as an administrator, create a new staff first +- Staff has two fields, staff_ Name (for employee login), staff_ Type (employee type to control employee permissions) +- The system does not have any restrictions on employee permissions. If you need employee permissions, please modify them according to the enterprise business model Templates +- Click Edit to modify the employee information +- Click Delete to delete the staff information. The system will set is_delete to true +- Click Contact: + 1. You can directly chat with employees in real time, but you can't chat with yourself + 2. You can create a new notebook employee, which is actually used as a notebook + 3. In the personal center, you can view recent contacts + 4. The message flag will remind you how many unread messages you have + +### Driver + +- Driver management is only used in the shipping process +- You need to know which driver picked up the goods + +### Warehouse Set + +- Warehouse + 1. You can create only one warehouse. Now you can create multiple warehouses, but only the first one will work + 2. If multi warehouse processing is needed, secondary development can be carried out through appid, or an administrator account can be created directly + 3. The city of the warehouse must be filled in, which is used to calculate the freight +- Bin_Property + 1. The bin property determines the property of the goods in the warehouse + 2. Four property: damage, holding, inspection, normal + 3. In the beta version, property can be modified and deleted, but the release version can not + 4. All shipping process will only match the goods in the normal bin + 5. When goods are received and moved to another bin, the inventory quantity will be directly modified according to the bin property, and the inventory quantity of the warehouse will not be negative +- Bin_Size + 1. The size of bin is to help the operator to check whether the goods can be put into the bin + 2. The current version does not check the dimensions of bin, and automatic inspection will be added in the future +- Bin_Set + 1. Bin setting is necessary. Generally, bin setting is horizontal, vertical and horizontal, such as A010101, i.e. A horizontal, 01 vertical, 01 horizontal and 01 vertical + 2. The setting of bin needs to set the bin property and size. The property is very important, which determines whether the goods in this bin are normal goods + +### Basic Info + +- Company + 1. The creation of basic company information can only create one company. Now you can create multiple companies, but only the first one will work + 2. If multi company processing is needed, secondary development can be carried out through appid, or an administrator account can be created directly + 3. The city of the company must be filled in, which is used to show on the receipt-proof +- Supplier + 1. Basic information of suppliers + 2. The city of the supplier must be filled in, which is used to display on the receipt-proof, and also to calculate the freight automatically +- Customer + 1. Basic information of customers + 2. The customer's city must be filled in, which is used to display on the invoice, and also to automatically calculate the freight + +### Godds + +- Unit + 1. Goods units, the system will initialize to create some, but you can add and modify +- Class + 1. Goods Class, you can add and modify +- Color + 1. Goods color, the system will initialize to create some, but you can add and modify +- Brand + 1. Goods brand, you can add and modify +- Shape + 1. Goods Shape, the system will initialize to create some, but you can add and modify +- Specs + 1. Goods specs, you can add and modify +- Origin + 1. Goods Origin, where initial product goods, you can add and modify +- Goods List + 1. Goods list + +### Capital + +- Capital + 1. The creation of fixed assets, not too much expansion, just record the use + 2. Can be statistical pallets accounts + +### Stock Management + +- Stock List + 1. Total inventory data of goods + 2. Onhand_ Stock quantity on hand + 3. Can order, which can be used to determine the inventory quantity of an order. Some goods have been ordered, but they can't be ordered any more even though they have existing inventory + 4. Ordered stock, the quantity of goods be ordered + 5. ASN stock has issued the arrival notice, but has not confirmed the quantity of goods in the arrival notice + 6. DN stock, has been ordered, but the order quantity has not been confirmed + 7. Pre Load,expected quantity of goods delivered + 8. Pre Sort,the quantity of goods that have arrived, unloaded and waiting to be sorted + 9. Sorted Stock, The quantity of goods waiting to be put on the bin after sorting + 10. Pick Stock, The picking list is generated from the delivery document, and the quantity of goods waiting to be picked + 11. Picked Stock, The quantity of goods that have been picked up and waiting to be handed over to the driver + 12. Back Order Stock, Order quantity in arrears +- Bin Stock + 1. Total Stock, all inventory quantities of the product in this bin + 2. Pick Stock, the quantity of goods to be picked in this bin + 3. Picked stock, the quantity of goods picked in this bin + 4. Move to Bin: after moving, the inventory quantity will be updated directly according to the bin property. If all goods has been moved out from this bin, the bin will be updated to empty +- Empty Bin + 1. Empty bin List +- Occupied Bin + 1. Occupied bin list + +### Inbound + +- ASN + 1. ASN status = 1, the ASN arrival notice is created, and status 1 is the only status that can delete and modify the ASN information. It will be displayed in pre delivery, that is, there is an arrival notice, but it has not arrived. Click confirm delivery to confirm that the goods have arrived, and ASN status will be updated to 2. At this time, the ASN information can no longer be modified + 2. ASN status = 2, it is developed to queue up for the arrival of drivers. If we have many drivers arriving, it can be made into a queuing system. At the same time, it can also let the purchase and sales see the arrival information, reduce unnecessary email and telephone communication. Click finish loading to confirm that the goods have been unloaded, and Asn status will be updated to 3, The goods information will appear in sorting, and the ASN status indicates that the goods have been unloaded to the warehouse and are waiting for sorting + 3. ASN status = 3, goods sorting is a necessary process. Without goods sorting, goods cannot be put on shelves. The principle of putting on shelves is to arrange the goods and put them on the corresponding warehouse location. Click confirm sorted, and Asn status will be updated to 4, that is, confirm the sorting and wait for loading + 4. At this time, when you move the sorted page, the goods details that need to be put on the shelves will appear. Click move to bin to finish the listing. Of course, the system will automatically update the inventory quantity information of goods according to the location attributes after the listing + +### Outbound + +- DN + 1. DN status = 1, when the DN shipping order is created, the order status can still be modified, and the inventory quantity in the system will not change. Click confirm order, and the DN status will be updated to 2, that is, the order has been confirmed and cannot be changed. At the same time, the inventory quantity in the system will be automatically updated, such as can order quantity and ordered quantity + 2. DN Status = 2, This is the process when an order is confirmed and waiting to generate a picking list. You can click order release of a single order to generate a picking list of an order. You can also click release all order to generate a picking list of all orders. If all orders are released, the inventory will be matched according to the time sequence. When the inventory is insufficient, back will be generated In this process, the DN order number will change. For example, multiple orders of a customer will be unified into one order for picking. If the customer's order cannot be satisfied, the unsatisfied part will be generated as a shortage order. If the shortage order is not met by the matched inventory, no new order will be generated. Dn The status will be updated to 3, that is, in the process of waiting for picking, the status will be 2 when both the confirmed order and the shortage order are in the same status + 3. DN Status = 3,Direct picking, this function will appear in beta5 update + 4. DN Status = 4, Delivery handover, this function will appear in beta6 update + 5. DN Status = 5, Customer receiving, this function will appear in beta7 update + 6. DN Status = 6, When the reconciliation is finished and the order is closed, this function will appear in the beta7 update + +### Reject Order + +- RO + This feature will add in the release version + +### Screen Shot + +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ diff --git a/README_zh_Hans.md b/README_zh_Hans.md new file mode 100644 index 00000000..3f553d41 --- /dev/null +++ b/README_zh_Hans.md @@ -0,0 +1,395 @@ +# 聚商汇WMS--开源仓库管理系统 + +

+ +--- + +## 项目介绍: + +完全开源仓储管理软件,遵循Apache License 2.0协议,前后端分离,且完全开源,API使用restful协议,方便二次开发,前端代码使用quasar进行构建,后端使用Python Django3.1,利用API,可以支持多仓,波次发货,合并拣货,Milk-Run等业务模型。 + +- 软件著作权编号:2018SR517685 +- GitHub地址:[GitHub](https://github.com/Singosgu/GreaterWMS) +- Gitee地址:[Gitee](https://gitee.com/Singosgu/GreaterWMS) +- 视频教程:[B站](https://space.bilibili.com/407321291/channel/detail?cid=152043)(所有的教程都会更新在这里) +- Demo地址:[DEMO](https://www.56yhz.com/)(注册会获得初始化Demo数据) +- 技术交流群:![wechat.png](https://github.com/Singosgu/picfile/blob/master/CN/wechat.png?raw=true) +- 邮箱:mail@56yhz.com +- CIMO-ADMIN(vue-quasar-manage): [GitHub](https://github.com/972784674t/vue-quasar-manage) | [Gitee](https://gitee.com/incimo/vue-quasar-manage) + +--- + +## 项目初衷: + +我在供应链行业工作了15年,发现在我们这个专业的领域,没有一款高自由度、高自定义化的软件,来深度支持我们企业的业务。大多数软件都是闭源的,而且很难去做二次开发,即使开发,周期也是非常长,开发失败的案例也是比比皆是。由于企业选择了一款软件后,其二次开发也会被开发公司绑定,至于二次开发费用,只能说呵呵。所以,我设计了这个聚商汇WMS,为的是做到一款高自由度,高自定义开发的仓库管理软件,来深度支持企业的业务。 + +- 愿景:如果你从事着非IT行业的工作,而你又热爱你的行业,那就用科技去改变他。 + +--- + +## 生命周期 + +- V 1.0.0 -- 2019年7月 ~ 2020年12月(由于1.0.0版本的二次开发设计较为复杂,故2.0重新编写) +- V 2.0.0 -- 2020年12月 ~ 2021年3月(重新编写业务逻辑,原生自带API开发文档,加入实时通信,方便企业用户互相沟通) +- V 2.1.0 -- 2021年3月 ~ 2021年6月(加入了客户与企业之间的实时互动,增进企业与客户之间的业务联系,实现VMI) +- V 2.2.0 -- 2020年6月 ~ 2021年9月(加入了供应商与企业之间的实时互动,增进企业与供应商之间的业务联系,实现Milk-Run和看板拉动) +- V 2.3.0 -- 2021年9月 ~ 2021年12月(库存管理雏形,初步加入神经网络,深度学习库存变化) +- V 3.0.0 -- 2021年12月 ~ 2022年3月(完全植入神经网络,让上下游企业可以以最低的成本运营整体的业务) +- V 3.1.0 -- 2022年3月 ~ 2022年6月(区域仓库业务布局,通过深度学习,实现多仓运营,成本最低化) + +--- + +## 开发环境: + +- Python 版本为 V 3.8.0 + + +- Django 版本为 V 3.1.0 +(该版本Django才原生支持异步实时通信) + +- Django-rest-framework 版本为 V 3.12.2 + (更高版本的Django-rest-Framework对Django3的兼容比较好) + +- Django-silk 版本为 V 4.1.0 (如果是部署上线,请关闭silk,silk仅为调试API接口速度用,有可能会泄露用户信息) + +- Quasar 版本为 V1.7.2 + (可以查看Quasar官网,来编辑GreaterWMS前端代码:[Quasar官网](http://www.quasarchs.com/)) + +- Vue 版本为 V 2.6.0 +(尽量不要使用Vue3,因为开发环境没有使用Vue3,不知道会出现什么问题) +- API,遵循 RESTful 架构 + +--- + +## 构建命令: + +- 下载代码: + +~~~shell +git clone https://github.com/Singosgu/GreaterWMS.git +~~~ + +- 安装Python库: + +~~~python +pip install -r requirements.txt +~~~ + +注意:`安装需要Twisted库,这个库有时候会安装不上,需要下载下来本地安装` + +- 下载地址:[TWISTED](https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted) + +~~~python +pip install Twisted{你下载下来的版本名称} +~~~ + +注意:`本地安装需要注意路径` + +- 初始化数据库: + +~~~python +python manage.py makemigrations +~~~ + +- 迁移数据库: + +~~~python +python manage.py migrate +~~~ + +创建数据库,Django默认使用sqlite3作为数据库,如果需要mysql数据库,请在greaterwms/settings.py里面配置DATABASE + +### 开发服务器运行: + +- 开发运行: + +~~~python +daphne -p 8008 greaterwms.asgi:application +~~~ + +### 生产服务器运行: + +- supervisor守护进程: + +~~~shell +pip install supervisor +~~~ + +使用supervisor来守护Django进程,再使用Nginx做反向代理,至于superevisor的教程有很多,这里不做讲解 + +- Nginx支持: + +推荐使用Nginx进行部署,部署的时候需要指定WebSocket链接,如果不指定,实时通信功能将报错 + +另需要修改从2.0.19版本以后,优化了请求地址修改方式,直接修改templates/dist/spa/statics/baseurl.js,中的baseurl和wsurl,就可以成功更改前端请求地址,不再需要做下面的quasar build打包工作。 + +如果需要修改前端内容,则还需要修改templates/public/statics/baseurl.js中的baseurl和wsurl,然后重新使用quasar build进行打包里的ws_url + +~~~shell +## 示例更改前 +const baseurl = 'http://127.0.0.1:8008/' +const wsurl = 'ws://127.0.0.1:8008/' + +## 示例更改后 +const baseurl = 'https://你的域名/' +const wsurl = 'wss://你的域名/websocket/' +~~~ + +如果服务器启用了SSL,请使用https和wss,如果没有启用SSL,则使用http和ws + +修改后需要重新build前端代码 + +--- + +## 开发扩展: + +因为使用的前后端分离的设计,所以可以通过API,开发更多的软件应用 + +### 物流智能AGV + +- AGV的项目也已经开源,由于场地受限,仅实现智能发货,定点回库,使用的循迹感应器,超声波避障感应器,红外避障感应器,所有的指令通过网络传输,AGV绑定MAC地址和IP地址,保证了安全性,前提是,你需要有一个树莓派。 + +### 进销存 + +- 可以直接当一个进销存系统使用,简化仓库库位设置等操作即可。 + +### APP和小程序 + +- Quasar原生可以直接打包成IOS APP和Android APP +- 小程序的开发可以通过API开做二次开发,但小程序不支持put请求,所以需要自己再写一个请求接口。 + +- API的组合可以达到100万种,这样我们可以根据查询请求,来获得实时报表和数据监控 + +### 供应链管理系统 + +- 产品的数量,创建时间,最后使用时间是各方面统计的,所以可以方便采购计划和调拨计划进行库存的分析 +- V 2.3.0及其以后的版本,将自带深度学习分析,所以可以直接使用分析结果作为供应链管理系统工具使用 + +### 多仓管理 + +- OPENID为用户的数据唯一标识,数据组统一标识为APPID,所以很方便可以实现多仓管理 + +### 波次拣货,发货 + +- 可以设置固定时间向服务器发出请求,从而达到波次拣货的功能 + +- 也可以直接使用任务工作,通过API查询分析结果来实现,推荐使用[APScheduler](https://pypi.org/project/APScheduler/) + + ~~~python + pip install apscheduler + ~~~ + +### Milk-Run + +- V 2.2.0及其以上版本,将原生支持此功能 +- 如果现在就需要这个业务,可以根据API调用库存消耗,来实现此功能 + +### VMI + +- V 2.1.0及其以上版本,将原生支持此功能 +- 如果现在就需要这个业务,可以根据API调用库存消耗,来实现此功能 + +### 拣货路线优化 + +- 现在的拣货路线是按照库位排序 +- V 2.3.0以后版本将原生支持此功能 +- 如果现在需要这个业务,可以根据每天的拣货明细,调用API来实现此功能 + +--- + +## 开发指南: + +### baseurl + +- 是发起请求的基本网址,如果是本地调试,则默认为http://127.0.0.1:8008/ ,如果部署在服务器,则需要将其改为你的网站访问url + +- 修改方式为,修改axios_request.js,注意`websocket的修改之前已经提到了` + +### Django-silk + +- django-silk为开发时的调试工具,可以统计每个接口的响应速度,如果需要部署到生产环境,请删除Django-silk相关配置,因为会有泄露用户信息的风险,或者直接修改Django-silk库,让用户只能看到自己的请求数据 + +### 数据库存储 + +- 数据库设计时考虑到数据迁移等问题,所以只有users里面的user_id和Django自带的user_id做了外键,其余所有字段全部没有使用外键,方便数据备份和数据库迁移 +- 数据库是4段式设计 + 1. 验证数据用户归属 + 2. 验证数据安全性 + 3. 验证数据是否可以存入数据库 + 4. 存入数据库,并返回Response + +### 关于数据传输 + +- 需要在所有的请求头headers里面加入token值,这个值就是用户的数据唯一标识OPENID +- 所有的数据传输需要设定content-type为application/json + +### OPENID + +- OPENID是注册用户数据的唯一标识,当管理员直接注册时,会有developer=1这个管理员标识。 +- 你可以根据developer标识来做自定义二次开发 + +### APPID + +- APPID是用户数据组唯一标识 +- 如果需要多公司运营,或者多仓运营,可以通过APPID做统一链接,来实现多公司,多仓操作 + +### 用户权限 + +- 未对用户权限做过多限制,请根据自身的业务需要,做二次开发限制 + +--- + +## 业务流程: + +### 管理员 + +- 点击注册,可以注册成为管理员账号,从而实现初始化程序设置 +- 注册后会得到2个ID和1个开发者标识,OPENID是用户数据组唯一标识,通过OPENID绑定此OPENID下所有的数据,APPID是用户组数据唯一标识,通过APPID来实现多公司,多仓库功能,Developer标识是个布尔值,True代表这是个管理员账号 +- 用户登入分2种: + 1. 使用OPENID和员工名称直接登入 + 2. 管理员使用账号和密码登入 +- 登入后前端会存储登入信息 +- 可以通过查看我的OPENID来查看用户数据组的OPENID +- 如果需要多公司,多仓库操作,注意需要更改OPENID +- 更多管理员权限,请自行开发 + +### 员工管理 +- 注册管理员后,新建一个员工 +- 员工有2个字段,Staff_name(用于员工登入),Staff_type(员工类型来控制员工的权限) +- 系统没有对员工权限做任何限制,如果需要员工权限,请根据企业业务模型,自行修改Templates +- 点击Edit,可以修改员工信息 +- 点击Delete,可以删除员工信息,系统后台会将Is_delete调成True +- 点击Contact: + 1. 可以直接和员工实时聊天,但是不可以和自己聊天 + 2. 可以新建一个备忘录员工,这样做其实是当成备忘录使用 + 3. 在个人中心,可以查看最近的联系人 + 4. Message标识会提醒你现在有多少未读消息 + +### 司机管理 +- 司机管理只会在发货流程中用到 +- 你需要知道货物是哪个司机提货取走的 + +### 仓库设置 +- Warehouse + 1. 仓库的创建只可以创建一个仓库,现在可以创建多个,但是只有第一个会起作用 + 2. 如果需要多仓处理,可以通过APPID进行二次开发,也可以直接重新创建一个管理员账号 + 3. 仓库的城市一定要填写,这是用来计算运费的 +- Bin_Property + 1. 库位属性决定了仓库中货物属于什么属性的货物 + 2. 4种属性:破损(Damage),锁定(Holding),质检(Inspection),正常(Normal) + 3. Beta版中,属性可以修改和删除,正式版将无法删除和修改 + 4. 所有的发货,都只会匹配Normal库位的货物 + 5. 收货上架和移库,都会根据库位属性,直接修改库存数量,仓库的库存数量不会出现负数 +- Bin_Size + 1. 库位的尺寸是帮助操作人员查看货物是否可以放入库位 + 2. 现行的版本没有对上架和移库尺寸做检查,将来会加入自动检查 +- Bin_Set + 1. 库位设置是必须的,通常库位设置是横纵横纵,比如A010101,即A横01纵01横01纵 + 2. 库位的设置需要设置库位属性和尺寸,属性很重要,他决定了此库位的货物是否为正常货物 + +### 基础设置 +- Company + 1. 公司基本信息的创建只可以创建一个公司,现在可以创建多个,但是只有第一个会起作用 + 2. 如果需要多公司处理,可以通过APPID进行二次开发,也可以直接重新创建一个管理员账号 + 3. 公司的城市一定要填写,这是用来显示在收发货单上的 +- Supplier + 1. 供应商的基础信息 + 2. 供应商的城市一定要填写,这是用来显示在收货单上的,并且也是要自动计算运费的 +- Customer + 1. 客户的基础信息 + 2. 客户的城市一定要填写,这是用来显示在发货单上的,并且也是要自动计算运费的 + +### 商品管理 +- Unit + 1. 商品的单位,系统会初始化创建一些,但可以自己添加和修改 +- Class + 1. 商品的类型,可以自己添加和修改 +- Color + 1. 商品的颜色,系统会初始化创建一些,但可以自己添加和修改 +- Brand + 1. 商品的品牌,可以自己添加和修改 +- Shape + 1. 商品的形状,系统会初始化创建一些,但可以自己添加和修改 +- Specs + 1. 商品的规格,可以自己添加和修改 +- Origin + 1. 商品的产地,可以自己添加和修改 +- Goods List + 1. 商品的列表 + +### 固定资产 +- Capital + 1. 固定资产创建,没有做过多拓展,只是记录使用 + 2. 可以统计托盘账目等 + +### 库存管理 +- Stock List + 1. 在库的货物总的库存数据量 + 2. Onhand_stock现有的库存数量 + 3. Can Order,可以用于下单发货的库存数量,因为有些货物已经被下了订单,虽然有现有库存,但是不可以再被订货 + 4. Ordered Stock,已经被下单的货物数量 + 5. ASN Stock,已经下了到货通知书,但还没有确认到货通知书的货物数量 + 6. DN Stock,已被下单,但是还没有确认订单数量 + 7. Pre Load,预计到货货物数量 + 8. Pre Sort,已经到货,卸货完成,等待分拣的货物数量 + 9. Sorted Stock,货物分拣完成,等待上架的货物数量 + 10. Pick Stock,发货单生成了拣货单,等待拣货的货物数量 + 11. Picked Stock,已经拣货完成,等待和司机交接的货物数量 + 12. Back Order Stock,欠货订单数量 +- Bin Stock + 1. Total Stock,这个库位该产品的所有库存数量 + 2. Pick Stock,这个库位需要拣货的数量 + 3. Picked Stock,这个库位拣货完成的数量 + 4. Move To Bin, 移库,移库后,会根据库位属性,直接更新库存数量,如果库位全部移空,则该库位会更新为空库位 +- Empty Bin + 1. 空库位明细 +- Occupied Bin + 1. 非空库位明细 + +### 收货管理 +- ASN到货通知书状态 + 1. ASN Status = 1, ASN到货通知书创建完成,状态1是唯一可以删除和修改ASN信息的状态,他会显示在Pre Delivery中,即有了到货通知书,但是还没有到货,点击Confirm Delivery,即确认货物已经到达,ASN Status更新到2,此时已经无法再修改ASN信息 + 2. ASN Status = 2, 拓展开发为司机到货排队,如果我们有很多司机到货,这可以做成一个排队系统,同时也可以让采购和销售看到到货信息,减少不必要的邮件和电话沟通,点击Finish Loading,即确认货物已经卸货完成,ASN Status更新到3,货物信息会出现在Sorting,此时的ASN状态表示,货物已卸到仓库,等待分拣 + 3. ASN Status = 3, 货物分拣是必须的一个流程,没有货物分拣,货物是无法上架的,上架的原则就是货物整理好,摆放到相对应的库位上,点击Confirm Sorted,ASN Status更新到4,即确认分拣完成,等待上架 + 4. 此时移动Sorted页面,会出现需要上架的货物明细,点击Move To Bin,上架完成,当然,系统会根据上架后的库位属性,自动更新商品库存数量信息 +### 发货管理 +- DN发货单状态 + 1. DN Status = 1, DN发货单创建完成,此时订单还是可以修改状态,且系统中的库存数量不会发生任何改变,点击Confirm Order,DN Status更新到2,即订单已经被确认,且无法更改,同时系统中的货物库存数量会自动更新,比如Can Order数量和Ordered数量 + 2. DN Status = 2, 这是订单被确认等待生成拣货单的过程,你可以点击单条订单Order Release来生成一个订单的拣货单,你也可以点击Release All Order,来将所有订单生成拣货单,如果是所有订单Release,那么会根据时间的先后进行库存匹配,库存不足时,会生成Back Order,即欠货订单,在这个过程中,DN单号是会发生改变的,如一家客户的多张订单,会被统一到一张订单中进行拣货,如客户订单无法满足,会将未满足部分生成欠货订单,欠货订单如果仍未得到匹配库存满足,将不再生成新的订单,DN Status会更新到3,即等待拣货的过程,已确认的订单和欠货订单都时Status为2的状态 + 3. DN Status = 3, 直接拣货,此功能会出现在Beta5更新 + 4. DN Status = 4, 发货交接,此功能会出现在Beta6更新 + 5. DN Status = 5, 客户签收,此功能会出现在Beta7更新 + 6. DN Status = 6, 对账结束,订单关闭,此功能会出现在Beta7更新 +### 退货管理 +- RO退货订单 + 此功能将会出现在正式版中 +### 运费管理 +- Transportation Fee + API已经完成,前端暂未更新入口,如果想要使用,可以直接调用Payment下的Transportation Fee API进行使用,运费自动计算模块已经做进收发货流程中 + +### 界面截图 + +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+

+ +

+ +

+ +

+ diff --git a/Regarding the Windows system configuration of the Android environment revision version of GreaterWMS.pdf.REMOVED.git-id b/Regarding the Windows system configuration of the Android environment revision version of GreaterWMS.pdf.REMOVED.git-id new file mode 100644 index 00000000..c17bdecf --- /dev/null +++ b/Regarding the Windows system configuration of the Android environment revision version of GreaterWMS.pdf.REMOVED.git-id @@ -0,0 +1 @@ +7617270580ae099de75afba1ee0dfaf912f22a6d \ No newline at end of file diff --git a/Ubuntu Build(CN).md b/Ubuntu Build(CN).md new file mode 100644 index 00000000..0ea0f3c7 --- /dev/null +++ b/Ubuntu Build(CN).md @@ -0,0 +1,65 @@ +~~~shell +sudo apt update +sudo apt upgrade +sudo apt install vim-gtk // 安装 vim +cd ~ // 到达Home目录 +vi .bashrc // 把 "alias vi=vim" 加进 bashrc +source .bashrc // 刷新生效bashrc +sudo apt install git // 安装 git +sudo git clone https://github.com/Singosgu/GreaterWMS.git // 下载 GreaterWMS 从 github +sudo apt install nodejs // 安装 nodejs +sudo apt install npm // 安装 npm +sudo npm install n -g // 安装 n +sudo n stable // 下载 nodejs 的稳定版本 +// 你需要确定你的nodejs是12或者14版本,Quasar只支持12或者14版本 +// 这步完成以后,你需要重新启动你的Terminal,要不然升级不生效 +sudo npm install npm -g // 升级 NPM 到最新版本 +sudo npm install yarn -g // 安装 yarn +sudo npm install -g @quasar/cli // 安装 quasar/cli +quasar -v // 检查 Quasar 版本 +python3 // 确定你的python版本是3.8以上版本,原则上3.6也是可以的,但是安装库会有些问题 +pip3 list // 确定你是否安装有 pip3 +sudo apt install python3-pip // 如果你没有pip3 ,就安装一下 +pip3 list // 检查下是否安装成功 +sudo chmod -R 755 GreaterWMS // 提权 GreaterWMS 文件夹 +cd GreaterWMS // 进入GreaterWMS文件夹 +sudo pip3 install -r requirements.txt +// 有些时候,你安装这些库会出问题,是因为python3版本的问题,不用担心,sudo pip3 install 出错的库就可以了. +sudo daphne -p 8008 greaterwms.asgi:application +// 现在打开浏览器,输入"127.0.0.1:8008",你会看到500错误,恭喜你,你已经可以正常部署接下来的事情了 +Ctrl + C // 回到GreaterWMS文件夹 +sudo python3 manage.py makemigrations // 数据库生成 +sudo python3 manage.py migrate // 数据库迁移 +sudo daphne -p 8008 greaterwms.asgi:application +// 现在打开浏览器,输入"127.0.0.1:8008",你会看到项目已经运行了 +// 输入 "127.0.0.1:8008/myip", 你会得到你的内网IP,一定记住它 +Ctrl + C // 回到GreaterWMS文件夹 +cd templates //进入 templates 文件夹 + +从2.0.19版本以后,优化了请求地址修改方式,直接修改templates/dist/spa/statics/baseurl.js,中的baseurl和wsurl,就可以成功更改前端请求地址,不再需要做下面的quasar build打包工作。 + +如果需要修改前端内容,则还需要修改templates/public/statics/baseurl.js中的baseurl和wsurl,然后重新使用quasar build进行打包 + +sudo yarn config set registry https://registry.npm.taobao.org/ //更改yarn为国内源 +sudo yarn install // 等待Yarn安装完成,其实你也可以sudo npm install ,就是会慢一点 +sudo quasar d // 使用quasar命令启动前端页面 +// 前端会向 "127.0.0.1:8008"发请求, 在这里我们只是看下项目是不是可以运行 +Ctrl + C // 退回到templates文件夹 +cd src/boot // 进入在src/boot文件夹 +sudo vim axios_request.js // 我们开始更改请求地址 +// 更改 "127.0.0.1" 成你的内网IP, baseurl 是http请求地址 , ws 是 websocket请求地址 +按下 Esc 然后输入 ":wq" 去保存修改 +// 现在,你已经知道怎么部署和修改请求地址了 +sudo quasar build // 需要对修改进行重新打包 +cd .. // 回到GreaterWMS文件夹 +sudo daphne -b 0.0.0.0 -p 8008 greaterwms.asgi:application +// 现在,打开浏览器,输入 "你的内网IP:8008",你可以看到项目已经运行了 + +谢天谢地!!! + +顺便说一句 +1. 你知道了怎么修改请求地址 +2. 你也可以按你的喜好,去更改Port +3. 你更可以使用Nginx或者Apache,把项目发布到互联网上 +~~~ + diff --git a/Ubuntu Build(EN).md b/Ubuntu Build(EN).md new file mode 100644 index 00000000..77efb3b2 --- /dev/null +++ b/Ubuntu Build(EN).md @@ -0,0 +1,59 @@ +~~~shell +sudo apt update +sudo apt upgrade +sudo apt install vim-gtk // install vim +cd ~ // Go to home follder +vi .bashrc // add "alias vi=vim" in bashrc +source .bashrc // refresh bashrc +sudo apt install git // install git +sudo git clone https://github.com/Singosgu/GreaterWMS.git // Download GreaterWMS from github +sudo apt install nodejs // install nodejs +sudo apt install npm // install npm +sudo npm install n -g // update n +sudo n stable // Download nodejs to stable version +// You must confirm your nodejs version is 14 or 12 , cause Quasar just support 12 or 14 +// after this step , you should re-open your terminal +sudo npm install npm -g // update npm to latestest +sudo npm install yarn -g // install yarn +sudo npm install -g @quasar/cli // install quasar/cli +quasar -v // check quasar version +python3 // To check your python version is 3.8 above +pip3 list // To check whether you have pip3 +sudo apt install python3-pip // if you don't have pip3 , install it +pip3 list // check again +sudo chmod -R 755 GreaterWMS // approve GreaterWMS chmod +cd GreaterWMS +sudo pip3 install -r requirements.txt +// Some times , you can not install some lib . Cause your python3 version . Don't worry, sudo pip3 install it is ok. +sudo daphne -p 8008 greaterwms.asgi:application +// Now, Open the brower and enter "127.0.0.1:8008", If you see 500 error . Congratuation, you success. +Ctrl + C // out to terminal +sudo python3 manage.py makemigrations // database create +sudo python3 manage.py migrate // database create +sudo daphne -p 8008 greaterwms.asgi:application +// Now, Open the brower and enter "127.0.0.1:8008". You can see our project run +// Now , Enter "127.0.0.1:8008/myip", you will get Intranet ip, recorde it +Ctrl + C // out to terminal +cd templates // Go to templates follder +sudo yarn install // Waiting for yarn install +sudo quasar d // run quasar web +// quasar web will send request to "127.0.0.1:8008", this step just to check whether it can be run +Ctrl + C // out to terminal +cd src/boot // go to boot follder +sudo vim axios_request.js // go to this file to change the request link +// change "127.0.0.1" to your Intranet ip , baseurl is for http , ws is for websocket +Esc then enter ":wq" to save the change +// till now you know how to build it and change the request +sudo quasar build // Re-Build the Quasar Web +cd .. // back to greaterwms follder +sudo daphne -b 0.0.0.0 -p 8008 greaterwms.asgi:application +// Now, Open the brower and enter "your Intranet ip:8008". You can see our project run + +Congratuation!!! + +By The Way +1. You Know how to change the request +2. You also can change the port which you like +3. You can use Nginx or Apache to run the project on internet +~~~ + diff --git a/Wechat.png.REMOVED.git-id b/Wechat.png.REMOVED.git-id new file mode 100644 index 00000000..28f07238 --- /dev/null +++ b/Wechat.png.REMOVED.git-id @@ -0,0 +1 @@ +d845ab52a97e28ec0282b25020c1284479f920f3 \ No newline at end of file diff --git a/Windows10 Build(CN).md b/Windows10 Build(CN).md new file mode 100644 index 00000000..2f38d772 --- /dev/null +++ b/Windows10 Build(CN).md @@ -0,0 +1,105 @@ +~~~shell +# 下载python3.9.2(版本以自己电脑系统为主,我们以64位为例) +https://www.python.org/ftp/python/3.9.2/python-3.9.2-amd64.exe +# 右键,以管理员运行exe文件,安装python3.9.2 +# 注意一定要勾选上Add Python3.9 To PATH,然后点选Install Now +# 下载sqlite3(版本以自己电脑系统为主,我们以64位为例) +https://www.sqlite.org/2021/sqlite-dll-win64-x64-3350500.zip +# 解压zip文件,将解压出来的文件,覆盖python路径dll中的文件,地址为 +~ C:\Users\{你的用户名}\AppData\Local\Programs\Python\Python39\DLLs +# 下载Node.JS14.16.1(版本以自己电脑系统为主,我们以64位为例) +https://nodejs.org/dist/v14.16.1/node-v14.16.1-x64.msi +# 安装Node.JS的时候,一定不要勾选Automatically,一直下一步,知道安装完成 +# 下载Git(版本以自己电脑系统为主,我们以64位为例,需要下载setup版本) +https://git-scm.com/download/win +# 右键,以管理员运行exe文件,然后一直下一步就可以了 +# 选择好你要把GreaterWMS摆在哪个目录中,右键,选择Git Bash Here +# 下载 GreaterWMS 从 github,由于网络原因,会很慢,多试几次 +git clone https://github.com/Singosgu/GreaterWMS.git +# 左下角搜索栏,输入cmd +# 右键,以管理员运行cmd +# 查看Python版本 +python -V +# 查看pip有没有装好 +pip list +# 升级pip到最新版本 +pip install --upgrade pip +# 进入GreaterWMS摆放目录,演示时摆在downlowad里面的,所以我们进去目录 +~ cd C:\Users\{你的用户名}\Downloads\GreaterWMS\ +# pip安装python依赖库 +pip install -r requirements.txt +# Twisted可能安装不上,需要下载下来手动安装 +https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted +# 下载自己适合的版本,比如:我的演示视频是Python3.9.2,Win10版本是64位的 +# 所以我就要下载Twisted-20.3.0-cp39-cp39-win_amd64.whl +# 将下载下来的Twisted摆在GreaterWMS根目录,手动安装 +pip install Twisted-20.3.0-cp39-cp39-win_amd64.whl +# 再次运行安装requirements.txt +pip install -r requirements.txt +# 启动GreaterWMS +daphne -p 8008 greaterwms.asgi:application +# 这时候打开浏览器,输入127.0.0.1:8008 +# 如果看到500报错,就说明之前的Python依赖已经全部安装完成了 +# 回到CMD界面,按住Ctrl+C来退出项目启动 +# 生成数据库迁移文件 +python manage.py makemigrations +# 生成数据库 +python manage.py migrate +# 再次启动项目 +daphne -p 8008 greaterwms.asgi:application +# 这时候打开浏览器,输入127.0.0.1:8008 +# 查看局域网IP,浏览器输入127.0.0.1:8008/myip +# 保存或者记住这个IP地址 +# 一定注意,windows每次启动获得的内网IP是不同的,要么你路由器设置固定内网IP给这台电脑,要么你就不要关电脑 +# 回到CMD界面,按住Ctrl+C来退出项目启动 +# 进入templates目录 +cd templates + +从2.0.19版本以后,优化了请求地址修改方式,直接修改templates/dist/spa/statics/baseurl.js,中的baseurl和wsurl,就可以成功更改前端请求地址,不再需要做下面的quasar build打包工作。 + +如果需要修改前端内容,则还需要修改templates/public/statics/baseurl.js中的baseurl和wsurl,然后重新使用quasar build进行打包 + +# 升级下npm +npm install -g npm +# 切换npm源为国内源 +npm config set registry https://registry.npm.taobao.org +# 安装Yarn +npm install -g yarn +# 更改yarn为国内源 +yarn config set registry https://registry.npm.taobao.org/ +# 安装quasar环境 +npm install -g @quasar/cli +# 安装windows构建工具 +#注意:如果安装不上请下载 Visual Studio 安装C++环境 +npm install -g windows-build-tools +# 安装core-js依赖 +npm install -g core-js +# 查看全局依赖是否安装完成 +npm list -g --depth=0 +# 安装项目依赖 +yarn install +# 这个过程会有点慢,有时候会很快,是因为网络原因 +# 如果发生报错,那是因为网络原因无法安装,多试几次就可以了,直到没有报错 +# 进入发请求的文件,修改请求地址 +~ 记事本编辑 GreaterWMS/templates/src/boot/axios_request +# 将127.0.0.1更改为你刚才查看到的内网IP +const baseurl = 'http://127.0.0.1:8008/' +const wsurl = 'ws://127.0.0.1:8008/' +# 保存退出 +# templates目录下重新编译前端 +quasar build +# 回到GreaterWMS根目录 +cd .. +# 启动项目加入-b 0.0.0.0参数 +daphne -b 0.0.0.0 -p 8008 greaterwms.asgi:application +# 接下来就可以使用你的浏览器,访问{ http://内网IP:8008 }来查看该项目了 +# 局域网上的电脑也可以通过这个IP来访问项目 + +谢天谢地!!! + +顺便说一句 +1. 你知道了怎么修改请求地址 +2. 你也可以按你的喜好,去更改Port +3. 你更可以使用Nginx或者Apache,把项目发布到互联网上 +~~~ + diff --git a/Zebra-Profile.pdf.REMOVED.git-id b/Zebra-Profile.pdf.REMOVED.git-id new file mode 100644 index 00000000..074b7167 --- /dev/null +++ b/Zebra-Profile.pdf.REMOVED.git-id @@ -0,0 +1 @@ +63e42d89d6750efd58197b6b61d732d9f309ffd2 \ No newline at end of file diff --git a/a.适配的硬件清单/GreaterWMS系统硬件清单(上海四号位信息科技有限公司20220305).pdf.REMOVED.git-id b/a.适配的硬件清单/GreaterWMS系统硬件清单(上海四号位信息科技有限公司20220305).pdf.REMOVED.git-id new file mode 100644 index 00000000..9d5f7aaf --- /dev/null +++ b/a.适配的硬件清单/GreaterWMS系统硬件清单(上海四号位信息科技有限公司20220305).pdf.REMOVED.git-id @@ -0,0 +1 @@ +8b42c0ea8087964023ae7aa09fae24b32cc62b14 \ No newline at end of file diff --git a/asn/__init__.py b/asn/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/asn/admin.py b/asn/admin.py new file mode 100644 index 00000000..09ea0b5f --- /dev/null +++ b/asn/admin.py @@ -0,0 +1,5 @@ +from django.contrib import admin +from . models import AsnListModel, AsnDetailModel + +admin.site.register(AsnListModel) +admin.site.register(AsnDetailModel) diff --git a/asn/apps.py b/asn/apps.py new file mode 100644 index 00000000..35ccf2df --- /dev/null +++ b/asn/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class AsnConfig(AppConfig): + name = 'asn' diff --git a/asn/files.py b/asn/files.py new file mode 100644 index 00000000..0e97caff --- /dev/null +++ b/asn/files.py @@ -0,0 +1,116 @@ +from rest_framework_csv.renderers import CSVStreamingRenderer + +def list_file_headers(): + return [ + 'asn_code', + 'asn_status', + 'total_weight', + 'total_volume', + 'total_cost', + 'supplier', + 'creater', + 'create_time', + 'update_time' + ] + +def list_cn_data_header(): + return dict([ + ('asn_code', u'ASN单号'), + ('asn_status', u'ASN状态'), + ('total_weight', u'总重量'), + ('total_volume', u'总体积'), + ('total_cost', u'总成本'), + ('supplier', u'供应商'), + ('creater', u'创建人'), + ('create_time', u'创建时间'), + ('update_time', u'更新时间') + ]) + +def list_en_data_header(): + return dict([ + ('asn_code', u'ASN Code'), + ('asn_status', u'ASN Status'), + ('total_weight', u'Total Weight'), + ('total_volume', u'Total Volume'), + ('total_cost', u'Total Cost'), + ('supplier', u'Supplier'), + ('creater', u'Creater'), + ('create_time', u'Create Time'), + ('update_time', u'Update Time') + ]) + +def detail_file_headers(): + return [ + 'asn_code', + 'asn_status', + 'supplier', + 'goods_code', + 'goods_qty', + 'goods_actual_qty', + 'sorted_qty', + 'goods_shortage_qty', + 'goods_more_qty', + 'goods_damage_qty', + 'goods_weight', + 'goods_volume', + 'goods_cost', + 'creater', + 'create_time', + 'update_time' + ] + +def detail_cn_data_header(): + return dict([ + ('asn_code', u'ASN单号'), + ('asn_status', u'ASN状态'), + ('supplier', u'供应商'), + ('goods_code', u'商品编码'), + ('goods_qty', u'订单数量'), + ('goods_actual_qty', u'实际到货数量'), + ('sorted_qty', u'已分拣数量'), + ('goods_shortage_qty', u'少到货数量'), + ('goods_more_qty', u'多到货数量'), + ('goods_damage_qty', u'破损数量'), + ('goods_weight', u'商品重量'), + ('goods_volume', u'商品体积'), + ('goods_cost', u'商品成本'), + ('creater', u'创建人'), + ('create_time', u'创建时间'), + ('update_time', u'更新时间') + ]) + +def detail_en_data_header(): + return dict([ + ('asn_code', u'ASN Code'), + ('asn_status', u'ASN Status'), + ('supplier', u'Supplier'), + ('goods_code', u'Goods Code'), + ('goods_qty', u'Goods Qty'), + ('goods_actual_qty', u'Goods Actual Qty'), + ('sorted_qty', u'Sorted Qty'), + ('goods_shortage_qty', u'Goods Shortage Qty'), + ('goods_more_qty', u'Goods More Qty'), + ('goods_damage_qty', u'Goods Damage Qty'), + ('goods_weight', u'Goods Weight'), + ('goods_volume', u'Goods Volume'), + ('goods_cost', u'Goods Cost'), + ('creater', u'Creater'), + ('create_time', u'Create Time'), + ('update_time', u'Update Time') + ]) + +class FileListRenderCN(CSVStreamingRenderer): + header = list_file_headers() + labels = list_cn_data_header() + +class FileListRenderEN(CSVStreamingRenderer): + header = list_file_headers() + labels = list_en_data_header() + +class FileDetailRenderCN(CSVStreamingRenderer): + header = detail_file_headers() + labels = detail_cn_data_header() + +class FileDetailRenderEN(CSVStreamingRenderer): + header = detail_file_headers() + labels = detail_en_data_header() diff --git a/asn/filter.py b/asn/filter.py new file mode 100644 index 00000000..5a6c8c6f --- /dev/null +++ b/asn/filter.py @@ -0,0 +1,43 @@ +from django_filters import FilterSet +from .models import AsnListModel, AsnDetailModel + +class AsnListFilter(FilterSet): + class Meta: + model = AsnListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "asn_code": ['exact', 'iexact', 'contains', 'icontains'], + "asn_status": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "total_weight": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "total_volume": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "total_cost": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "supplier": ['exact', 'iexact', 'contains', 'icontains'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "is_delete": ['exact', 'iexact'], + "create_time": ['exact', 'iexact', 'year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['exact', 'iexact', 'year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } + +class AsnDetailFilter(FilterSet): + class Meta: + model = AsnDetailModel + fields = { + "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "asn_code": ['exact', 'iexact', 'contains', 'icontains'], + "asn_status": ['exact', 'iexact'], + "supplier": ['exact', 'iexact', 'contains', 'icontains'], + "goods_code": ['exact', 'iexact', 'contains', 'icontains'], + "goods_qty": ['exact', 'iexact', 'gt', 'lt', 'gte', 'lte'], + "goods_actual_qty": ['exact', 'iexact', 'gt', 'lt', 'gte', 'lte'], + "sorted_qty": ['exact', 'iexact', 'gt', 'lt', 'gte', 'lte'], + "goods_shortage_qty": ['exact', 'iexact', 'gt', 'lt', 'gte', 'lte'], + "goods_more_qty": ['exact', 'iexact', 'gt', 'lt', 'gte', 'lte'], + "goods_damage_qty": ['exact', 'iexact', 'gt', 'lt', 'gte', 'lte'], + "goods_weight": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "goods_volume": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "goods_cost": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "is_delete": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } diff --git a/asn/migrations/__init__.py b/asn/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/asn/models.py b/asn/models.py new file mode 100644 index 00000000..f75d2488 --- /dev/null +++ b/asn/models.py @@ -0,0 +1,55 @@ +from django.db import models + +class AsnListModel(models.Model): + asn_code = models.CharField(max_length=255, verbose_name="ASN Code") + asn_status = models.BigIntegerField(default=1, verbose_name="ASN Status") + total_weight = models.FloatField(default=0, verbose_name="Total Weight") + total_volume = models.FloatField(default=0, verbose_name="Total Volume") + total_cost = models.FloatField(default=0, verbose_name="Total Cost") + supplier = models.CharField(max_length=255, verbose_name="ASN Supplier") + creater = models.CharField(max_length=255, verbose_name="Who Created") + bar_code = models.CharField(max_length=255, verbose_name="Bar Code") + openid = models.CharField(max_length=255, verbose_name="Openid") + transportation_fee = models.JSONField(default=dict, verbose_name="Transportation Fee") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'asnlist' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['-id'] + + def __str__(self): + return self.pk + +class AsnDetailModel(models.Model): + asn_code = models.CharField(max_length=255, verbose_name="ASN Code") + asn_status = models.BigIntegerField(default=1, verbose_name="ASN Status") + supplier = models.CharField(max_length=255, verbose_name="ASN Supplier") + goods_code = models.CharField(max_length=255, verbose_name="Goods Code") + goods_qty = models.BigIntegerField(default=0, verbose_name="Goods QTY") + goods_actual_qty = models.BigIntegerField(default=0, verbose_name="Goods Actual QTY") + sorted_qty = models.BigIntegerField(default=0, verbose_name="Sorted QTY") + goods_shortage_qty = models.BigIntegerField(default=0, verbose_name="Goods Shortage QTY") + goods_more_qty = models.BigIntegerField(default=0, verbose_name="Goods More QTY") + goods_damage_qty = models.BigIntegerField(default=0, verbose_name="Goods damage QTY") + goods_weight = models.FloatField(default=0, verbose_name="Goods Weight") + goods_volume = models.FloatField(default=0, verbose_name="Goods Volume") + goods_cost = models.FloatField(default=0, verbose_name="Goods Cost") + creater = models.CharField(max_length=255, verbose_name="Who Created") + openid = models.CharField(max_length=255, verbose_name="Openid") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'asndetail' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['-id'] + + def __str__(self): + return self.pk + diff --git a/asn/page.py b/asn/page.py new file mode 100644 index 00000000..f7979eeb --- /dev/null +++ b/asn/page.py @@ -0,0 +1,63 @@ +from collections import OrderedDict + +from rest_framework.exceptions import APIException +from rest_framework.pagination import PageNumberPagination +from rest_framework.response import Response +from rest_framework.utils.urls import replace_query_param, remove_query_param + +from supplier.models import ListModel as supplier + +class MyPageNumberPaginationASNList(PageNumberPagination): + page_size = 30 + page_size_query_param = "max_page" + max_page_size = 1000 + page_query_param = 'page' + + def get_previous_link(self): + if not self.page.has_previous(): + return None + url = self.request.build_absolute_uri() + page_number = self.page.previous_page_number() + ssl_check = str(self.request.META.get('HTTP_ORIGIN')).split(':')[0] + url_combine = str(url).split(':') + if len(str(url).split(':')) == 2: + url = ssl_check + ':' + url_combine[1] + if page_number == 1: + return remove_query_param(url, self.page_query_param) + return replace_query_param(url, self.page_query_param, page_number) + elif len(str(url).split(':')) == 3: + url = ssl_check + ':' + url_combine[1] + ':' + url_combine[2] + if page_number == 1: + return remove_query_param(url, self.page_query_param) + return replace_query_param(url, self.page_query_param, page_number) + else: + raise APIException({"detail": "Wrong API Url"}) + + def get_next_link(self): + if not self.page.has_next(): + return None + url = self.request.build_absolute_uri() + page_number = self.page.next_page_number() + ssl_check = str(self.request.META.get('HTTP_ORIGIN')).split(':')[0] + url_combine = str(url).split(':') + if len(str(url).split(':')) == 2: + url = ssl_check + ':' + url_combine[1] + return replace_query_param(url, self.page_query_param, page_number) + elif len(str(url).split(':')) == 3: + url = ssl_check + ':' + url_combine[1] + ':' + url_combine[2] + return replace_query_param(url, self.page_query_param, page_number) + else: + raise APIException({"detail": "Wrong API Url"}) + + def get_paginated_response(self, data): + supplier_list_data = supplier.objects.filter(openid=self.request.auth.openid, is_delete=False) + supplier_list = [] + for i in range(len(supplier_list_data)): + supplier_list.append(supplier_list_data[i].supplier_name) + return Response(OrderedDict([ + ('supplier_list', supplier_list), + ('count', self.page.paginator.count), + ('next', self.get_next_link()), + ('previous', self.get_previous_link()), + ('results', data) + ])) diff --git a/asn/serializers.py b/asn/serializers.py new file mode 100644 index 00000000..d7ce5068 --- /dev/null +++ b/asn/serializers.py @@ -0,0 +1,156 @@ +from rest_framework import serializers +from .models import AsnListModel, AsnDetailModel +from utils import datasolve + +class ASNListGetSerializer(serializers.ModelSerializer): + asn_code = serializers.CharField(read_only=True, required=False) + asn_status = serializers.IntegerField(read_only=True, required=False) + supplier = serializers.CharField(read_only=True, required=False) + bar_code = serializers.CharField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = AsnListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'openid', ] + +class ASNListPostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + asn_code = serializers.CharField(read_only=False, required=True, validators=[datasolve.asn_data_validate]) + supplier = serializers.CharField(read_only=False, required=False) + bar_code = serializers.CharField(read_only=False, required=True) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = AsnListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class ASNListPartialUpdateSerializer(serializers.ModelSerializer): + asn_code = serializers.CharField(read_only=False, required=True, validators=[datasolve.asn_data_validate]) + + class Meta: + model = AsnListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class ASNListUpdateSerializer(serializers.ModelSerializer): + asn_code = serializers.CharField(read_only=False, required=True, validators=[datasolve.asn_data_validate]) + + class Meta: + model = AsnListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class ASNDetailGetSerializer(serializers.ModelSerializer): + asn_code = serializers.CharField(read_only=True, required=False) + supplier = serializers.CharField(read_only=True, required=False) + goods_code = serializers.CharField(read_only=True, required=False) + goods_qty = serializers.IntegerField(read_only=True, required=False) + goods_actual_qty = serializers.IntegerField(read_only=True, required=False) + sorted_qty = serializers.IntegerField(read_only=True, required=False) + goods_shortage_qty = serializers.IntegerField(read_only=True, required=False) + goods_more_qty = serializers.IntegerField(read_only=True, required=False) + goods_damage_qty = serializers.IntegerField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = AsnDetailModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'openid'] + +class ASNDetailPostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + asn_code = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + supplier = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_code = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_qty = serializers.IntegerField(read_only=False, required=True, validators=[datasolve.qty_0_data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = AsnDetailModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class ASNSortedPostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + asn_code = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + supplier = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_code = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_qty = serializers.IntegerField(read_only=False, required=True, validators=[datasolve.qty_data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = AsnDetailModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class ASNDetailUpdateSerializer(serializers.ModelSerializer): + asn_code = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + supplier = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_code = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_qty = serializers.IntegerField(read_only=False, required=True, validators=[datasolve.qty_0_data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = AsnDetailModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class ASNDetailPartialUpdateSerializer(serializers.ModelSerializer): + asn_code = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + supplier = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + goods_code = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + goods_qty = serializers.IntegerField(read_only=False, required=False, validators=[datasolve.qty_0_data_validate]) + creater = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + class Meta: + model = AsnDetailModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class MoveToBinSerializer(serializers.ModelSerializer): + bin_name = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + qty = serializers.IntegerField(read_only=False, required=True, validators=[datasolve.qty_0_data_validate]) + class Meta: + model = AsnDetailModel + ref_name = 'AsnMoveToBin' + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class FileListRenderSerializer(serializers.ModelSerializer): + asn_code = serializers.CharField(read_only=False, required=False) + asn_status = serializers.IntegerField(read_only=False, required=False) + total_weight = serializers.FloatField(read_only=False, required=False) + total_volume = serializers.FloatField(read_only=False, required=False) + total_cost = serializers.FloatField(read_only=False, required=False) + supplier = serializers.CharField(read_only=False, required=False) + creater = serializers.CharField(read_only=False, required=False) + transportation_fee = serializers.JSONField(read_only=False, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + + class Meta: + model = AsnListModel + ref_name = 'ASNFileListRenderSerializer' + exclude = ['openid', 'is_delete', ] + +class FileDetailRenderSerializer(serializers.ModelSerializer): + asn_code = serializers.CharField(read_only=False, required=False) + asn_status = serializers.IntegerField(read_only=False, required=False) + goods_code = serializers.CharField(read_only=False, required=False) + goods_qty = serializers.IntegerField(read_only=False, required=False) + goods_actual_qty = serializers.IntegerField(read_only=False, required=False) + sorted_qty = serializers.IntegerField(read_only=False, required=False) + goods_shortage_qty = serializers.IntegerField(read_only=False, required=False) + goods_more_qty = serializers.IntegerField(read_only=False, required=False) + goods_damage_qty = serializers.IntegerField(read_only=False, required=False) + goods_weight = serializers.FloatField(read_only=False, required=False) + goods_volume = serializers.FloatField(read_only=False, required=False) + goods_cost = serializers.FloatField(read_only=False, required=False) + supplier = serializers.CharField(read_only=False, required=False) + creater = serializers.CharField(read_only=False, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + + class Meta: + model = AsnDetailModel + ref_name = 'ASNFileDetailRenderSerializer' + exclude = ['openid', 'is_delete', ] diff --git a/asn/tests.py b/asn/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/asn/urls.py b/asn/urls.py new file mode 100644 index 00000000..b4b91e8d --- /dev/null +++ b/asn/urls.py @@ -0,0 +1,35 @@ +from django.urls import path, re_path +from . import views + +urlpatterns = [ +path(r'list/', views.AsnListViewSet.as_view({"get": "list", "post": "create"}), name="asnlist"), +re_path(r'^list/(?P\d+)/$', views.AsnListViewSet.as_view({ + 'get': 'retrieve', + 'put': 'update', + 'patch': 'partial_update', + 'delete': 'destroy' +}), name="asnlist_1"), +path(r'detail/', views.AsnDetailViewSet.as_view({"get": "list", "post": "create", 'put': 'update'}), name="asndetail"), +re_path(r'^detail/(?P\d+)/$', views.AsnDetailViewSet.as_view({ + 'get': 'retrieve', +}), name="asndetail_1"), +re_path(r'^viewprint/(?P\d+)/$', views.AsnViewPrintViewSet.as_view({ + 'get': 'retrieve', +}), name="asnviewprint_1"), +re_path(r'^preload/(?P\d+)/$', views.AsnPreLoadViewSet.as_view({ + 'post': 'create', +}), name="preload_1"), +re_path(r'^presort/(?P\d+)/$', views.AsnPreSortViewSet.as_view({ + 'post': 'create', +}), name="presort_1"), +path(r'sorted/', views.AsnSortedViewSet.as_view({"put": "update"}), name="sorted"), +re_path(r'^sorted/(?P\d+)/$', views.AsnSortedViewSet.as_view({ + 'post': 'create' +}), name="sorted_1"), +path(r'movetobin/', views.MoveToBinViewSet.as_view({'put': 'update'}), name="movetobin"), +re_path(r'^movetobin/(?P\d+)/$', views.MoveToBinViewSet.as_view({ + 'post': 'create', +}), name="movetobin_1"), +path(r'filelist/', views.FileListDownloadView.as_view({"get": "list"}), name="asnfilelistdownload"), +path(r'filedetail/', views.FileDetailDownloadView.as_view({"get": "list"}), name="asnfiledetaildownload"), +] diff --git a/asn/views.py b/asn/views.py new file mode 100644 index 00000000..8d6b1d07 --- /dev/null +++ b/asn/views.py @@ -0,0 +1,1188 @@ +from rest_framework import viewsets +from .models import AsnListModel, AsnDetailModel +from . import serializers +from .page import MyPageNumberPaginationASNList +from utils.page import MyPageNumberPagination +from utils.datasolve import sumOfList, transportation_calculate +from utils.fbmsg import FBMsg +from utils.md5 import Md5 +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from .filter import AsnListFilter, AsnDetailFilter +from rest_framework.exceptions import APIException +from supplier.models import ListModel as supplier +from warehouse.models import ListModel as warehouse +from goods.models import ListModel as goods +from payment.models import TransportationFeeListModel as transportation +from stock.models import StockListModel as stocklist +from stock.models import StockBinModel as stockbin +from binset.models import ListModel as binset +from scanner.models import ListModel as scanner +from cyclecount.models import QTYRecorder as qtychangerecorder +from cyclecount.models import CyclecountModeDayModel as cyclecount +from django.db.models import Q +from django.db.models import Sum +from .serializers import FileListRenderSerializer, FileDetailRenderSerializer +from django.http import StreamingHttpResponse +from django.utils import timezone +from .files import FileListRenderCN, FileListRenderEN, FileDetailRenderCN, FileDetailRenderEN +from rest_framework.settings import api_settings +from dateutil.relativedelta import relativedelta +from staff.models import ListModel as staff + +class AsnListViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + list: + Response a data list(all) + + create: + Create a data line(post) + + delete: + Delete a data line(delete) + + """ + pagination_class = MyPageNumberPaginationASNList + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = AsnListFilter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + empty_qs = AsnListModel.objects.filter(Q(openid=self.request.auth.openid, asn_status=1, is_delete=False) & Q(supplier='')) + cur_date = timezone.now() + date_check = relativedelta(day=1) + if len(empty_qs) > 0: + for i in range(len(empty_qs)): + if empty_qs[i].create_time <= cur_date - date_check: + empty_qs[i].delete() + if id is None: + return AsnListModel.objects.filter(Q(openid=self.request.auth.openid, is_delete=False) & ~Q(supplier='')) + else: + return AsnListModel.objects.filter(Q(openid=self.request.auth.openid, id=id, is_delete=False) & ~Q(supplier='')) + else: + return AsnListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve', 'destroy']: + return serializers.ASNListGetSerializer + elif self.action in ['create']: + return serializers.ASNListPostSerializer + elif self.action in ['update']: + return serializers.ASNListUpdateSerializer + elif self.action in ['partial_update']: + return serializers.ASNListPartialUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def notice_lang(self): + return FBMsg(self.request.META.get('HTTP_LANGUAGE')) + + def create(self, request, *args, **kwargs): + data = self.request.data + data['openid'] = self.request.auth.openid + custom_asn = self.request.GET.get('custom_asn', '') + if custom_asn: + data['asn_code'] = custom_asn + else: + qs_set = AsnListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + order_day =str(timezone.now().strftime('%Y%m%d')) + if len(qs_set) > 0: + asn_last_code = qs_set.order_by('-id').first().asn_code + if str(asn_last_code[3:11]) == order_day: + order_create_no = str(int(asn_last_code[11:]) + 1) + data['asn_code'] = 'ASN' + order_day + order_create_no + else: + data['asn_code'] = 'ASN' + order_day + '1' + else: + data['asn_code'] = 'ASN' + order_day + '1' + data['bar_code'] = Md5.md5(data['asn_code']) + serializer = self.get_serializer(data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + scanner.objects.create(openid=self.request.auth.openid, mode="ASN", code=data['asn_code'], bar_code=data['bar_code']) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def destroy(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot delete data which not yours"}) + else: + if qs.asn_status == 1: + qs.is_delete = True + asn_detail_list = AsnDetailModel.objects.filter(openid=self.request.auth.openid, asn_code=qs.asn_code, + asn_status=1, is_delete=False) + for i in range(len(asn_detail_list)): + goods_qty_change = stocklist.objects.filter(openid=self.request.auth.openid, + goods_code=str(asn_detail_list[i].goods_code)).first() + goods_qty_change.goods_qty = goods_qty_change.goods_qty - int(asn_detail_list[i].goods_qty) + goods_qty_change.asn_stock = goods_qty_change.asn_stock - int(asn_detail_list[i].goods_qty) + goods_qty_change.save() + asn_detail_list.update(is_delete=True) + qs.save() + serializer = self.get_serializer(qs, many=False) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + else: + raise APIException({"detail": "This ASN Status Is Not '1'"}) + +class AsnDetailViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + list: + Response a data list(all) + + create: + Create a data line(post) + + update: + Update a data(put:update) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = AsnDetailFilter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return AsnDetailModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return AsnDetailModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return AsnDetailModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve']: + return serializers.ASNDetailGetSerializer + elif self.action in ['create']: + return serializers.ASNDetailPostSerializer + elif self.action in ['update']: + return serializers.ASNDetailUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, *args, **kwargs): + data = self.request.data + if AsnListModel.objects.filter(openid=self.request.auth.openid, asn_code=str(data['asn_code']), is_delete=False).exists(): + if supplier.objects.filter(openid=self.request.auth.openid, supplier_name=str(data['supplier']), is_delete=False).exists(): + staff_name = staff.objects.filter(openid=self.request.auth.openid, id=self.request.META.get('HTTP_OPERATOR')).first().staff_name + for i in range(len(data['goods_code'])): + check_data = { + 'openid': self.request.auth.openid, + 'asn_code': str(data['asn_code']), + 'supplier': str(data['supplier']), + 'goods_code': str(data['goods_code'][i]), + 'goods_qty': int(data['goods_qty'][i]), + 'creater': str(staff_name) + } + serializer = self.get_serializer(data=check_data) + serializer.is_valid(raise_exception=True) + post_data_list = [] + weight_list = [] + volume_list = [] + cost_list = [] + for j in range(len(data['goods_code'])): + goods_detail = goods.objects.filter(openid=self.request.auth.openid, + goods_code=str(data['goods_code'][j]), + is_delete=False).first() + goods_weight = round(goods_detail.goods_weight * int(data['goods_qty'][j]) / 1000, 4) + goods_volume = round(goods_detail.unit_volume * int(data['goods_qty'][j]), 4) + goods_cost = round(goods_detail.goods_cost * int(data['goods_qty'][j]), 2) + if stocklist.objects.filter(openid=self.request.auth.openid, goods_code=str(data['goods_code'][j])).exists(): + goods_qty_change = stocklist.objects.filter(openid=self.request.auth.openid, + goods_code=str(data['goods_code'][j])).first() + goods_qty_change.goods_qty = goods_qty_change.goods_qty + int(data['goods_qty'][j]) + goods_qty_change.asn_stock = goods_qty_change.asn_stock + int(data['goods_qty'][j]) + goods_qty_change.save() + else: + stocklist.objects.create(openid=self.request.auth.openid, + goods_code=str(data['goods_code'][j]), + goods_desc=goods_detail.goods_desc, + goods_qty=int(data['goods_qty'][j]), + asn_stock=int(data['goods_qty'][j])) + post_data = AsnDetailModel(openid=self.request.auth.openid, + asn_code=str(data['asn_code']), + supplier=str(data['supplier']), + goods_code=str(data['goods_code'][j]), + goods_qty=int(data['goods_qty'][j]), + goods_weight=goods_weight, + goods_volume=goods_volume, + goods_cost=goods_cost, + creater=str(staff_name)) + post_data_list.append(post_data) + weight_list.append(goods_weight) + volume_list.append(goods_volume) + cost_list.append(goods_cost) + total_weight = sumOfList(weight_list, len(weight_list)) + total_volume = sumOfList(volume_list, len(volume_list)) + total_cost = sumOfList(cost_list, len(cost_list)) + supplier_city = supplier.objects.filter(openid=self.request.auth.openid, + supplier_name=str(data['supplier']), + is_delete=False).first().supplier_city + warehouse_city = warehouse.objects.filter(openid=self.request.auth.openid).first().warehouse_city + transportation_fee = transportation.objects.filter( + Q(openid=self.request.auth.openid, send_city__icontains=supplier_city, receiver_city__icontains=warehouse_city, + is_delete=False) | Q(openid='init_data', send_city__icontains=supplier_city, receiver_city__icontains=warehouse_city, + is_delete=False)) + transportation_res = { + "detail": [] + } + if len(transportation_fee) >= 1: + transportation_list = [] + for k in range(len(transportation_fee)): + transportation_cost = transportation_calculate(total_weight, + total_volume, + transportation_fee[k].weight_fee, + transportation_fee[k].volume_fee, + transportation_fee[k].min_payment) + transportation_detail = { + "transportation_supplier": transportation_fee[k].transportation_supplier, + "transportation_cost": transportation_cost + } + transportation_list.append(transportation_detail) + transportation_res['detail'] = transportation_list + AsnDetailModel.objects.bulk_create(post_data_list, batch_size=100) + AsnListModel.objects.filter(openid=self.request.auth.openid, asn_code=str(data['asn_code'])).update( + supplier=str(data['supplier']), total_weight=total_weight, total_volume=total_volume, + total_cost=total_cost, transportation_fee=transportation_res) + return Response({"detail": "success"}, status=200) + else: + raise APIException({"detail": "Supplier does not exists"}) + else: + raise APIException({"detail": "ASN Code does not exists"}) + + def update(self, request, *args, **kwargs): + data = self.request.data + if AsnListModel.objects.filter(openid=self.request.auth.openid, asn_code=str(data['asn_code']), + asn_status=1, is_delete=False).exists(): + if supplier.objects.filter(openid=self.request.auth.openid, supplier_name=str(data['supplier']), + is_delete=False).exists(): + staff_name = staff.objects.filter(openid=self.request.auth.openid, + id=self.request.META.get('HTTP_OPERATOR')).first().staff_name + for i in range(len(data['goods_code'])): + check_data = { + 'openid': self.request.auth.openid, + 'asn_code': str(data['asn_code']), + 'supplier': str(data['supplier']), + 'goods_code': str(data['goods_code'][i]), + 'goods_qty': int(data['goods_qty'][i]), + 'creater': str(staff_name) + } + serializer = self.get_serializer(data=check_data) + serializer.is_valid(raise_exception=True) + asn_detail_list = AsnDetailModel.objects.filter(openid=self.request.auth.openid, + asn_code=str(data['asn_code']), is_delete=False) + for v in range(len(asn_detail_list)): + goods_qty_change = stocklist.objects.filter(openid=self.request.auth.openid, + goods_code=str(asn_detail_list[v].goods_code)).first() + goods_qty_change.goods_qty = goods_qty_change.goods_qty - asn_detail_list[v].goods_qty + if goods_qty_change.goods_qty < 0: + goods_qty_change.goods_qty = 0 + goods_qty_change.asn_stock = goods_qty_change.asn_stock - asn_detail_list[v].goods_qty + if goods_qty_change.asn_stock < 0: + goods_qty_change.asn_stock = 0 + goods_qty_change.save() + asn_detail_list[v].is_delete = True + asn_detail_list[v].save() + post_data_list = [] + weight_list = [] + volume_list = [] + for j in range(len(data['goods_code'])): + goods_detail = goods.objects.filter(openid=self.request.auth.openid, + goods_code=str(data['goods_code'][j]), + is_delete=False).first() + goods_weight = round(goods_detail.goods_weight * int(data['goods_qty'][j]) / 1000, 4) + goods_volume = round(goods_detail.unit_volume * int(data['goods_qty'][j]), 4) + if stocklist.objects.filter(openid=self.request.auth.openid, goods_code=str(data['goods_code'][j])).exists(): + goods_qty_change = stocklist.objects.filter(openid=self.request.auth.openid, + goods_code=str(data['goods_code'][j])).first() + goods_qty_change.goods_qty = goods_qty_change.goods_qty + int(data['goods_qty'][j]) + goods_qty_change.asn_stock = goods_qty_change.asn_stock + int(data['goods_qty'][j]) + goods_qty_change.save() + else: + stocklist.objects.create(openid=self.request.auth.openid, + goods_code=str(data['goods_code'][j]), + goods_desc=goods_detail.goods_desc, + goods_qty=int(data['goods_qty'][j]), + asn_stock=int(data['goods_qty'][j])) + post_data = AsnDetailModel(openid=self.request.auth.openid, + asn_code=str(data['asn_code']), + supplier=str(data['supplier']), + goods_code=str(data['goods_code'][j]), + goods_qty=int(data['goods_qty'][j]), + goods_weight=goods_weight, + goods_volume=goods_volume, + creater=str(staff_name)) + post_data_list.append(post_data) + weight_list.append(goods_weight) + volume_list.append(goods_volume) + total_weight = sumOfList(weight_list, len(weight_list)) + total_volume = sumOfList(volume_list, len(volume_list)) + supplier_city = supplier.objects.filter(openid=self.request.auth.openid, + supplier_name=str(data['supplier']), + is_delete=False).first().supplier_city + warehouse_city = warehouse.objects.filter(openid=self.request.auth.openid).first().warehouse_city + transportation_fee = transportation.objects.filter( + Q(openid=self.request.auth.openid, send_city__icontains=supplier_city, + receiver_city__icontains=warehouse_city, + is_delete=False) | Q(openid='init_data', send_city__icontains=supplier_city, + receiver_city__icontains=warehouse_city, + is_delete=False)) + transportation_res = { + "detail": [] + } + if len(transportation_fee) >= 1: + transportation_list = [] + for k in range(len(transportation_fee)): + transportation_cost = transportation_calculate(total_weight, + total_volume, + transportation_fee[k].weight_fee, + transportation_fee[k].volume_fee, + transportation_fee[k].min_payment) + transportation_detail = { + "transportation_supplier": transportation_fee[k].transportation_supplier, + "transportation_cost": transportation_cost + } + transportation_list.append(transportation_detail) + transportation_res['detail'] = transportation_list + AsnDetailModel.objects.bulk_create(post_data_list, batch_size=100) + AsnListModel.objects.filter(openid=self.request.auth.openid, asn_code=str(data['asn_code'])).update( + supplier=str(data['supplier']), total_weight=total_weight, total_volume=total_volume, + transportation_fee=transportation_res) + return Response({"detail": "success"}, status=200) + else: + raise APIException({"detail": "Supplier does not exists"}) + else: + raise APIException({"detail": "This ASN Status Is Not 1"}) + +class AsnViewPrintViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = AsnListFilter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return AsnListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return AsnListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return AsnListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['retrieve']: + return serializers.ASNDetailGetSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def retrieve(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot update data which not yours"}) + else: + context = {} + asn_detail_list = AsnDetailModel.objects.filter(openid=self.request.auth.openid, + asn_code=qs.asn_code, + is_delete=False) + asn_detail = serializers.ASNDetailGetSerializer(asn_detail_list, many=True) + supplier_detail = supplier.objects.filter(openid=self.request.auth.openid, + supplier_name=qs.supplier).first() + warehouse_detail = warehouse.objects.filter(openid=self.request.auth.openid,).first() + context['asn_detail'] = asn_detail.data + context['supplier_detail'] = { + "supplier_name": supplier_detail.supplier_name, + "supplier_city": supplier_detail.supplier_city, + "supplier_address": supplier_detail.supplier_address, + "supplier_contact": supplier_detail.supplier_contact + } + context['warehouse_detail'] = { + "warehouse_name": warehouse_detail.warehouse_name, + "warehouse_city": warehouse_detail.warehouse_city, + "warehouse_address": warehouse_detail.warehouse_address, + "warehouse_contact": warehouse_detail.warehouse_contact + } + return Response(context, status=200) + +class AsnPreLoadViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = AsnListFilter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return AsnListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return AsnListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return AsnListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['create']: + return serializers.ASNListPartialUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot delete data which not yours"}) + else: + if qs.asn_status == 1: + if AsnDetailModel.objects.filter(openid=self.request.auth.openid, asn_code=qs.asn_code, + asn_status=1, is_delete=False).exists(): + qs.asn_status = 2 + asn_detail_list = AsnDetailModel.objects.filter(openid=self.request.auth.openid, asn_code=qs.asn_code, + asn_status=1, is_delete=False) + for i in range(len(asn_detail_list)): + goods_qty_change = stocklist.objects.filter(openid=self.request.auth.openid, + goods_code=str(asn_detail_list[i].goods_code)).first() + goods_qty_change.asn_stock = goods_qty_change.asn_stock - asn_detail_list[i].goods_qty + if goods_qty_change.asn_stock < 0: + goods_qty_change.asn_stock = 0 + goods_qty_change.pre_load_stock = goods_qty_change.pre_load_stock + asn_detail_list[i].goods_qty + goods_qty_change.save() + asn_detail_list.update(asn_status=2) + qs.save() + serializer = self.get_serializer(qs, many=False) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + else: + raise APIException({"detail": "Please Enter The ASN Detail"}) + else: + raise APIException({"detail": "This ASN Status Is Not 1"}) + +class AsnPreSortViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = AsnListFilter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return AsnListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return AsnListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return AsnListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['create']: + return serializers.ASNListUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot delete data which not yours"}) + else: + if qs.asn_status == 2: + qs.asn_status = 3 + asn_detail_list = AsnDetailModel.objects.filter(openid=self.request.auth.openid, asn_code=qs.asn_code, + asn_status=2, is_delete=False) + for i in range(len(asn_detail_list)): + goods_qty_change = stocklist.objects.filter(openid=self.request.auth.openid, + goods_code=str(asn_detail_list[i].goods_code)).first() + goods_qty_change.pre_load_stock = goods_qty_change.pre_load_stock - asn_detail_list[i].goods_qty + if goods_qty_change.pre_load_stock < 0: + goods_qty_change.pre_load_stock = 0 + goods_qty_change.pre_sort_stock = goods_qty_change.pre_sort_stock + asn_detail_list[i].goods_qty + goods_qty_change.save() + asn_detail_list.update(asn_status=3) + qs.save() + serializer = self.get_serializer(qs, many=False) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + else: + raise APIException({"detail": "This ASN Status Is Not 2"}) + +class AsnSortedViewSet(viewsets.ModelViewSet): + """ + create: + Finish Sorted + + update: + All Sorted + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = AsnListFilter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return AsnListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return AsnListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return AsnListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['create', 'update']: + return serializers.ASNSortedPostSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, pk): + qs = self.get_object() + if qs.asn_status != 3: + raise APIException({"detail": "This ASN Status Is Not 3"}) + else: + data = self.request.data + for j in range(len(data['goodsData'])): + goods_qty_change = stocklist.objects.filter(openid=self.request.auth.openid, + goods_code=str( + data['goodsData'][j].get('goods_code'))).first() + asn_detail = AsnDetailModel.objects.filter(openid=self.request.auth.openid, + asn_code=str(data['asn_code']), + asn_status=3, supplier=str(data['supplier']), + goods_code=str( + data['goodsData'][j].get('goods_code'))).first() + goods_detail = goods.objects.filter(openid=self.request.auth.openid, + goods_code=str(data['goodsData'][j].get('goods_code')), + is_delete=False).first() + if int(data['goodsData'][j].get('goods_actual_qty')) == 0: + asn_detail.goods_actual_qty = int(data['goodsData'][j].get('goods_actual_qty')) + asn_detail.goods_shortage_qty = asn_detail.goods_qty + asn_detail.goods_cost = 0 + qs.total_cost = qs.total_cost - (asn_detail.goods_shortage_qty * goods_detail.goods_cost) + goods_qty_change.goods_qty = goods_qty_change.goods_qty - asn_detail.goods_qty + goods_qty_change.pre_sort_stock = goods_qty_change.pre_sort_stock - asn_detail.goods_qty + asn_detail.asn_status = 5 + asn_detail.save() + goods_qty_change.save() + if goods_qty_change.goods_qty == 0 and goods_qty_change.back_order_stock == 0: + goods_qty_change.delete() + else: + asn_detail.goods_actual_qty = int(data['goodsData'][j].get('goods_actual_qty')) + goods_qty_check = asn_detail.goods_qty - int(data['goodsData'][j].get('goods_actual_qty')) + if goods_qty_check > 0: + asn_detail.goods_shortage_qty = goods_qty_check + asn_detail.goods_more_qty = 0 + asn_detail.goods_cost = asn_detail.goods_cost - (asn_detail.goods_shortage_qty * goods_detail.goods_cost) + qs.total_cost = qs.total_cost - (asn_detail.goods_shortage_qty * goods_detail.goods_cost) + goods_qty_change.goods_qty = goods_qty_change.goods_qty - goods_qty_check + goods_qty_change.pre_sort_stock = goods_qty_change.pre_sort_stock - asn_detail.goods_qty + goods_qty_change.sorted_stock = goods_qty_change.sorted_stock + int(data['goodsData'][j].get('goods_actual_qty')) + elif goods_qty_check == 0: + asn_detail.goods_shortage_qty = 0 + asn_detail.goods_more_qty = 0 + goods_qty_change.pre_sort_stock = goods_qty_change.pre_sort_stock - int(data['goodsData'][j].get('goods_actual_qty')) + goods_qty_change.sorted_stock = goods_qty_change.sorted_stock + int(data['goodsData'][j].get('goods_actual_qty')) + elif goods_qty_check < 0: + asn_detail.goods_shortage_qty = 0 + asn_detail.goods_more_qty = abs(goods_qty_check) + asn_detail.goods_cost = asn_detail.goods_cost + (asn_detail.goods_more_qty * goods_detail.goods_cost) + qs.total_cost = qs.total_cost + (asn_detail.goods_more_qty * goods_detail.goods_cost) + goods_qty_change.goods_qty = goods_qty_change.goods_qty + abs(goods_qty_check) + goods_qty_change.pre_sort_stock = goods_qty_change.pre_sort_stock - asn_detail.goods_qty + goods_qty_change.sorted_stock = goods_qty_change.sorted_stock + int(data['goodsData'][j].get('goods_actual_qty')) + asn_detail.asn_status = 4 + asn_detail.save() + goods_qty_change.save() + if goods_qty_change.goods_qty == 0 and goods_qty_change.back_order_stock == 0: + goods_qty_change.delete() + if AsnDetailModel.objects.filter(openid=self.request.auth.openid, asn_code=str(data['asn_code']), + asn_status=4, supplier=str(data['supplier'])).exists(): + qs.asn_status = 4 + else: + qs.asn_status = 5 + qs.save() + return Response({"detail": "success"}, status=200) + + def update(self, request, *args, **kwargs): + data = self.request.data + qs = self.get_queryset().filter(asn_code=data['asn_code']).first() + if qs.asn_status != 3: + raise APIException({"detail": "This ASN Status Is Not 3"}) + else: + for j in range(len(data['goodsData'])): + goods_qty_change = stocklist.objects.filter(openid=self.request.auth.openid, + goods_code=str( + data['goodsData'][j].get('goods_code'))).first() + asn_detail = AsnDetailModel.objects.filter(openid=self.request.auth.openid, + asn_code=str(data['asn_code']), + goods_code=str( + data['goodsData'][j].get('goods_code'))).first() + goods_detail = goods.objects.filter(openid=self.request.auth.openid, + goods_code=str(data['goodsData'][j].get('goods_code')), + is_delete=False).first() + if int(data['goodsData'][j].get('goods_actual_qty')) == 0: + asn_detail.goods_actual_qty = int(data['goodsData'][j].get('goods_actual_qty')) + asn_detail.goods_shortage_qty = asn_detail.goods_qty + asn_detail.goods_cost = 0 + qs.total_cost = qs.total_cost - (asn_detail.goods_shortage_qty * goods_detail.goods_cost) + goods_qty_change.goods_qty = goods_qty_change.goods_qty - asn_detail.goods_qty + goods_qty_change.pre_sort_stock = goods_qty_change.pre_sort_stock - asn_detail.goods_qty + asn_detail.asn_status = 5 + asn_detail.save() + goods_qty_change.save() + if goods_qty_change.goods_qty == 0 and goods_qty_change.back_order_stock == 0: + goods_qty_change.delete() + else: + asn_detail.goods_actual_qty = int(data['goodsData'][j].get('goods_actual_qty')) + goods_qty_check = asn_detail.goods_qty - int(data['goodsData'][j].get('goods_actual_qty')) + if goods_qty_check > 0: + asn_detail.goods_shortage_qty = goods_qty_check + asn_detail.goods_more_qty = 0 + asn_detail.goods_cost = asn_detail.goods_cost - (asn_detail.goods_shortage_qty * goods_detail.goods_cost) + qs.total_cost = qs.total_cost - (asn_detail.goods_shortage_qty * goods_detail.goods_cost) + goods_qty_change.goods_qty = goods_qty_change.goods_qty - goods_qty_check + goods_qty_change.pre_sort_stock = goods_qty_change.pre_sort_stock - asn_detail.goods_qty + goods_qty_change.sorted_stock = goods_qty_change.sorted_stock + int(data['goodsData'][j].get('goods_actual_qty')) + elif goods_qty_check == 0: + asn_detail.goods_shortage_qty = 0 + asn_detail.goods_more_qty = 0 + goods_qty_change.pre_sort_stock = goods_qty_change.pre_sort_stock - int(data['goodsData'][j].get('goods_actual_qty')) + goods_qty_change.sorted_stock = goods_qty_change.sorted_stock + int(data['goodsData'][j].get('goods_actual_qty')) + elif goods_qty_check < 0: + asn_detail.goods_shortage_qty = 0 + asn_detail.goods_more_qty = abs(goods_qty_check) + asn_detail.goods_cost = asn_detail.goods_cost + (asn_detail.goods_more_qty * goods_detail.goods_cost) + qs.total_cost = qs.total_cost + (asn_detail.goods_more_qty * goods_detail.goods_cost) + goods_qty_change.goods_qty = goods_qty_change.goods_qty + abs(goods_qty_check) + goods_qty_change.pre_sort_stock = goods_qty_change.pre_sort_stock - asn_detail.goods_qty + goods_qty_change.sorted_stock = goods_qty_change.sorted_stock + int(data['goodsData'][j].get('goods_actual_qty')) + asn_detail.asn_status = 4 + asn_detail.save() + goods_qty_change.save() + if goods_qty_change.goods_qty == 0 and goods_qty_change.back_order_stock == 0: + goods_qty_change.delete() + if AsnDetailModel.objects.filter(openid=self.request.auth.openid, asn_code=str(data['asn_code']), + asn_status=4).exists(): + qs.asn_status = 4 + else: + qs.asn_status = 5 + qs.save() + return Response({"detail": "success"}, status=200) + +class MoveToBinViewSet(viewsets.ModelViewSet): + """ + create: + Create a data line(post) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = AsnDetailFilter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return AsnDetailModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return AsnDetailModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return AsnDetailModel.objects.none() + + def get_serializer_class(self): + if self.action in ['retrieve']: + return serializers.ASNDetailGetSerializer + elif self.action in ['create', 'update']: + return serializers.MoveToBinSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot delete data which not yours"}) + else: + if qs.asn_status != 4: + raise APIException({"detail": "This ASN Status Is Not 4"}) + else: + data = self.request.data + if 'bin_name' not in data: + raise APIException({"detail": "Please Enter the Bin Name"}) + else: + bin_detail = binset.objects.filter(openid=self.request.auth.openid, + bin_name=str(data['bin_name'])).first() + asn_detail = AsnListModel.objects.filter(openid=self.request.auth.openid, + asn_code=str(data['asn_code'])).first() + goods_qty_change = stocklist.objects.filter(openid=self.request.auth.openid, + goods_code=str(data['goods_code'])).first() + if int(data['qty']) <= 0: + raise APIException({"detail": "Move QTY Must > 0"}) + else: + staff_name = staff.objects.filter(openid=self.request.auth.openid, + id=self.request.META.get('HTTP_OPERATOR')).first().staff_name + move_qty = qs.goods_actual_qty - qs.sorted_qty - int(data['qty']) + if move_qty > 0: + qs.sorted_qty = qs.sorted_qty + int(data['qty']) + goods_qty_change.sorted_stock = goods_qty_change.sorted_stock - int(data['qty']) + goods_qty_change.onhand_stock = goods_qty_change.onhand_stock + int(data['qty']) + if bin_detail.bin_property == 'Damage': + goods_qty_change.damage_stock = goods_qty_change.damage_stock + int(data['qty']) + qs.goods_damage_qty = qs.goods_damage_qty + int(data['qty']) + elif bin_detail.bin_property == 'Inspection': + goods_qty_change.inspect_stock = goods_qty_change.inspect_stock + int(data['qty']) + elif bin_detail.bin_property == 'Holding': + goods_qty_change.hold_stock = goods_qty_change.hold_stock + int(data['qty']) + else: + goods_qty_change.can_order_stock = goods_qty_change.can_order_stock + int(data['qty']) + qs.save() + goods_qty_change.save() + stockbin.objects.create(openid=self.request.auth.openid, + bin_name=str(data['bin_name']), + goods_code=str(data['goods_code']), + goods_desc=goods_qty_change.goods_desc, + goods_qty=int(data['qty']), + bin_size=bin_detail.bin_size, + bin_property=bin_detail.bin_property, + t_code=Md5.md5(str(data['goods_code'])), + create_time=qs.create_time + ) + qtychangerecorder.objects.create(openid=self.request.auth.openid, + mode_code=qs.asn_code, + bin_name=str(data['bin_name']), + goods_code=str(data['goods_code']), + goods_qty=int(data['qty']), + creater=str(staff_name) + ) + cur_date = timezone.now().date() + line_data = cyclecount.objects.filter(openid=self.request.auth.openid, + bin_name=str(data['bin_name']), + goods_code=str(data['goods_code']), + create_time__gte=cur_date) + bin_check = stockbin.objects.filter(openid=self.request.auth.openid, + bin_name=str(data['bin_name']), + goods_code=str(data['goods_code']), + ) + if bin_check.exists(): + bin_stock = bin_check.aggregate(sum=Sum('goods_qty'))["sum"] + else: + bin_stock = 0 + if line_data.exists(): + line_data.goods_qty = bin_stock + int(data['qty']) + line_data.update(goods_qty=line_data.goods_qty) + else: + cyclecount.objects.create(openid=self.request.auth.openid, + bin_name=str(data['bin_name']), + goods_code=str(data['goods_code']), + goods_qty=int(data['qty']), + creater=str(staff_name) + ) + if bin_detail.empty_label == True: + bin_detail.empty_label = False + bin_detail.save() + elif move_qty == 0: + qs.sorted_qty = qs.sorted_qty + int(data['qty']) + qs.asn_status = 5 + goods_qty_change.sorted_stock = goods_qty_change.sorted_stock - int(data['qty']) + goods_qty_change.onhand_stock = goods_qty_change.onhand_stock + int(data['qty']) + if bin_detail.bin_property == 'Damage': + goods_qty_change.damage_stock = goods_qty_change.damage_stock + int(data['qty']) + qs.goods_damage_qty = qs.goods_damage_qty + int(data['qty']) + elif bin_detail.bin_property == 'Inspection': + goods_qty_change.inspect_stock = goods_qty_change.inspect_stock + int(data['qty']) + elif bin_detail.bin_property == 'Holding': + goods_qty_change.hold_stock = goods_qty_change.hold_stock + int(data['qty']) + else: + goods_qty_change.can_order_stock = goods_qty_change.can_order_stock + int(data['qty']) + qtychangerecorder.objects.create(openid=self.request.auth.openid, + mode_code=qs.asn_code, + bin_name=str(data['bin_name']), + goods_code=str(data['goods_code']), + goods_qty=int(data['qty']), + creater=str(staff_name) + ) + cur_date = timezone.now().date() + line_data = cyclecount.objects.filter(openid=self.request.auth.openid, + bin_name=str(data['bin_name']), + goods_code=str(data['goods_code']), + create_time__gte=cur_date) + bin_check = stockbin.objects.filter(openid=self.request.auth.openid, + bin_name=str(data['bin_name']), + goods_code=str(data['goods_code']), + ) + if bin_check.exists(): + bin_stock = bin_check.aggregate(sum=Sum('goods_qty'))["sum"] + else: + bin_stock = 0 + if line_data.exists(): + line_data.goods_qty = bin_stock + int(data['qty']) + line_data.update(goods_qty=line_data.goods_qty) + else: + cyclecount.objects.create(openid=self.request.auth.openid, + bin_name=str(data['bin_name']), + goods_code=str(data['goods_code']), + goods_qty=int(data['qty']), + creater=str(staff_name), + t_code=Md5.md5(str(data['bin_name'])) + ) + qs.save() + goods_qty_change.save() + if AsnDetailModel.objects.filter(openid=self.request.auth.openid, + asn_code=str(data['asn_code']), + asn_status=4 + ).exists(): + pass + else: + asn_detail.asn_status = 5 + asn_detail.save() + stockbin.objects.create(openid=self.request.auth.openid, + bin_name=str(data['bin_name']), + goods_code=str(data['goods_code']), + goods_desc=goods_qty_change.goods_desc, + goods_qty=int(data['qty']), + bin_size=bin_detail.bin_size, + bin_property=bin_detail.bin_property, + t_code=Md5.md5(str(data['goods_code'])), + create_time=qs.create_time) + if bin_detail.empty_label == True: + bin_detail.empty_label = False + bin_detail.save() + elif move_qty < 0: + raise APIException({"detail": "Move Qty must < Actual Arrive Qty"}) + return Response({"detail": "success"}, status=200) + + def update(self, request, *args, **kwargs): + data = self.request.data + qs_list = self.get_queryset().filter(asn_code=data['asn_code']) + if qs_list[0].openid != self.request.auth.openid: + raise APIException({"detail": "Cannot delete data which not yours"}) + else: + if 'bin_name' not in data: + raise APIException({"detail": "Please Enter the Bin Name"}) + else: + bin_detail = binset.objects.filter(openid=self.request.auth.openid, + bin_name=str(data['bin_name'])).first() + asn_detail = AsnListModel.objects.filter(openid=self.request.auth.openid, + asn_code=str(data['asn_code']) + ).first() + staff_name = staff.objects.filter(openid=self.request.auth.openid, + id=self.request.META.get('HTTP_OPERATOR')).first().staff_name + for i in range(len(data['res_data'])): + goods_qty_change = stocklist.objects.filter(openid=self.request.auth.openid, + goods_code=str(data['res_data'][i]['goods_code'])).first() + if int(data['res_data'][i]['qty']) <= 0: + continue + else: + qs = qs_list.filter(goods_code=str(data['res_data'][i]['goods_code'])).first() + move_qty = qs.goods_actual_qty - qs.sorted_qty - int(data['res_data'][i]['qty']) + if move_qty > 0: + qs.sorted_qty = qs.sorted_qty + int(data['res_data'][i]['qty']) + goods_qty_change.sorted_stock = goods_qty_change.sorted_stock - int(data['res_data'][i]['qty']) + goods_qty_change.onhand_stock = goods_qty_change.onhand_stock + int(data['res_data'][i]['qty']) + if bin_detail.bin_property == 'Damage': + goods_qty_change.damage_stock = goods_qty_change.damage_stock + int(data['res_data'][i]['qty']) + qs.goods_damage_qty = qs.goods_damage_qty + int(data['res_data'][i]['qty']) + elif bin_detail.bin_property == 'Inspection': + goods_qty_change.inspect_stock = goods_qty_change.inspect_stock + int(data['res_data'][i]['qty']) + elif bin_detail.bin_property == 'Holding': + goods_qty_change.hold_stock = goods_qty_change.hold_stock + int(data['res_data'][i]['qty']) + else: + goods_qty_change.can_order_stock = goods_qty_change.can_order_stock + int(data['res_data'][i]['qty']) + qs.save() + goods_qty_change.save() + stockbin.objects.create(openid=self.request.auth.openid, + bin_name=str(data['bin_name']), + goods_code=str(data['res_data'][i]['goods_code']), + goods_desc=goods_qty_change.goods_desc, + goods_qty=int(data['res_data'][i]['qty']), + bin_size=bin_detail.bin_size, + bin_property=bin_detail.bin_property, + t_code=Md5.md5(str(data['res_data'][i]['goods_code'])), + create_time=qs.create_time + ) + qtychangerecorder.objects.create(openid=self.request.auth.openid, + mode_code=qs.asn_code, + bin_name=str(data['bin_name']), + goods_code=str(data['res_data'][i]['goods_code']), + goods_qty=int(data['res_data'][i]['qty']), + creater=str(staff_name) + ) + cur_date = timezone.now().date() + line_data = cyclecount.objects.filter(openid=self.request.auth.openid, + bin_name=str(data['bin_name']), + goods_code=str(data['res_data'][i]['goods_code']), + create_time__gte=cur_date) + bin_check = stockbin.objects.filter(openid=self.request.auth.openid, + bin_name=str(data['bin_name']), + goods_code=str(data['res_data'][i]['goods_code']), + ) + if bin_check.exists(): + bin_stock = bin_check.aggregate(sum=Sum('goods_qty'))["sum"] + else: + bin_stock = 0 + if line_data.exists(): + line_data.goods_qty = bin_stock + int(data['res_data'][i]['qty']) + line_data.update(goods_qty=line_data.goods_qty) + else: + cyclecount.objects.create(openid=self.request.auth.openid, + bin_name=str(data['bin_name']), + goods_code=str(data['res_data'][i]['goods_code']), + goods_qty=int(data['res_data'][i]['qty']), + creater=str(staff_name) + ) + if bin_detail.empty_label == True: + bin_detail.empty_label = False + bin_detail.save() + elif move_qty == 0: + qs.sorted_qty = qs.sorted_qty + int(data['res_data'][i]['qty']) + qs.asn_status = 5 + goods_qty_change.sorted_stock = goods_qty_change.sorted_stock - int(data['res_data'][i]['qty']) + goods_qty_change.onhand_stock = goods_qty_change.onhand_stock + int(data['res_data'][i]['qty']) + if bin_detail.bin_property == 'Damage': + goods_qty_change.damage_stock = goods_qty_change.damage_stock + int(data['res_data'][i]['qty']) + qs.goods_damage_qty = qs.goods_damage_qty + int(data['res_data'][i]['qty']) + elif bin_detail.bin_property == 'Inspection': + goods_qty_change.inspect_stock = goods_qty_change.inspect_stock + int(data['res_data'][i]['qty']) + elif bin_detail.bin_property == 'Holding': + goods_qty_change.hold_stock = goods_qty_change.hold_stock + int(data['res_data'][i]['qty']) + else: + goods_qty_change.can_order_stock = goods_qty_change.can_order_stock + int(data['res_data'][i]['qty']) + qtychangerecorder.objects.create(openid=self.request.auth.openid, + mode_code=qs.asn_code, + bin_name=str(data['bin_name']), + goods_code=str(data['res_data'][i]['goods_code']), + goods_qty=int(data['res_data'][i]['qty']), + creater=str(staff_name) + ) + cur_date = timezone.now().date() + line_data = cyclecount.objects.filter(openid=self.request.auth.openid, + bin_name=str(data['bin_name']), + goods_code=str(data['res_data'][i]['goods_code']), + create_time__gte=cur_date) + bin_check = stockbin.objects.filter(openid=self.request.auth.openid, + bin_name=str(data['bin_name']), + goods_code=str(data['res_data'][i]['goods_code']), + ) + if bin_check.exists(): + bin_stock = bin_check.aggregate(sum=Sum('goods_qty'))["sum"] + else: + bin_stock = 0 + if line_data.exists(): + line_data.goods_qty = bin_stock + int(data['res_data'][i]['qty']) + line_data.update(goods_qty=line_data.goods_qty) + else: + cyclecount.objects.create(openid=self.request.auth.openid, + bin_name=str(data['bin_name']), + goods_code=str(data['res_data'][i]['goods_code']), + goods_qty=int(data['res_data'][i]['qty']), + creater=str(staff_name), + t_code=Md5.md5(str(data['bin_name'])) + ) + qs.save() + goods_qty_change.save() + if AsnDetailModel.objects.filter(openid=self.request.auth.openid, + asn_code=str(data['asn_code']), + asn_status=4 + ).exists(): + pass + else: + asn_detail.asn_status = 5 + asn_detail.save() + stockbin.objects.create(openid=self.request.auth.openid, + bin_name=str(data['bin_name']), + goods_code=str(data['res_data'][i]['goods_code']), + goods_desc=goods_qty_change.goods_desc, + goods_qty=int(data['res_data'][i]['qty']), + bin_size=bin_detail.bin_size, + bin_property=bin_detail.bin_property, + t_code=Md5.md5(str(data['res_data'][i]['goods_code'])), + create_time=qs.create_time) + if bin_detail.empty_label == True: + bin_detail.empty_label = False + bin_detail.save() + return Response({"detail": "success"}, status=200) + +class FileListDownloadView(viewsets.ModelViewSet): + renderer_classes = (FileListRenderCN, ) + tuple(api_settings.DEFAULT_RENDERER_CLASSES) + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = AsnListFilter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + empty_qs = AsnListModel.objects.filter( + Q(openid=self.request.auth.openid, asn_status=1, is_delete=False) & Q(supplier='')) + cur_date = timezone.now() + date_check = relativedelta(day=1) + if len(empty_qs) > 0: + for i in range(len(empty_qs)): + if empty_qs[i].create_time <= cur_date - date_check: + empty_qs[i].delete() + if id is None: + return AsnListModel.objects.filter( + Q(openid=self.request.auth.openid, is_delete=False) & ~Q(supplier='')) + else: + return AsnListModel.objects.filter( + Q(openid=self.request.auth.openid, id=id, is_delete=False) & ~Q(supplier='')) + else: + return AsnListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return serializers.FileListRenderSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def get_lang(self, data): + lang = self.request.META.get('HTTP_LANGUAGE') + if lang: + if lang == 'zh-hans': + return FileListRenderCN().render(data) + else: + return FileListRenderEN().render(data) + else: + return FileListRenderEN().render(data) + + def list(self, request, *args, **kwargs): + from datetime import datetime + dt = datetime.now() + data = ( + FileListRenderSerializer(instance).data + for instance in self.filter_queryset(self.get_queryset()) + ) + renderer = self.get_lang(data) + response = StreamingHttpResponse( + renderer, + content_type="text/csv" + ) + response['Content-Disposition'] = "attachment; filename='asnlist_{}.csv'".format(str(dt.strftime('%Y%m%d%H%M%S%f'))) + return response + +class FileDetailDownloadView(viewsets.ModelViewSet): + serializer_class = serializers.FileDetailRenderSerializer + renderer_classes = (FileDetailRenderCN, ) + tuple(api_settings.DEFAULT_RENDERER_CLASSES) + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = AsnDetailFilter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return AsnDetailModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return AsnDetailModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return AsnDetailModel.objects.none() + + def get_serializer_class(self): + if self.action == 'list': + return serializers.FileDetailRenderSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def get_lang(self, data): + lang = self.request.META.get('HTTP_LANGUAGE') + if lang: + if lang == 'zh-hans': + return FileDetailRenderCN().render(data) + else: + return FileDetailRenderEN().render(data) + else: + return FileDetailRenderEN().render(data) + + def list(self, request, *args, **kwargs): + from datetime import datetime + dt = datetime.now() + data = ( + FileDetailRenderSerializer(instance).data + for instance in self.filter_queryset(self.get_queryset()) + ) + renderer = self.get_lang(data) + response = StreamingHttpResponse( + renderer, + content_type="text/csv" + ) + response['Content-Disposition'] = "attachment; filename='asndetail_{}.csv'".format(str(dt.strftime('%Y%m%d%H%M%S%f'))) + return response diff --git a/binproperty/__init__.py b/binproperty/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/binproperty/admin.py b/binproperty/admin.py new file mode 100644 index 00000000..c9f86026 --- /dev/null +++ b/binproperty/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from . models import ListModel + +admin.site.register(ListModel) diff --git a/binproperty/apps.py b/binproperty/apps.py new file mode 100644 index 00000000..c4df144a --- /dev/null +++ b/binproperty/apps.py @@ -0,0 +1,38 @@ +from django.apps import AppConfig +from django.db.models.signals import post_migrate + +class BinpropertyConfig(AppConfig): + name = 'binproperty' + + def ready(self): + post_migrate.connect(do_init_data, sender=self) + +def do_init_data(sender, **kwargs): + init_category() + +def init_category(): + """ + :return:None + """ + try: + from .models import ListModel as ls + if ls.objects.filter(openid__iexact='init_data').exists(): + if ls.objects.filter(openid__iexact='init_data').count() != 4: + ls.objects.filter(openid__iexact='init_data').delete() + init_data = [ + ls(id=1, openid='init_data', bin_property='Damage', creater='GreaterWMS'), + ls(id=2, openid='init_data', bin_property='Inspection', creater='GreaterWMS'), + ls(id=3, openid='init_data', bin_property='Normal', creater='GreaterWMS'), + ls(id=4, openid='init_data', bin_property='Holding', creater='GreaterWMS') + ] + ls.objects.bulk_create(init_data, batch_size=100) + else: + init_data = [ + ls(id=1, openid='init_data', bin_property='Damage', creater='GreaterWMS'), + ls(id=2, openid='init_data', bin_property='Inspection', creater='GreaterWMS'), + ls(id=3, openid='init_data', bin_property='Normal', creater='GreaterWMS'), + ls(id=4, openid='init_data', bin_property='Holding', creater='GreaterWMS') + ] + ls.objects.bulk_create(init_data, batch_size=100) + except: + pass diff --git a/binproperty/filter.py b/binproperty/filter.py new file mode 100644 index 00000000..43dc7fc0 --- /dev/null +++ b/binproperty/filter.py @@ -0,0 +1,14 @@ +from django_filters import FilterSet +from .models import ListModel + +class Filter(FilterSet): + class Meta: + model = ListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "bin_property": ['exact', 'iexact', 'contains', 'icontains'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "is_delete": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } diff --git a/binproperty/migrations/__init__.py b/binproperty/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/binproperty/models.py b/binproperty/models.py new file mode 100644 index 00000000..a5b5cd58 --- /dev/null +++ b/binproperty/models.py @@ -0,0 +1,18 @@ +from django.db import models + +class ListModel(models.Model): + bin_property = models.CharField(max_length=32, verbose_name="Bin property") + creater = models.CharField(max_length=255, verbose_name="Who created") + openid = models.CharField(max_length=255, verbose_name="Openid") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'binproperty' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['bin_property'] + + def __str__(self): + return self.pk diff --git a/binproperty/serializers.py b/binproperty/serializers.py new file mode 100644 index 00000000..0c596d88 --- /dev/null +++ b/binproperty/serializers.py @@ -0,0 +1,14 @@ +from rest_framework import serializers +from .models import ListModel + +class BinpropertyGetSerializer(serializers.ModelSerializer): + bin_property = serializers.CharField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + + class Meta: + model = ListModel + ref_name = 'BinpropertyGetSerializer' + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', ] diff --git a/binproperty/tests.py b/binproperty/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/binproperty/urls.py b/binproperty/urls.py new file mode 100644 index 00000000..3cdc422b --- /dev/null +++ b/binproperty/urls.py @@ -0,0 +1,6 @@ +from django.urls import path +from . import views + +urlpatterns = [ +path(r'', views.APIViewSet.as_view({"get": "list"}), name="binproperty") +] diff --git a/binproperty/views.py b/binproperty/views.py new file mode 100644 index 00000000..c0db32ef --- /dev/null +++ b/binproperty/views.py @@ -0,0 +1,29 @@ +from rest_framework import viewsets +from .models import ListModel +from . import serializers +from utils.page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from .filter import Filter + +class APIViewSet(viewsets.ModelViewSet): + """ + list: + Response a data list(all) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_queryset(self): + if self.request.user: + return ListModel.objects.filter(is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return serializers.BinpropertyGetSerializer + else: + return self.http_method_not_allowed(request=self.request) diff --git a/binset/__init__.py b/binset/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/binset/admin.py b/binset/admin.py new file mode 100644 index 00000000..c9f86026 --- /dev/null +++ b/binset/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from . models import ListModel + +admin.site.register(ListModel) diff --git a/binset/apps.py b/binset/apps.py new file mode 100644 index 00000000..3566d74e --- /dev/null +++ b/binset/apps.py @@ -0,0 +1,4 @@ +from django.apps import AppConfig + +class BinsetConfig(AppConfig): + name = 'binset' diff --git a/binset/files.py b/binset/files.py new file mode 100644 index 00000000..0294bd73 --- /dev/null +++ b/binset/files.py @@ -0,0 +1,42 @@ +from rest_framework_csv.renderers import CSVStreamingRenderer + +def file_headers(): + return [ + 'bin_name', + 'bin_size', + 'bin_property', + 'empty_label', + 'creater', + 'create_time', + 'update_time' + ] + +def cn_data_header(): + return dict([ + ('bin_name', u'库位名称'), + ('bin_size', u'库位尺寸'), + ('bin_property', u'库位属性'), + ('empty_label', u'空库位标识'), + ('creater', u'创建人'), + ('create_time', u'创建时间'), + ('update_time', u'更新时间') + ]) + +def en_data_header(): + return dict([ + ('bin_name', u'Bin Name'), + ('bin_size', u'Bin Size'), + ('bin_property', u'Bin Property'), + ('empty_label', u'Empty Label'), + ('creater', u'Creater'), + ('create_time', u'Create Time'), + ('update_time', u'Update Time') + ]) + +class FileRenderCN(CSVStreamingRenderer): + header = file_headers() + labels = cn_data_header() + +class FileRenderEN(CSVStreamingRenderer): + header = file_headers() + labels = en_data_header() diff --git a/binset/filter.py b/binset/filter.py new file mode 100644 index 00000000..95f93441 --- /dev/null +++ b/binset/filter.py @@ -0,0 +1,17 @@ +from django_filters import FilterSet +from .models import ListModel + +class Filter(FilterSet): + class Meta: + model = ListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range', ], + "bin_name": ['exact', 'iexact', 'contains', 'icontains'], + "bin_size": ['exact', 'iexact', 'contains', 'icontains'], + "bin_property": ['exact', 'iexact', 'contains', 'icontains'], + "empty_label": ['exact', 'iexact'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "is_delete": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } diff --git a/binset/migrations/__init__.py b/binset/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/binset/models.py b/binset/models.py new file mode 100644 index 00000000..9b6d08dd --- /dev/null +++ b/binset/models.py @@ -0,0 +1,22 @@ +from django.db import models + +class ListModel(models.Model): + bin_name = models.CharField(max_length=255, verbose_name="Bin Name") + bin_size = models.CharField(max_length=255, verbose_name="Bin Size") + bin_property = models.CharField(max_length=11, verbose_name="Bin Property") + empty_label = models.BooleanField(default=True, verbose_name="Empty Label") + creater = models.CharField(max_length=255, verbose_name="Who Created") + bar_code = models.CharField(max_length=255, verbose_name="Bar Code") + openid = models.CharField(max_length=255, verbose_name="Openid") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'binset' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['bin_name'] + + def __str__(self): + return self.pk diff --git a/binset/page.py b/binset/page.py new file mode 100644 index 00000000..b3b04ddb --- /dev/null +++ b/binset/page.py @@ -0,0 +1,70 @@ +from collections import OrderedDict +from rest_framework.exceptions import APIException +from rest_framework.pagination import PageNumberPagination +from rest_framework.response import Response +from rest_framework.utils.urls import replace_query_param, remove_query_param +from binproperty.models import ListModel as binproperty +from binsize.models import ListModel as binsize +from django.db.models import Q + + +class MyPageNumberPagination(PageNumberPagination): + page_size = 30 + page_size_query_param = "max_page" + max_page_size = 1000 + page_query_param = 'page' + + def get_previous_link(self): + if not self.page.has_previous(): + return None + url = self.request.build_absolute_uri() + page_number = self.page.previous_page_number() + ssl_check = str(self.request.META.get('HTTP_ORIGIN')).split(':')[0] + url_combine = str(url).split(':') + if len(str(url).split(':')) == 2: + url = ssl_check + ':' + url_combine[1] + if page_number == 1: + return remove_query_param(url, self.page_query_param) + return replace_query_param(url, self.page_query_param, page_number) + elif len(str(url).split(':')) == 3: + url = ssl_check + ':' + url_combine[1] + ':' + url_combine[2] + if page_number == 1: + return remove_query_param(url, self.page_query_param) + return replace_query_param(url, self.page_query_param, page_number) + else: + raise APIException({"detail": "Wrong API Url"}) + + def get_next_link(self): + if not self.page.has_next(): + return None + url = self.request.build_absolute_uri() + page_number = self.page.next_page_number() + ssl_check = str(self.request.META.get('HTTP_ORIGIN')).split(':')[0] + url_combine = str(url).split(':') + if len(str(url).split(':')) == 2: + url = ssl_check + ':' + url_combine[1] + return replace_query_param(url, self.page_query_param, page_number) + elif len(str(url).split(':')) == 3: + url = ssl_check + ':' + url_combine[1] + ':' + url_combine[2] + return replace_query_param(url, self.page_query_param, page_number) + else: + raise APIException({"detail": "Wrong API Url"}) + + def get_paginated_response(self, data): + bin_property_list_data = binproperty.objects.filter(Q(openid=self.request.auth.openid, is_delete=False) | + Q(openid='init_data', is_delete=False)) + bin_property_list = [] + for i in range(len(bin_property_list_data)): + bin_property_list.append(bin_property_list_data[i].bin_property) + bin_size_list_data = binsize.objects.filter(openid=self.request.auth.openid, is_delete=False) + bin_size_list = [] + for i in range(len(bin_size_list_data)): + bin_size_list.append(bin_size_list_data[i].bin_size) + return Response(OrderedDict([ + ('bin_size_list', bin_size_list), + ('bin_property_list', bin_property_list), + ('count', self.page.paginator.count), + ('next', self.get_next_link()), + ('previous', self.get_previous_link()), + ('results', data) + ])) diff --git a/binset/serializers.py b/binset/serializers.py new file mode 100644 index 00000000..21f975b7 --- /dev/null +++ b/binset/serializers.py @@ -0,0 +1,79 @@ +from rest_framework import serializers +from .models import ListModel +from utils import datasolve + +class ScannerBinsetTagGetSerializer(serializers.ModelSerializer): + bin_name = serializers.CharField(read_only=True, required=False) + bin_size = serializers.CharField(read_only=True, required=False) + bin_property = serializers.CharField(read_only=True, required=False) + empty_label = serializers.BooleanField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + bar_code = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', ] + + +class BinsetGetSerializer(serializers.ModelSerializer): + bin_name = serializers.CharField(read_only=True, required=False) + bin_size = serializers.CharField(read_only=True, required=False) + bin_property = serializers.CharField(read_only=True, required=False) + empty_label = serializers.BooleanField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + bar_code = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', ] + +class BinsetPostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + bin_name = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + bin_size = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + bin_property = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + bar_code = serializers.CharField(read_only=False, required=True) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class BinsetUpdateSerializer(serializers.ModelSerializer): + bin_name = serializers.CharField(read_only=True, required=False) + bin_size = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + bin_property = serializers.CharField(read_only=True, required=False) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + bar_code = serializers.CharField(read_only=False, required=False) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class BinsetPartialUpdateSerializer(serializers.ModelSerializer): + bin_name = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + bin_size = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + bin_property = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class FileRenderSerializer(serializers.ModelSerializer): + bin_name = serializers.CharField(read_only=False, required=False) + bin_size = serializers.CharField(read_only=False, required=False) + bin_property = serializers.CharField(read_only=False, required=False) + empty_label = serializers.BooleanField(read_only=False, required=False) + creater = serializers.CharField(read_only=False, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + + class Meta: + model = ListModel + ref_name = 'BinSetFileRenderSerializer' + exclude = ['openid', 'is_delete', ] diff --git a/binset/tests.py b/binset/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/binset/urls.py b/binset/urls.py new file mode 100644 index 00000000..5e9c0f4c --- /dev/null +++ b/binset/urls.py @@ -0,0 +1,14 @@ +from django.urls import path, re_path +from . import views + +urlpatterns = [ +path(r'', views.APIViewSet.as_view({"get": "list", "post": "create"}), name="binset"), +path(r'file/', views.FileDownloadView.as_view({"get": "list"}), name="binsetfiledownload"), +re_path(r'^(?P\d+)/$', views.APIViewSet.as_view({ + 'get': 'retrieve', + 'put': 'update', + 'patch': 'partial_update', + 'delete': 'destroy' +}), name="binset_1"), +path(r'scannerbintag//',views.ScannerBinsetTagView.as_view({"get":"retrieve"})) +] diff --git a/binset/views.py b/binset/views.py new file mode 100644 index 00000000..d9261333 --- /dev/null +++ b/binset/views.py @@ -0,0 +1,236 @@ +from rest_framework import viewsets +from .models import ListModel +from . import serializers +from .page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from .filter import Filter +from rest_framework.exceptions import APIException +from django.db.models import Q +from binsize.models import ListModel as binsize +from scanner.models import ListModel as scanner +from binproperty.models import ListModel as binproperty +from .serializers import FileRenderSerializer +from django.http import StreamingHttpResponse +from .files import FileRenderCN, FileRenderEN +from rest_framework.settings import api_settings +from utils.md5 import Md5 +from .serializers import ScannerBinsetTagGetSerializer + +class ScannerBinsetTagView(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + http://127.0.0.1:8008/binset/scannerbintag/3d89ad23d185d5f206d860745c5c4121/ + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + lookup_field = 'bar_code' + def get_project(self): + try: + bar_code = self.kwargs['bar_code'] + return bar_code + except: + return None + + def get_queryset(self): + bar_code = self.get_project() + if self.request.user: + if bar_code is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, bar_code=bar_code, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve', 'destroy']: + return serializers.ScannerBinsetTagGetSerializer + else: + return self.http_method_not_allowed(request=self.request) + + + + +class APIViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + list: + Response a data list(all) + + create: + Create a data line(post) + + delete: + Delete a data line(delete) + + partial_update: + Partial_update a data(patch:partial_update) + + update: + Update a data(put:update) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve', 'destroy']: + return serializers.BinsetGetSerializer + elif self.action in ['create']: + return serializers.BinsetPostSerializer + elif self.action in ['update']: + return serializers.BinsetUpdateSerializer + elif self.action in ['partial_update']: + return serializers.BinsetPartialUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, *args, **kwargs): + data = self.request.data + data['openid'] = self.request.auth.openid + if ListModel.objects.filter(openid=data['openid'], bin_name=data['bin_name'], is_delete=False).exists(): + raise APIException({"detail": "Data exists"}) + else: + if binsize.objects.filter(openid=data['openid'], bin_size=data['bin_size'], is_delete=False).exists(): + if binproperty.objects.filter(Q(openid=data['openid'], bin_property=data['bin_property'], is_delete=False) | + Q(openid='init_data', bin_property=data['bin_property'], is_delete=False)).exists(): + data['bar_code'] = Md5.md5(data['bin_name']) + serializer = self.get_serializer(data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + scanner.objects.create(openid=self.request.auth.openid, mode="BINSET", code=data['bin_name'], + bar_code=data['bar_code']) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + else: + raise APIException({"detail": "Bin property does not exists or it has been changed"}) + else: + raise APIException({"detail": "Bin size does not exists or it has been changed"}) + + def update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot update data which not yours"}) + else: + data = self.request.data + if binsize.objects.filter(openid=self.request.auth.openid, bin_size=data['bin_size'], is_delete=False).exists(): + if binproperty.objects.filter(Q(openid=self.request.auth.openid, bin_property=data['bin_property'], is_delete=False) | + Q(openid='init_data', bin_property=data['bin_property'], is_delete=False)).exists(): + serializer = self.get_serializer(qs, data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + else: + raise APIException({"detail": "Bin property does not exists or it has been changed"}) + else: + raise APIException({"detail": "Bin size does not exists or it has been changed"}) + + def partial_update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot partial_update data which not yours"}) + else: + data = self.request.data + if binsize.objects.filter(openid=self.request.auth.openid, bin_size=data['bin_size'], is_delete=False).exists(): + if binproperty.objects.filter(Q(openid=self.request.auth.openid, bin_property=data['bin_property'], is_delete=False) | + Q(openid='init_data', bin_property=data['bin_property'], is_delete=False)).exists(): + serializer = self.get_serializer(qs, data=data, partial=True) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + else: + raise APIException({"detail": "Bin property does not exists or it has been changed"}) + else: + raise APIException({"detail": "Bin size does not exists or it has been changed"}) + + def destroy(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot delete data which not yours"}) + else: + qs.is_delete = True + qs.save() + serializer = self.get_serializer(qs, many=False) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + +class FileDownloadView(viewsets.ModelViewSet): + renderer_classes = (FileRenderCN, ) + tuple(api_settings.DEFAULT_RENDERER_CLASSES) + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return serializers.FileRenderSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def get_lang(self, data): + lang = self.request.META.get('HTTP_LANGUAGE') + if lang: + if lang == 'zh-hans': + return FileRenderCN().render(data) + else: + return FileRenderEN().render(data) + else: + return FileRenderEN().render(data) + + def list(self, request, *args, **kwargs): + from datetime import datetime + dt = datetime.now() + data = ( + FileRenderSerializer(instance).data + for instance in self.filter_queryset(self.get_queryset()) + ) + renderer = self.get_lang(data) + response = StreamingHttpResponse( + renderer, + content_type="text/csv" + ) + response['Content-Disposition'] = "attachment; filename='binset_{}.csv'".format(str(dt.strftime('%Y%m%d%H%M%S%f'))) + return response diff --git a/binsize/__init__.py b/binsize/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/binsize/admin.py b/binsize/admin.py new file mode 100644 index 00000000..c9f86026 --- /dev/null +++ b/binsize/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from . models import ListModel + +admin.site.register(ListModel) diff --git a/binsize/apps.py b/binsize/apps.py new file mode 100644 index 00000000..bc7cf152 --- /dev/null +++ b/binsize/apps.py @@ -0,0 +1,4 @@ +from django.apps import AppConfig + +class BinsizeConfig(AppConfig): + name = 'binsize' diff --git a/binsize/files.py b/binsize/files.py new file mode 100644 index 00000000..bf0471e3 --- /dev/null +++ b/binsize/files.py @@ -0,0 +1,42 @@ +from rest_framework_csv.renderers import CSVStreamingRenderer + +def file_headers(): + return [ + 'bin_size', + 'bin_size_w', + 'bin_size_d', + 'bin_size_h', + 'creater', + 'create_time', + 'update_time' + ] + +def cn_data_header(): + return dict([ + ('bin_size', u'库位尺寸名称'), + ('bin_size_w', u'库位尺寸长度'), + ('bin_size_d', u'库位尺寸宽度'), + ('bin_size_h', u'库位尺寸高度'), + ('creater', u'创建人'), + ('create_time', u'创建时间'), + ('update_time', u'更新时间'), + ]) + +def en_data_header(): + return dict([ + ('bin_size', u'Bin Size'), + ('bin_size_w', u'Bin Wide'), + ('bin_size_d', u'Bin Depth'), + ('bin_size_h', u'Bin Height'), + ('creater', u'Creater'), + ('create_time', u'Create Time'), + ('update_time', u'Update Time'), + ]) + +class FileRenderCN(CSVStreamingRenderer): + header = file_headers() + labels = cn_data_header() + +class FileRenderEN(CSVStreamingRenderer): + header = file_headers() + labels = en_data_header() diff --git a/binsize/filter.py b/binsize/filter.py new file mode 100644 index 00000000..1cdbf9ea --- /dev/null +++ b/binsize/filter.py @@ -0,0 +1,17 @@ +from django_filters import FilterSet +from .models import ListModel + +class Filter(FilterSet): + class Meta: + model = ListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "bin_size": ['exact', 'iexact', 'contains', 'icontains'], + "bin_size_w": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "bin_size_d": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "bin_size_h": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "is_delete": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } diff --git a/binsize/migrations/__init__.py b/binsize/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/binsize/models.py b/binsize/models.py new file mode 100644 index 00000000..14e42074 --- /dev/null +++ b/binsize/models.py @@ -0,0 +1,21 @@ +from django.db import models + +class ListModel(models.Model): + bin_size = models.CharField(max_length=255, verbose_name="Bin Name") + bin_size_w = models.FloatField(default=0, verbose_name="Bin Width") + bin_size_d = models.FloatField(default=0, verbose_name="Bin Depth") + bin_size_h = models.FloatField(default=0, verbose_name="Bin Height") + creater = models.CharField(max_length=255, verbose_name="Who created") + openid = models.CharField(max_length=255, verbose_name="Openid") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'binsize' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['-id'] + + def __str__(self): + return self.pk diff --git a/binsize/serializers.py b/binsize/serializers.py new file mode 100644 index 00000000..954c7f57 --- /dev/null +++ b/binsize/serializers.py @@ -0,0 +1,64 @@ +from rest_framework import serializers +from .models import ListModel +from utils import datasolve + +class BinsizeGetSerializer(serializers.ModelSerializer): + bin_size = serializers.CharField(read_only=True, required=False) + bin_size_w = serializers.FloatField(read_only=True, required=False) + bin_size_d = serializers.FloatField(read_only=True, required=False) + bin_size_h = serializers.FloatField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', ] + +class BinsizePostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + bin_size = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + bin_size_w = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + bin_size_d = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + bin_size_h = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class BinsizeUpdateSerializer(serializers.ModelSerializer): + bin_size = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + bin_size_w = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + bin_size_d = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + bin_size_h = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class BinsizePartialUpdateSerializer(serializers.ModelSerializer): + bin_size = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + bin_size_w = serializers.FloatField(read_only=False, required=False, validators=[datasolve.data_validate]) + bin_size_d = serializers.FloatField(read_only=False, required=False, validators=[datasolve.data_validate]) + bin_size_h = serializers.FloatField(read_only=False, required=False, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class FileRenderSerializer(serializers.ModelSerializer): + bin_size = serializers.CharField(read_only=False, required=False) + bin_size_w = serializers.FloatField(read_only=False, required=False) + bin_size_d = serializers.FloatField(read_only=False, required=False) + bin_size_h = serializers.FloatField(read_only=False, required=False) + creater = serializers.CharField(read_only=False, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + + class Meta: + model = ListModel + ref_name = 'BinSizeFileRenderSerializer' + exclude = ['openid', 'is_delete', ] diff --git a/binsize/tests.py b/binsize/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/binsize/urls.py b/binsize/urls.py new file mode 100644 index 00000000..ce65a507 --- /dev/null +++ b/binsize/urls.py @@ -0,0 +1,13 @@ +from django.urls import path, re_path +from . import views + +urlpatterns = [ +path(r'', views.APIViewSet.as_view({"get": "list", "post": "create"}), name="binsize"), +path(r'file/', views.FileDownloadView.as_view({"get": "list"}), name="binsizefiledownload"), +re_path(r'^(?P\d+)/$', views.APIViewSet.as_view({ + 'get': 'retrieve', + 'put': 'update', + 'patch': 'partial_update', + 'delete': 'destroy' +}), name="binsize_1") +] diff --git a/binsize/views.py b/binsize/views.py new file mode 100644 index 00000000..f2cb5945 --- /dev/null +++ b/binsize/views.py @@ -0,0 +1,168 @@ +from rest_framework import viewsets +from .models import ListModel +from . import serializers +from utils.page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from .filter import Filter +from rest_framework.exceptions import APIException +from .serializers import FileRenderSerializer +from django.http import StreamingHttpResponse +from .files import FileRenderCN, FileRenderEN +from rest_framework.settings import api_settings + +class APIViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + list: + Response a data list(all) + + create: + Create a data line(post) + + delete: + Delete a data line(delete) + + partial_update: + Partial_update a data(patch:partial_update) + + update: + Update a data(put:update) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve', 'destroy']: + return serializers.BinsizeGetSerializer + elif self.action in ['create']: + return serializers.BinsizePostSerializer + elif self.action in ['update']: + return serializers.BinsizeUpdateSerializer + elif self.action in ['partial_update']: + return serializers.BinsizePartialUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, *args, **kwargs): + data = self.request.data + data['openid'] = self.request.auth.openid + if ListModel.objects.filter(openid=data['openid'], bin_size=data['bin_size'], is_delete=False).exists(): + raise APIException({"detail": "Data exists"}) + else: + serializer = self.get_serializer(data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def partial_update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot partial_update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data, partial=True) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def destroy(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot delete data which not yours"}) + else: + qs.is_delete = True + qs.save() + serializer = self.get_serializer(qs, many=False) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + +class FileDownloadView(viewsets.ModelViewSet): + renderer_classes = (FileRenderCN, ) + tuple(api_settings.DEFAULT_RENDERER_CLASSES) + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return serializers.FileRenderSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def get_lang(self, data): + lang = self.request.META.get('HTTP_LANGUAGE') + if lang: + if lang == 'zh-hans': + return FileRenderCN().render(data) + else: + return FileRenderEN().render(data) + else: + return FileRenderEN().render(data) + + def list(self, request, *args, **kwargs): + from datetime import datetime + dt = datetime.now() + data = ( + FileRenderSerializer(instance).data + for instance in self.filter_queryset(self.get_queryset()) + ) + renderer = self.get_lang(data) + response = StreamingHttpResponse( + renderer, + content_type="text/csv" + ) + response['Content-Disposition'] = "attachment; filename='binsize_{}.csv'".format(str(dt.strftime('%Y%m%d%H%M%S%f'))) + return response diff --git a/capital/__init__.py b/capital/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/capital/admin.py b/capital/admin.py new file mode 100644 index 00000000..c9f86026 --- /dev/null +++ b/capital/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from . models import ListModel + +admin.site.register(ListModel) diff --git a/capital/apps.py b/capital/apps.py new file mode 100644 index 00000000..eb33c984 --- /dev/null +++ b/capital/apps.py @@ -0,0 +1,4 @@ +from django.apps import AppConfig + +class CapitalConfig(AppConfig): + name = 'capital' diff --git a/capital/files.py b/capital/files.py new file mode 100644 index 00000000..c3b01ec7 --- /dev/null +++ b/capital/files.py @@ -0,0 +1,38 @@ +from rest_framework_csv.renderers import CSVStreamingRenderer + +def file_headers(): + return [ + 'capital_name', + 'capital_qty', + 'capital_cost', + 'creater', + 'create_time', + 'update_time' + ] +def cn_data_header(): + return dict([ + ('capital_name', u'资产名称'), + ('capital_qty', u'资产数量'), + ('capital_cost', u'资产成本'), + ('creater', u'创建人'), + ('create_time', u'创建时间'), + ('update_time', u'更新时间') + ]) + +def en_data_header(): + return dict([ + ('capital_name', u'Capital Name'), + ('capital_qty', u'Capital Qty'), + ('capital_cost', u'Capital Cost'), + ('creater', u'Creater'), + ('create_time', u'Create Time'), + ('update_time', u'Update Time') + ]) + +class FileRenderCN(CSVStreamingRenderer): + header = file_headers() + labels = cn_data_header() + +class FileRenderEN(CSVStreamingRenderer): + header = file_headers() + labels = en_data_header() diff --git a/capital/filter.py b/capital/filter.py new file mode 100644 index 00000000..91d9ae03 --- /dev/null +++ b/capital/filter.py @@ -0,0 +1,16 @@ +from django_filters import FilterSet +from .models import ListModel + +class Filter(FilterSet): + class Meta: + model = ListModel + fields = { + "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "capital_name": ['exact', 'iexact', 'contains', 'icontains'], + "capital_qty": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "capital_cost": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "is_delete": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } diff --git a/capital/migrations/__init__.py b/capital/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/capital/models.py b/capital/models.py new file mode 100644 index 00000000..d27283a3 --- /dev/null +++ b/capital/models.py @@ -0,0 +1,20 @@ +from django.db import models + +class ListModel(models.Model): + capital_name = models.CharField(max_length=255, verbose_name="Capital Name") + capital_qty = models.BigIntegerField(default=0, verbose_name="Capital Qty") + capital_cost = models.FloatField(default=0, verbose_name="Capital Cost") + creater = models.CharField(max_length=255, verbose_name="Who Created") + openid = models.CharField(max_length=255, verbose_name="Openid") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'capital' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['-id'] + + def __str__(self): + return self.pk diff --git a/capital/serializers.py b/capital/serializers.py new file mode 100644 index 00000000..eba7f3ac --- /dev/null +++ b/capital/serializers.py @@ -0,0 +1,59 @@ +from rest_framework import serializers +from .models import ListModel +from utils import datasolve + +class CapitalGetSerializer(serializers.ModelSerializer): + capital_name = serializers.CharField(read_only=True, required=False) + capital_qty = serializers.IntegerField(read_only=True, required=False) + capital_cost = serializers.FloatField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'openid', ] + +class CapitalPostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + capital_name = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + capital_qty = serializers.IntegerField(read_only=False, required=True, validators=[datasolve.data_validate]) + capital_cost = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class CapitalUpdateSerializer(serializers.ModelSerializer): + capital_name = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + capital_qty = serializers.IntegerField(read_only=False, required=True, validators=[datasolve.data_validate]) + capital_cost = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class CapitalPartialUpdateSerializer(serializers.ModelSerializer): + capital_name = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + capital_qty = serializers.IntegerField(read_only=False, required=False, validators=[datasolve.data_validate]) + capital_cost = serializers.FloatField(read_only=False, required=False, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class FileRenderSerializer(serializers.ModelSerializer): + capital_name = serializers.CharField(read_only=False, required=False) + capital_qty = serializers.IntegerField(read_only=False, required=False) + capital_cost = serializers.FloatField(read_only=False, required=False) + creater = serializers.CharField(read_only=False, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + + class Meta: + model = ListModel + ref_name = 'CapitalFileRenderSerializer' + exclude = ['openid', 'is_delete', ] diff --git a/capital/tests.py b/capital/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/capital/urls.py b/capital/urls.py new file mode 100644 index 00000000..48779afc --- /dev/null +++ b/capital/urls.py @@ -0,0 +1,13 @@ +from django.urls import path, re_path +from . import views + +urlpatterns = [ +path(r'', views.APIViewSet.as_view({"get": "list", "post": "create"}), name="capital"), +path(r'file/', views.FileDownloadView.as_view({"get": "list"}), name="capitalfiledownload"), +re_path(r'^(?P\d+)/$', views.APIViewSet.as_view({ + 'get': 'retrieve', + 'put': 'update', + 'patch': 'partial_update', + 'delete': 'destroy' +}), name="capital_1") +] diff --git a/capital/views.py b/capital/views.py new file mode 100644 index 00000000..8f982fd9 --- /dev/null +++ b/capital/views.py @@ -0,0 +1,165 @@ +from rest_framework import viewsets +from .models import ListModel +from . import serializers +from utils.page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from .filter import Filter +from rest_framework.exceptions import APIException +from .serializers import FileRenderSerializer +from django.http import StreamingHttpResponse +from .files import FileRenderCN, FileRenderEN +from rest_framework.settings import api_settings + +class APIViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + list: + Response a data list(all) + + create: + Create a data line(post) + + delete: + Delete a data line(delete) + + partial_update: + Partial_update a data(patch:partial_update) + + update: + Update a data(put:update) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve', 'destroy']: + return serializers.CapitalGetSerializer + elif self.action in ['create']: + return serializers.CapitalPostSerializer + elif self.action in ['update']: + return serializers.CapitalUpdateSerializer + elif self.action in ['partial_update']: + return serializers.CapitalPartialUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, *args, **kwargs): + data = self.request.data + data['openid'] = self.request.auth.openid + serializer = self.get_serializer(data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def partial_update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot partial_update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data, partial=True) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def destroy(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot delete data which not yours"}) + else: + qs.is_delete = True + qs.save() + serializer = self.get_serializer(qs, many=False) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + +class FileDownloadView(viewsets.ModelViewSet): + renderer_classes = (FileRenderCN, ) + tuple(api_settings.DEFAULT_RENDERER_CLASSES) + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return serializers.FileRenderSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def get_lang(self, data): + lang = self.request.META.get('HTTP_LANGUAGE') + if lang: + if lang == 'zh-hans': + return FileRenderCN().render(data) + else: + return FileRenderEN().render(data) + else: + return FileRenderEN().render(data) + + def list(self, request, *args, **kwargs): + from datetime import datetime + dt = datetime.now() + data = ( + FileRenderSerializer(instance).data + for instance in self.filter_queryset(self.get_queryset()) + ) + renderer = self.get_lang(data) + response = StreamingHttpResponse( + renderer, + content_type="text/csv" + ) + response['Content-Disposition'] = "attachment; filename='capital_{}.csv'".format(str(dt.strftime('%Y%m%d%H%M%S%f'))) + return response diff --git a/chat/__init__.py b/chat/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/chat/admin.py b/chat/admin.py new file mode 100644 index 00000000..c9f86026 --- /dev/null +++ b/chat/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from . models import ListModel + +admin.site.register(ListModel) diff --git a/chat/apps.py b/chat/apps.py new file mode 100644 index 00000000..8ebb9f06 --- /dev/null +++ b/chat/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class ChatConfig(AppConfig): + name = 'chat' diff --git a/chat/filter.py b/chat/filter.py new file mode 100644 index 00000000..319eea95 --- /dev/null +++ b/chat/filter.py @@ -0,0 +1,14 @@ +from django_filters import FilterSet +from .models import ListModel + +class Filter(FilterSet): + class Meta: + model = ListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "read": ['exact', 'iexact'], + "detail": ['exact', 'iexact', 'contains', 'icontains'], + "is_delete": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } diff --git a/chat/migrations/__init__.py b/chat/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/chat/models.py b/chat/models.py new file mode 100644 index 00000000..e5868911 --- /dev/null +++ b/chat/models.py @@ -0,0 +1,19 @@ +from django.db import models + +class ListModel(models.Model): + sender = models.CharField(max_length=100, verbose_name='Sender') + receiver = models.CharField(max_length=100, verbose_name='Receiver') + read = models.BooleanField(default=False, verbose_name="Readed") + detail = models.CharField(max_length=100, verbose_name='Chat text') + is_delete = models.BooleanField(default=False, verbose_name='Delete label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name='Create time') + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name='Update time') + + class Meta: + db_table = 'chat' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['-id'] + + def __str__(self): + return self.pk diff --git a/chat/serializers.py b/chat/serializers.py new file mode 100644 index 00000000..8516386d --- /dev/null +++ b/chat/serializers.py @@ -0,0 +1,14 @@ +from rest_framework import serializers +from .models import ListModel + +class ChatGetSerializer(serializers.ModelSerializer): + sender = serializers.CharField(read_only=True, required=False) + receiver = serializers.CharField(read_only=True, required=False) + read = serializers.BooleanField(read_only=True, required=False) + detail = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = ListModel + exclude = ['is_delete', ] + read_only_fields = ['id', ] diff --git a/chat/tests.py b/chat/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/chat/urls.py b/chat/urls.py new file mode 100644 index 00000000..56afbcb3 --- /dev/null +++ b/chat/urls.py @@ -0,0 +1,7 @@ +from django.urls import path +from . import views + +urlpatterns = [ +path(r'', views.ChatViewSet.as_view({"get": "list"}), name="chat"), +path(r'read/', views.ReadAPI.as_view({"get": "list"}), name='read') +] diff --git a/chat/views.py b/chat/views.py new file mode 100644 index 00000000..e920bd41 --- /dev/null +++ b/chat/views.py @@ -0,0 +1,57 @@ +from django.db.models import Q +from rest_framework import viewsets +from .models import ListModel +from . import serializers +from utils.page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from .filter import Filter + +class ChatViewSet(viewsets.ModelViewSet): + """ + list: + Response a data list(all) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_queryset(self): + if self.request.user: + sender = str(self.request.GET.get('sender', '')) + '-' + self.request.auth.openid + receiver = str(self.request.GET.get('receiver', '')) + '-' + self.request.auth.openid + if ListModel.objects.filter(sender=receiver, receiver=sender, read=False).exists(): + ListModel.objects.filter(sender=receiver, receiver=sender, read=False).update(read=True) + return ListModel.objects.filter(Q(sender=sender, receiver=receiver) | Q(sender=receiver, receiver=sender)) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return serializers.ChatGetSerializer + else: + return self.http_method_not_allowed(request=self.request) + +class ReadAPI(viewsets.ModelViewSet): + """ + list: + Response a data list(all) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_queryset(self): + if self.request.user: + sender = str(self.request.GET.get('sender', '')) + '-' + self.request.auth.openid + return ListModel.objects.filter(receiver=sender, read=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return serializers.ChatGetSerializer + else: + return self.http_method_not_allowed(request=self.request) diff --git a/company/__init__.py b/company/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/company/admin.py b/company/admin.py new file mode 100644 index 00000000..c9f86026 --- /dev/null +++ b/company/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from . models import ListModel + +admin.site.register(ListModel) diff --git a/company/apps.py b/company/apps.py new file mode 100644 index 00000000..b64a2285 --- /dev/null +++ b/company/apps.py @@ -0,0 +1,4 @@ +from django.apps import AppConfig + +class CompanyConfig(AppConfig): + name = 'company' diff --git a/company/filter.py b/company/filter.py new file mode 100644 index 00000000..43fcc184 --- /dev/null +++ b/company/filter.py @@ -0,0 +1,18 @@ +from django_filters import FilterSet +from .models import ListModel + +class Filter(FilterSet): + class Meta: + model = ListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "company_name": ['exact', 'iexact', 'contains', 'icontains'], + "company_city": ['exact', 'iexact', 'contains', 'icontains'], + "company_address": ['exact', 'iexact', 'contains', 'icontains'], + "company_contact": ['exact', 'iexact', 'contains', 'icontains'], + "company_manager": ['exact', 'iexact', 'contains', 'icontains'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "is_delete": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } diff --git a/company/migrations/__init__.py b/company/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/company/models.py b/company/models.py new file mode 100644 index 00000000..91dc14bc --- /dev/null +++ b/company/models.py @@ -0,0 +1,22 @@ +from django.db import models + +class ListModel(models.Model): + company_name = models.CharField(max_length=255, verbose_name="Company Name") + company_city = models.CharField(max_length=255, verbose_name="Company City") + company_address = models.CharField(max_length=255, verbose_name="Company Address") + company_contact = models.BigIntegerField(default=0, verbose_name="Company Contact") + company_manager = models.CharField(max_length=255, verbose_name="Company Manager") + creater = models.CharField(max_length=255, verbose_name="Who Created") + openid = models.CharField(max_length=255, verbose_name="Openid") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'company' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['company_name'] + + def __str__(self): + return self.pk diff --git a/company/serializers.py b/company/serializers.py new file mode 100644 index 00000000..bbe0d1c2 --- /dev/null +++ b/company/serializers.py @@ -0,0 +1,54 @@ +from rest_framework import serializers +from .models import ListModel +from utils import datasolve + +class CompanyGetSerializer(serializers.ModelSerializer): + company_name = serializers.CharField(read_only=True, required=False) + company_city = serializers.CharField(read_only=True, required=False) + company_address = serializers.CharField(read_only=True, required=False) + company_contact = serializers.IntegerField(read_only=True, required=False) + company_manager = serializers.CharField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id'] + +class CompanyPostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + company_name = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + company_city = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + company_address = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + company_contact = serializers.IntegerField(read_only=False, required=True, validators=[datasolve.data_validate]) + company_manager = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class CompanyUpdateSerializer(serializers.ModelSerializer): + company_name = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + company_city = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + company_address = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + company_contact = serializers.IntegerField(read_only=False, required=True, validators=[datasolve.data_validate]) + company_manager = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class CompanyPartialUpdateSerializer(serializers.ModelSerializer): + company_name = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + company_city = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + company_address = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + company_contact = serializers.IntegerField(read_only=False, required=False, validators=[datasolve.data_validate]) + company_manager = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] diff --git a/company/tests.py b/company/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/company/urls.py b/company/urls.py new file mode 100644 index 00000000..c85fe605 --- /dev/null +++ b/company/urls.py @@ -0,0 +1,12 @@ +from django.urls import path, re_path +from . import views + +urlpatterns = [ +path(r'', views.APIViewSet.as_view({"get": "list", "post": "create"}), name="company"), +re_path(r'^(?P\d+)/$', views.APIViewSet.as_view({ + 'get': 'retrieve', + 'put': 'update', + 'patch': 'partial_update', + 'delete': 'destroy' +}), name="company_1") +] diff --git a/company/views.py b/company/views.py new file mode 100644 index 00000000..3b427beb --- /dev/null +++ b/company/views.py @@ -0,0 +1,114 @@ +from rest_framework import viewsets +from .models import ListModel +from . import serializers +from utils.page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from .filter import Filter +from rest_framework.exceptions import APIException + +class APIViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + list: + Response a data list(all) + + create: + Create a data line(post) + + delete: + Delete a data line(delete) + + partial_update: + Partial_update a data(patch:partial_update) + + update: + Update a data(put:update) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve', 'destroy']: + return serializers.CompanyGetSerializer + elif self.action in ['create']: + return serializers.CompanyPostSerializer + elif self.action in ['update']: + return serializers.CompanyUpdateSerializer + elif self.action in ['partial_update']: + return serializers.CompanyPartialUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, *args, **kwargs): + data = self.request.data + data['openid'] = self.request.auth.openid + if ListModel.objects.filter(openid=data['openid'], company_name=data['company_name'], is_delete=False).exists(): + raise APIException({"detail": "Data exists"}) + else: + if ListModel.objects.filter(openid=data['openid'], is_delete=False).count() >= 1: + raise APIException({"detail": "You Just Can Create 1 Company"}) + else: + serializer = self.get_serializer(data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def partial_update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot partial_update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data, partial=True) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def destroy(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot delete data which not yours"}) + else: + qs.is_delete = True + qs.save() + serializer = self.get_serializer(qs, many=False) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + diff --git a/customer/__init__.py b/customer/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/customer/admin.py b/customer/admin.py new file mode 100644 index 00000000..c9f86026 --- /dev/null +++ b/customer/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from . models import ListModel + +admin.site.register(ListModel) diff --git a/customer/apps.py b/customer/apps.py new file mode 100644 index 00000000..8616bc40 --- /dev/null +++ b/customer/apps.py @@ -0,0 +1,4 @@ +from django.apps import AppConfig + +class CustomerConfig(AppConfig): + name = 'customer' diff --git a/customer/files.py b/customer/files.py new file mode 100644 index 00000000..48eb8d03 --- /dev/null +++ b/customer/files.py @@ -0,0 +1,49 @@ +from rest_framework_csv.renderers import CSVStreamingRenderer + +def file_headers(): + return [ + 'customer_name', + 'customer_city', + 'customer_address', + 'customer_contact', + 'customer_manager', + 'customer_level', + 'creater', + 'create_time', + 'update_time' + ] + +def cn_data_header(): + return dict([ + ('customer_name', u'客户名称'), + ('customer_city', u'客户城市'), + ('customer_address', u'详细地址'), + ('customer_contact', u'联系电话'), + ('customer_manager', u'负责人'), + ('customer_level', u'客户等级'), + ('creater', u'创建人'), + ('create_time', u'创建时间'), + ('update_time', u'更新时间'), + ]) + +def en_data_header(): + return dict([ + ('customer_name', u'Customer Name'), + ('customer_city', u'Customer City'), + ('customer_address', u'Customer Address'), + ('customer_contact', u'Customer Contact'), + ('customer_manager', u'Customer Manager'), + ('customer_level', u'Customer Level'), + ('creater', u'Creater'), + ('create_time', u'Create Time'), + ('update_time', u'Update Time'), + ]) + + +class FileRenderCN(CSVStreamingRenderer): + header = file_headers() + labels = cn_data_header() + +class FileRenderEN(CSVStreamingRenderer): + header = file_headers() + labels = en_data_header() diff --git a/customer/filter.py b/customer/filter.py new file mode 100644 index 00000000..13af85c6 --- /dev/null +++ b/customer/filter.py @@ -0,0 +1,20 @@ +from django_filters import FilterSet +from .models import ListModel + +class Filter(FilterSet): + class Meta: + model = ListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "customer_name": ['exact', 'iexact', 'contains', 'icontains'], + "customer_city": ['exact', 'iexact', 'contains', 'icontains'], + "customer_address": ['exact', 'iexact', 'contains', 'icontains'], + "customer_contact": ['exact', 'iexact', 'contains', 'icontains'], + "customer_manager": ['exact', 'iexact', 'contains', 'icontains'], + "customer_level": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "is_delete": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } + diff --git a/customer/migrations/__init__.py b/customer/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/customer/models.py b/customer/models.py new file mode 100644 index 00000000..06f78239 --- /dev/null +++ b/customer/models.py @@ -0,0 +1,23 @@ +from django.db import models + +class ListModel(models.Model): + customer_name = models.CharField(max_length=255, verbose_name="Customer Name") + customer_city = models.CharField(max_length=255, verbose_name="Customer City") + customer_address = models.CharField(max_length=255, verbose_name="Customer Address") + customer_contact = models.CharField(max_length=255, verbose_name="Customer Contact") + customer_manager = models.CharField(max_length=255, verbose_name="Customer Manager") + customer_level = models.BigIntegerField(default=1, verbose_name="Customer Level") + creater = models.CharField(max_length=255, verbose_name="Who Created") + openid = models.CharField(max_length=255, verbose_name="Openid") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'customer' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['customer_name'] + + def __str__(self): + return self.pk diff --git a/customer/serializers.py b/customer/serializers.py new file mode 100644 index 00000000..e516b97c --- /dev/null +++ b/customer/serializers.py @@ -0,0 +1,74 @@ +from rest_framework import serializers +from .models import ListModel +from utils import datasolve + +class CustomerGetSerializer(serializers.ModelSerializer): + customer_name = serializers.CharField(read_only=True, required=False) + customer_city = serializers.CharField(read_only=True, required=False) + customer_address = serializers.CharField(read_only=True, required=False) + customer_contact = serializers.CharField(read_only=True, required=False) + customer_manager = serializers.CharField(read_only=True, required=False) + customer_level = serializers.IntegerField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', ] + +class CustomerPostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + customer_name = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + customer_city = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + customer_address = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + customer_contact = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + customer_manager = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + customer_level = serializers.IntegerField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class CustomerUpdateSerializer(serializers.ModelSerializer): + customer_name = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + customer_city = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + customer_address = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + customer_contact = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + customer_manager = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + customer_level = serializers.IntegerField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class CustomerPartialUpdateSerializer(serializers.ModelSerializer): + customer_name = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + customer_city = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + customer_address = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + customer_contact = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + customer_manager = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + customer_level = serializers.IntegerField(read_only=False, required=False, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class FileRenderSerializer(serializers.ModelSerializer): + customer_name = serializers.CharField(read_only=False, required=False) + customer_city = serializers.CharField(read_only=False, required=False) + customer_address = serializers.CharField(read_only=False, required=False) + customer_contact = serializers.CharField(read_only=False, required=False) + customer_manager = serializers.CharField(read_only=False, required=False) + customer_level = serializers.IntegerField(read_only=False, required=False) + creater = serializers.CharField(read_only=False, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + + class Meta: + model = ListModel + ref_name = 'CustomereFileRenderSerializer' + exclude = ['openid', 'is_delete', ] diff --git a/customer/tests.py b/customer/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/customer/urls.py b/customer/urls.py new file mode 100644 index 00000000..5952de9c --- /dev/null +++ b/customer/urls.py @@ -0,0 +1,13 @@ +from django.urls import path, re_path +from . import views + +urlpatterns = [ +path(r'', views.APIViewSet.as_view({"get": "list", "post": "create"}), name="customer"), +path(r'file/', views.FileDownloadView.as_view({"get": "list"}), name="customerfiledownload"), +re_path(r'^(?P\d+)/$', views.APIViewSet.as_view({ + 'get': 'retrieve', + 'put': 'update', + 'patch': 'partial_update', + 'delete': 'destroy' +}), name="customer_1") +] diff --git a/customer/views.py b/customer/views.py new file mode 100644 index 00000000..e7499d99 --- /dev/null +++ b/customer/views.py @@ -0,0 +1,168 @@ +from django.http import StreamingHttpResponse +from rest_framework import viewsets +from rest_framework.settings import api_settings +from .files import FileRenderCN, FileRenderEN +from .models import ListModel +from . import serializers +from utils.page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from .filter import Filter +from rest_framework.exceptions import APIException +from .serializers import FileRenderSerializer + +class APIViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + list: + Response a data list(all) + + create: + Create a data line(post) + + delete: + Delete a data line(delete) + + partial_update: + Partial_update a data(patch:partial_update) + + update: + Update a data(put:update) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve', 'destroy']: + return serializers.CustomerGetSerializer + elif self.action in ['create']: + return serializers.CustomerPostSerializer + elif self.action in ['update']: + return serializers.CustomerUpdateSerializer + elif self.action in ['partial_update']: + return serializers.CustomerPartialUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, *args, **kwargs): + data = self.request.data + data['openid'] = self.request.auth.openid + if ListModel.objects.filter(openid=data['openid'], customer_name=data['customer_name'], is_delete=False).exists(): + raise APIException({"detail": "Data exists"}) + else: + serializer = self.get_serializer(data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def partial_update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot partial_update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data, partial=True) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def destroy(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot delete data which not yours"}) + else: + qs.is_delete = True + qs.save() + serializer = self.get_serializer(qs, many=False) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + +class FileDownloadView(viewsets.ModelViewSet): + renderer_classes = (FileRenderCN, ) + tuple(api_settings.DEFAULT_RENDERER_CLASSES) + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return serializers.FileRenderSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def get_lang(self, data): + lang = self.request.META.get('HTTP_LANGUAGE') + if lang: + if lang == 'zh-hans': + return FileRenderCN().render(data) + else: + return FileRenderEN().render(data) + else: + return FileRenderEN().render(data) + + def list(self, request, *args, **kwargs): + from datetime import datetime + dt = datetime.now() + data = ( + FileRenderSerializer(instance).data + for instance in self.filter_queryset(self.get_queryset()) + ) + renderer = self.get_lang(data) + response = StreamingHttpResponse( + renderer, + content_type="text/csv" + ) + response['Content-Disposition'] = "attachment; filename='customer_{}.csv'".format(str(dt.strftime('%Y%m%d%H%M%S%f'))) + return response diff --git a/cyclecount/__init__.py b/cyclecount/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/cyclecount/admin.py b/cyclecount/admin.py new file mode 100644 index 00000000..ceb4cb5b --- /dev/null +++ b/cyclecount/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from . models import CyclecountModeDayModel + +admin.site.register(CyclecountModeDayModel) diff --git a/cyclecount/apps.py b/cyclecount/apps.py new file mode 100644 index 00000000..1db104ec --- /dev/null +++ b/cyclecount/apps.py @@ -0,0 +1,4 @@ +from django.apps import AppConfig + +class CyclecountConfig(AppConfig): + name = 'cyclecount' diff --git a/cyclecount/files.py b/cyclecount/files.py new file mode 100644 index 00000000..4f99b0ff --- /dev/null +++ b/cyclecount/files.py @@ -0,0 +1,49 @@ +from rest_framework_csv.renderers import CSVStreamingRenderer + +def file_headers(): + return [ + "cyclecount_status", + "bin_name", + "goods_code", + "goods_qty", + "physical_inventory", + "difference", + "creater", + "create_time", + "update_time" + ] + +def cn_data_header(): + return dict([ + ('cyclecount_status', u'盘点状态'), + ('bin_name', u'库位名称'), + ('goods_code', u'商品编码'), + ('goods_qty', u'现有数量'), + ('physical_inventory', u'盘点数量'), + ('difference', u'盘点差异'), + ('creater', u'创建人'), + ('create_time', u'创建时间'), + ('update_time', u'盘点时间') + ]) + +def en_data_header(): + return dict([ + ('cyclecount_status', u'Count Status'), + ('bin_nam', u'Bin Name'), + ('goods_code', u'Goods Code'), + ('goods_qty', u'On-Hand Stock'), + ('physical_inventory', u'Count QTY'), + ('difference', u'Count Difference'), + ('creater', u'Creater'), + ('create_time', u'Create Time'), + ('update_time', u'Update Time') + ]) + + +class FileRenderCN(CSVStreamingRenderer): + header = file_headers() + labels = cn_data_header() + +class FileRenderEN(CSVStreamingRenderer): + header = file_headers() + labels = en_data_header() diff --git a/cyclecount/filter.py b/cyclecount/filter.py new file mode 100644 index 00000000..236c7130 --- /dev/null +++ b/cyclecount/filter.py @@ -0,0 +1,24 @@ +from django_filters import FilterSet +from .models import CyclecountModeDayModel +from .models import QTYRecorder +class Filter(FilterSet): + class Meta: + model = CyclecountModeDayModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } + +class QTYRecorderListFilter(FilterSet): + class Meta: + model = QTYRecorder + fields = { + "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "mode_code": ['exact', 'iexact', 'contains', 'icontains'], + "bin_name": ['exact', 'iexact', 'contains', 'icontains'], + "goods_code": ['exact', 'iexact', 'contains', 'icontains'], + "goods_qty": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'range'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } \ No newline at end of file diff --git a/cyclecount/migrations/__init__.py b/cyclecount/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/cyclecount/models.py b/cyclecount/models.py new file mode 100644 index 00000000..d32bf914 --- /dev/null +++ b/cyclecount/models.py @@ -0,0 +1,42 @@ +from django.db import models + +class QTYRecorder(models.Model): + openid = models.CharField(max_length=255, verbose_name="Openid") + mode_code = models.CharField(max_length=255, verbose_name="Transaction Mode") + bin_name = models.CharField(max_length=255, verbose_name="Bin Name") + goods_code = models.CharField(max_length=255, verbose_name="Goods Code") + goods_qty = models.BigIntegerField(default=0, verbose_name="On Hand Stock") + creater = models.CharField(max_length=255, verbose_name="Who Create") + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'qtyrecorder' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['-id'] + + def __str__(self): + return self.pk + +class CyclecountModeDayModel(models.Model): + openid = models.CharField(max_length=255, verbose_name="Openid") + cyclecount_status = models.IntegerField(default=0, verbose_name="Cycle Count Status") + bin_name = models.CharField(max_length=255, verbose_name="Bin Name") + goods_code = models.CharField(max_length=255, verbose_name="Goods Code") + goods_qty = models.BigIntegerField(default=0, verbose_name="On Hand Stock") + physical_inventory = models.BigIntegerField(default=0, verbose_name="Goods Code") + difference = models.BigIntegerField(default=0, verbose_name="Goods Code") + creater = models.CharField(max_length=255, verbose_name="Who Create") + t_code = models.CharField(max_length=255, verbose_name="Transaction Code") + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'cyclecountday' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['openid'] + + def __str__(self): + return self.pk diff --git a/cyclecount/page.py b/cyclecount/page.py new file mode 100644 index 00000000..bffb83d0 --- /dev/null +++ b/cyclecount/page.py @@ -0,0 +1,9 @@ +from rest_framework.pagination import PageNumberPagination +from rest_framework.utils.urls import replace_query_param, remove_query_param +from rest_framework.exceptions import APIException + +class CycleCountPageNumberPagination(PageNumberPagination): + page_size = 10000 + page_size_query_param = "max_page" + max_page_size = 20000 + page_query_param = 'page' diff --git a/cyclecount/serializers.py b/cyclecount/serializers.py new file mode 100644 index 00000000..1f2e78d5 --- /dev/null +++ b/cyclecount/serializers.py @@ -0,0 +1,63 @@ +from rest_framework import serializers +from .models import CyclecountModeDayModel +from utils import datasolve +from .models import QTYRecorder +class CyclecountGetSerializer(serializers.ModelSerializer): + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = CyclecountModeDayModel + exclude = ['openid'] + read_only_fields = ['id', ] + +class CyclecountPostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = CyclecountModeDayModel + exclude = [] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class FileRenderSerializer(serializers.ModelSerializer): + creater = serializers.CharField(read_only=False, required=False) + physical_inventory = serializers.SerializerMethodField() + difference = serializers.SerializerMethodField() + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + + class Meta: + model = CyclecountModeDayModel + ref_name = 'CyclecountFileRenderSerializer' + exclude = ['openid'] + + def get_physical_inventory(self, obj): + return '' + + def get_difference(self, obj): + return '' + +class FileRenderAllSerializer(serializers.ModelSerializer): + creater = serializers.CharField(read_only=False, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + + class Meta: + model = CyclecountModeDayModel + ref_name = 'CyclecountFileRenderAllSerializer' + exclude = ['openid'] + + +class QTYRecorderSerializer(serializers.ModelSerializer): + mode_code = serializers.CharField(read_only=True,required=False) + bin_name = serializers.CharField(read_only=True,required=False) + goods_code = serializers.CharField(read_only=True,required=False) + goods_qty = serializers.IntegerField(read_only=True,required=False) + creater = serializers.CharField(read_only=True,required=False) + create_time = serializers.DateTimeField(read_only=True,format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True,format='%Y-%m-%d %H:%M:%S') + + class Meta: + model = QTYRecorder + ref_name = 'QTYRecorderSerializer' + exclude = ['openid'] \ No newline at end of file diff --git a/cyclecount/tests.py b/cyclecount/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/cyclecount/urls.py b/cyclecount/urls.py new file mode 100644 index 00000000..b2983228 --- /dev/null +++ b/cyclecount/urls.py @@ -0,0 +1,11 @@ +from django.urls import path +from . import views + +urlpatterns = [ +path(r'', views.CyclecountModeDayViewSet.as_view({"get": "list", "post": "create", 'put': 'update'}), name="cyclecount"), +path(r'cyclecountrecorder/', views.CyclecountModeAllViewSet.as_view({"get": "list"}), name="cyclecountrecorder"), +path(r'filecyclecountday/', views.FileDownloadView.as_view({"get": "list"}), name="filecyclecountday"), +path(r'filecyclecountall/', views.FileDownloadAllView.as_view({"get": "list"}), name="filecyclecountall"), + +path(r'qtyrecorviewset/', views.QTYRecorderViewSet.as_view({"get": "list"}), name="qtyrecorviewset") +] diff --git a/cyclecount/views.py b/cyclecount/views.py new file mode 100644 index 00000000..c187be3f --- /dev/null +++ b/cyclecount/views.py @@ -0,0 +1,291 @@ +from dateutil.relativedelta import relativedelta +from django.http import StreamingHttpResponse +from django.utils import timezone +from rest_framework import viewsets +from rest_framework.settings import api_settings +from .files import FileRenderCN, FileRenderEN +from .models import CyclecountModeDayModel +from . import serializers +from utils.page import MyPageNumberPagination +from .page import CycleCountPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from .filter import Filter +from .filter import QTYRecorderListFilter +from rest_framework.exceptions import APIException +from .serializers import FileRenderSerializer, FileRenderAllSerializer +from .models import QTYRecorder +import datetime + +class QTYRecorderViewSet(viewsets.ModelViewSet): + """ + list: + Response a data list(all) + + """ + + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = QTYRecorderListFilter + + def get_queryset(self): + if self.request.user: + return QTYRecorder.objects.filter(openid=self.request.auth.openid) + else: + return QTYRecorder.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return serializers.QTYRecorderSerializer + else: + return self.http_method_not_allowed(request=self.request) + +class CyclecountModeDayViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + list: + Response a data list(all) + + create: + Create a data line(post) + + delete: + Delete a data line(delete) + + partial_update: + Partial_update a data(patch:partial_update) + + update: + Update a data(put:update) + """ + pagination_class = None + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + cur_date = timezone.now() + delt_date = relativedelta(days=1) + if id is None: + return CyclecountModeDayModel.objects.filter(openid=self.request.auth.openid, cyclecount_status=0, + update_time__gte=str((cur_date -delt_date).date()) + ' 00:00:00', + update_time__lte=str((cur_date + delt_date).date()) + ' 00:00:00') + else: + return CyclecountModeDayModel.objects.filter(openid=self.request.auth.openid, cyclecount_status=0, + update_time__gte=str((cur_date - delt_date).date()) + ' 00:00:00', + update_time__lte=str((cur_date + delt_date).date()) + ' 00:00:00', id=id) + else: + return CyclecountModeDayModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return serializers.CyclecountGetSerializer + elif self.action in ['create']: + return serializers.CyclecountPostSerializer + elif self.action in ['update']: + return serializers.CyclecountUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, *args, **kwargs): + data = self.request.data + for i in range(len(data)): + CyclecountModeDayModel.objects.filter(openid=self.request.auth.openid, + t_code=data[i]['t_code']).update( + physical_inventory=data[i]['physical_inventory'], cyclecount_status=1, + difference=data[i]['physical_inventory'] - data[i]['goods_qty']) + return Response({"detail": "success"}, status=200) + + def update(self, request, *args, **kwargs): + data = self.request.data + for i in range(len(data)): + scan_count_data = self.get_queryset().filter(openid=self.request.auth.openid, + t_code=data[i]['t_code']).first() + scan_count_data.physical_inventory = scan_count_data.physical_inventory + data[i]['physical_inventory'] + scan_count_data.difference = data[i]['physical_inventory'] - data[i]['goods_qty'] + scan_count_data.cyclecount_status = 1 + scan_count_data.save() + return Response({"detail": "success"}, status=200) + +class CyclecountModeAllViewSet(viewsets.ModelViewSet): + """ + list: + Response a data list(get) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + date_choice = self.request.GET.get('create_time', '') + cur_time = timezone.now().date() + if date_choice: + if id is None: + return CyclecountModeDayModel.objects.filter(openid=self.request.auth.openid, cyclecount_status=1, + update_time__gte=str(date_choice) + ' 00:00:00', + update_time__lte=str(date_choice) + ' 23:59:59') + else: + return CyclecountModeDayModel.objects.filter(openid=self.request.auth.openid, cyclecount_status=1, + update_time__gte=str(date_choice) + ' 00:00:00', + update_time__lte=str(date_choice) + ' 23:59:59', + id=id) + else: + if id is None: + return CyclecountModeDayModel.objects.filter(openid=self.request.auth.openid, cyclecount_status=1, + update_time__gte=str(cur_time) + ' 00:00:00', + update_time__lte=str(cur_time) + ' 23:59:59') + else: + return CyclecountModeDayModel.objects.filter(openid=self.request.auth.openid, cyclecount_status=1, + update_time__gte=str(cur_time) + ' 00:00:00', + update_time__lte=str(cur_time) + ' 23:59:59', + id=id) + else: + return CyclecountModeDayModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return serializers.CyclecountGetSerializer + else: + return self.http_method_not_allowed(request=self.request) + + +class FileDownloadView(viewsets.ModelViewSet): + renderer_classes = (FileRenderCN, ) + tuple(api_settings.DEFAULT_RENDERER_CLASSES) + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time"] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + cur_date = timezone.now() + delt_date = relativedelta(days=1) + if id is None: + return CyclecountModeDayModel.objects.filter(openid=self.request.auth.openid, cyclecount_status=0, + update_time__gte=str((cur_date -delt_date).date()) + ' 00:00:00') + else: + return CyclecountModeDayModel.objects.filter(openid=self.request.auth.openid, cyclecount_status=0, + update_time__gte=str((cur_date -delt_date).date()) + ' 00:00:00', id=id) + else: + return CyclecountModeDayModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return serializers.FileRenderSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def get_lang(self, data): + lang = self.request.META.get('HTTP_LANGUAGE') + if lang: + if lang == 'zh-hans': + return FileRenderCN().render(data) + else: + return FileRenderEN().render(data) + else: + return FileRenderEN().render(data) + + def list(self, request, *args, **kwargs): + from datetime import datetime + dt = datetime.now() + data = ( + FileRenderSerializer(instance).data + for instance in self.filter_queryset(self.get_queryset()) + ) + renderer = self.get_lang(data) + response = StreamingHttpResponse( + renderer, + content_type="text/csv" + ) + response['Content-Disposition'] = "attachment; filename='cyclecount_{}.csv'".format(str(dt.strftime('%Y%m%d%H%M%S%f'))) + return response + +class FileDownloadAllView(viewsets.ModelViewSet): + renderer_classes = (FileRenderCN, ) + tuple(api_settings.DEFAULT_RENDERER_CLASSES) + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time"] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + cur_date = timezone.now() + delt_date = relativedelta(days=1) + if id is None: + return CyclecountModeDayModel.objects.filter(openid=self.request.auth.openid, cyclecount_status=1, + update_time__gte=str((cur_date -delt_date).date()) + ' 00:00:00', + update_time__lte=str((cur_date + delt_date).date()) + ' 23:59:59') + else: + return CyclecountModeDayModel.objects.filter(openid=self.request.auth.openid, cyclecount_status=1, + update_time__gte=str((cur_date - delt_date).date()) + ' 00:00:00', + update_time__lte=str((cur_date + delt_date).date()) + ' 23:59:59', id=id) + else: + return CyclecountModeDayModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return serializers.FileRenderSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def get_lang(self, data): + lang = self.request.META.get('HTTP_LANGUAGE') + if lang: + if lang == 'zh-hans': + return FileRenderCN().render(data) + else: + return FileRenderEN().render(data) + else: + return FileRenderEN().render(data) + + def list(self, request, *args, **kwargs): + from datetime import datetime + dt = datetime.now() + data = ( + FileRenderAllSerializer(instance).data + for instance in self.filter_queryset(self.get_queryset()) + ) + renderer = self.get_lang(data) + response = StreamingHttpResponse( + renderer, + content_type="text/csv" + ) + response['Content-Disposition'] = "attachment; filename='cyclecountall_{}.csv'".format(str(dt.strftime('%Y%m%d%H%M%S%f'))) + return response diff --git a/dashboard/__init__.py b/dashboard/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/dashboard/admin.py b/dashboard/admin.py new file mode 100644 index 00000000..8c38f3f3 --- /dev/null +++ b/dashboard/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/dashboard/apps.py b/dashboard/apps.py new file mode 100644 index 00000000..50878e76 --- /dev/null +++ b/dashboard/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class DashboardConfig(AppConfig): + name = 'dashboard' diff --git a/dashboard/migrations/__init__.py b/dashboard/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/dashboard/models.py b/dashboard/models.py new file mode 100644 index 00000000..71a83623 --- /dev/null +++ b/dashboard/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/dashboard/tests.py b/dashboard/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/dashboard/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/dashboard/urls.py b/dashboard/urls.py new file mode 100644 index 00000000..10080094 --- /dev/null +++ b/dashboard/urls.py @@ -0,0 +1,7 @@ +from django.urls import path, re_path +from . import views + +urlpatterns = [ +path(r'receipts/', views.ReceiptsViewSet.as_view({"get": "list"}), name="receipts"), +path(r'sales/', views.SalesViewSet.as_view({"get": "list"}), name="sales") +] diff --git a/dashboard/views.py b/dashboard/views.py new file mode 100644 index 00000000..2d77f78d --- /dev/null +++ b/dashboard/views.py @@ -0,0 +1,202 @@ +from rest_framework import viewsets +from asn.models import AsnDetailModel +from dn.models import DnDetailModel +from asn import serializers as asnserializers +from dn import serializers as dnserializers +from utils.page import MyPageNumberPagination +from utils.datasolve import sumOfList +from utils.fbmsg import FBMsg +from utils.md5 import Md5 +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from asn.filter import AsnDetailFilter +from dn.filter import DnDetailFilter +from rest_framework.exceptions import APIException +from django.shortcuts import render +from dateutil.relativedelta import relativedelta +from django.db.models.functions import TruncMonth,TruncYear,ExtractDay,ExtractMonth +from django.db.models import Count +from django.db import connection +from django.db.models import Q +from django.db.models import Sum +import re +from django.utils import timezone + +class ReceiptsViewSet(viewsets.ModelViewSet): + """ + list: + Response a data list(all) + """ + pagination_class = None + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = AsnDetailFilter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return AsnDetailModel.objects.filter(openid=self.request.auth.openid, asn_status__gte=4, + create_time__gte=timezone.now().date() - relativedelta(days=14), + is_delete=False) + else: + return AsnDetailModel.objects.filter(openid=self.request.auth.openid, asn_status__gte=4, + create_time__gte=timezone.now().date() - relativedelta(days=14), + id=id, is_delete=False) + else: + return AsnDetailModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return asnserializers.ASNDetailGetSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def notice_lang(self): + lang = self.request.META.get('HTTP_LANGUAGE') + return lang + + def list(self, request, *args, **kwargs): + qs = self.get_queryset() + context = {} + dataset = {} + dimensions = ['product'] + source = [] + series = [] + bar_charts = { + "type": 'bar', + "barWidth": '4%', + "barGap": '60%', + "barCategoryGap": '10%', + "itemStyle": { + "normal": { + "label": { + "show": "true", + "position": "top" + } + } + } + } + receipt_res = qs.annotate(month=ExtractMonth('create_time'), day=ExtractDay('create_time')) \ + .values('month', 'day').order_by('month', 'day').annotate(number=Sum('goods_cost')) + # qty_res = qs.values('goods_code').order_by('goods_code').annotate(number=Sum('goods_qty')) + # rank_res = qs.values('goods_code').order_by('goods_code').annotate(number=Sum('goods_cost')) + receipt_res_dict = { + } + # qty_res_dict = { + # } + # rank_res_dict = { + # } + for i in receipt_res: + series.append(bar_charts) + dimensions.append("%s-%s" % (i['month'], i['day'])) + receipt_res_dict.update({"%s-%s" % (i['month'], i['day']): round(i['number'], 2)}) + # for i in qty_res: + # qty_res_dict.update({i['goods_code']: i['number']}) + # for i in rank_res: + # rank_res_dict.update({i['goods_code']: i['number']}) + source.append(receipt_res_dict) + # data_list.append(qty_res_dict) + # data_list.append(rank_res_dict) + dataset['source'] = source + dataset['dimensions'] = dimensions + context['dataset'] = dataset + context['series'] = series + return Response(context) + +class SalesViewSet(viewsets.ModelViewSet): + """ + list: + Response a data list(all) + """ + pagination_class = None + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = DnDetailFilter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return DnDetailModel.objects.filter(openid=self.request.auth.openid, dn_status__gte=4, + create_time__gte=timezone.now().date() - relativedelta(days=14), + is_delete=False) + else: + return DnDetailModel.objects.filter(openid=self.request.auth.openid, dn_status__gte=4, + create_time__gte=timezone.now().date() - relativedelta(days=14), + id=id, is_delete=False) + else: + return DnDetailModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return dnserializers.DNDetailGetSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def notice_lang(self): + lang = self.request.META.get('HTTP_LANGUAGE') + return lang + + def list(self, request, *args, **kwargs): + qs = self.get_queryset() + context = {} + dataset = {} + dimensions = ['product'] + source = [] + series = [] + bar_charts = { + "type": 'bar', + "barWidth": '4%', + "barGap": '60%', + "barCategoryGap": '10%', + "itemStyle": { + "normal": { + "label": { + "show": "true", + "position": "top" + } + } + } + } + receipt_res = qs.annotate(month=ExtractMonth('create_time'), day=ExtractDay('create_time')) \ + .values('month', 'day').order_by('month', 'day').annotate(number=Sum('goods_cost')) + # qty_res = qs.values('goods_code').order_by('goods_code').annotate(number=Sum('goods_qty')) + # rank_res = qs.values('goods_code').order_by('goods_code').annotate(number=Sum('goods_cost')) + receipt_res_dict = { + } + # qty_res_dict = { + # } + # rank_res_dict = { + # } + for i in receipt_res: + series.append(bar_charts) + dimensions.append("%s-%s" % (i['month'], i['day'])) + receipt_res_dict.update({"%s-%s" % (i['month'], i['day']): i['number']}) + # for i in qty_res: + # qty_res_dict.update({i['goods_code']: i['number']}) + # for i in rank_res: + # rank_res_dict.update({i['goods_code']: i['number']}) + source.append(receipt_res_dict) + # data_list.append(qty_res_dict) + # data_list.append(rank_res_dict) + dataset['source'] = source + dataset['dimensions'] = dimensions + context['dataset'] = dataset + context['series'] = series + return Response(context) diff --git a/dn/__init__.py b/dn/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/dn/admin.py b/dn/admin.py new file mode 100644 index 00000000..b8202d49 --- /dev/null +++ b/dn/admin.py @@ -0,0 +1,5 @@ +from django.contrib import admin +from . models import DnListModel, DnDetailModel + +admin.site.register(DnListModel) +admin.site.register(DnDetailModel) diff --git a/dn/apps.py b/dn/apps.py new file mode 100644 index 00000000..c677add2 --- /dev/null +++ b/dn/apps.py @@ -0,0 +1,4 @@ +from django.apps import AppConfig + +class DnConfig(AppConfig): + name = 'dn' diff --git a/dn/files.py b/dn/files.py new file mode 100644 index 00000000..9c42d61e --- /dev/null +++ b/dn/files.py @@ -0,0 +1,120 @@ +from rest_framework_csv.renderers import CSVStreamingRenderer + +def list_file_headers(): + return [ + 'dn_code', + 'dn_status', + 'total_weight', + 'total_volume', + 'customer', + 'creater', + 'back_order_label', + 'create_time', + 'update_time' + ] +def list_cn_data_header(): + return dict([ + ('dn_code', u'发货单单号'), + ('dn_status', u'发货单状态'), + ('total_weight', u'总重量'), + ('total_volume', u'总体积'), + ('customer', u'客户'), + ('creater', u'创建人'), + ('back_order_label', u'欠货订单标识'), + ('create_time', u'创建时间'), + ('update_time', u'更新时间') + ]) + +def list_en_data_header(): + return dict([ + ('dn_code', u'DN Code'), + ('dn_status', u'DN Status'), + ('total_weight', u'Total Weight'), + ('total_volume', u'Total Volume'), + ('customer', u'Customer'), + ('creater', u'Creater'), + ('back_order_label', u'Back Order Label'), + ('create_time', u'Create Time'), + ('update_time', u'Update Time') + ]) + +def detail_file_headers(): + return [ + 'dn_code', + 'dn_status', + 'goods_code', + 'goods_qty', + 'pick_qty', + 'picked_qty', + 'intransit_qty', + 'delivery_actual_qty', + 'delivery_shortage_qty', + 'delivery_more_qty', + 'delivery_damage_qty', + 'goods_weight', + 'goods_volume', + 'customer', + 'creater', + 'back_order_label', + 'create_time', + 'update_time' + ] +def detail_cn_data_header(): + return dict([ + ('dn_code', u'发货单单号'), + ('dn_status', u'发货单状态'), + ('goods_code', u'发货单货物名称'), + ('goods_qty', u'发货单数量'), + ('pick_qty', u'需要拣货数量'), + ('picked_qty', u'已拣货数量'), + ('intransit_qty', u'在途库存'), + ('delivery_actual_qty', u'实际到货'), + ('delivery_shortage_qty', u'到货短少'), + ('delivery_more_qty', u'多到货'), + ('delivery_damage_qty', u'到货破损'), + ('goods_weight', u'商品重量'), + ('goods_volume', u'商品体积'), + ('customer', u'客户'), + ('creater', u'创建人'), + ('back_order_label', u'欠货订单标识'), + ('create_time', u'创建时间'), + ('update_time', u'更新时间') + ]) + +def detail_en_data_header(): + return dict([ + ('dn_code', u'DN Code'), + ('dn_status', u'DN Status'), + ('goods_code', u'Goods Code'), + ('goods_qty', u'Goods Qty'), + ('pick_qty', u'Pick Qty'), + ('picked_qty', u'Picked Qty'), + ('intransit_qty', u'Intransit Qty'), + ('delivery_actual_qty', u'Delivery Actual Qty'), + ('delivery_shortage_qty', u'Delivery Shortage Qty'), + ('delivery_more_qty', u'Delivery More Qty'), + ('delivery_damage_qty', u'Delivery Damage Qty'), + ('goods_weight', u'Goods Weight'), + ('goods_volume', u'Goods Volume'), + ('customer', u'Customer'), + ('creater', u'Creater'), + ('back_order_label', u'Back Order Label'), + ('create_time', u'Create Time'), + ('update_time', u'Update Time') + ]) + +class FileListRenderCN(CSVStreamingRenderer): + header = list_file_headers() + labels = list_cn_data_header() + +class FileListRenderEN(CSVStreamingRenderer): + header = list_file_headers() + labels = list_cn_data_header() + +class FileDetailRenderCN(CSVStreamingRenderer): + header = detail_file_headers() + labels = detail_cn_data_header() + +class FileDetailRenderEN(CSVStreamingRenderer): + header = detail_file_headers() + labels = detail_en_data_header() diff --git a/dn/filter.py b/dn/filter.py new file mode 100644 index 00000000..219f4516 --- /dev/null +++ b/dn/filter.py @@ -0,0 +1,60 @@ +from django_filters import FilterSet +from .models import DnListModel, DnDetailModel, PickingListModel + +class DnListFilter(FilterSet): + class Meta: + model = DnListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "dn_code": ['exact', 'iexact', 'contains', 'icontains'], + "dn_status": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "total_weight": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "total_volume": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "customer": ['exact', 'iexact', 'contains', 'icontains'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "back_order_label": ['exact', 'iexact'], + "is_delete": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } + +class DnDetailFilter(FilterSet): + class Meta: + model = DnDetailModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "dn_code": ['exact', 'iexact', 'contains', 'icontains'], + "dn_status": ['exact', 'iexact'], + "customer": ['exact', 'iexact', 'contains', 'icontains'], + "goods_code": ['exact', 'iexact', 'contains', 'icontains'], + "goods_qty": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "pick_qty": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "picked_qty": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "intransit_qty": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "delivery_actual_qty": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "delivery_shortage_qty": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "delivery_more_qty": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "delivery_damage_qty": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "goods_weight": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "goods_volume": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "back_order_label": ['exact', 'iexact'], + 'is_delete': ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } + +class DnPickingListFilter(FilterSet): + class Meta: + model = PickingListModel + fields = { + "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "dn_code": ['exact', 'iexact', 'contains', 'icontains'], + "bin_name": ['exact', 'iexact', 'contains', 'icontains'], + "goods_code": ['exact', 'iexact', 'contains', 'icontains'], + "pick_qty": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'range'], + "picked_qty": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'range'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } diff --git a/dn/migrations/__init__.py b/dn/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/dn/models.py b/dn/models.py new file mode 100644 index 00000000..988c116f --- /dev/null +++ b/dn/models.py @@ -0,0 +1,79 @@ +from django.db import models + +class DnListModel(models.Model): + dn_code = models.CharField(max_length=255, verbose_name="DN Code") + dn_status = models.BigIntegerField(default=1, verbose_name="DN Status") + total_weight = models.FloatField(default=0, verbose_name="Total Weight") + total_volume = models.FloatField(default=0, verbose_name="Total Volume") + total_cost = models.FloatField(default=0, verbose_name="Total Cost") + customer = models.CharField(max_length=255, verbose_name="DN Customer") + creater = models.CharField(max_length=255, verbose_name="Who Created") + bar_code = models.CharField(max_length=255, verbose_name="Bar Code") + back_order_label = models.BooleanField(default=False, verbose_name='Back Order Label') + openid = models.CharField(max_length=255, verbose_name="Openid") + transportation_fee = models.JSONField(default=dict, verbose_name="Transportation Fee") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'dnlist' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['-id'] + + def __str__(self): + return self.pk + +class DnDetailModel(models.Model): + dn_code = models.CharField(max_length=255, verbose_name="DN Code") + dn_status = models.BigIntegerField(default=1, verbose_name="DN Status") + customer = models.CharField(max_length=255, verbose_name="DN Customer") + goods_code = models.CharField(max_length=255, verbose_name="Goods Code") + goods_qty = models.BigIntegerField(default=0, verbose_name="Goods QTY") + pick_qty = models.BigIntegerField(default=0, verbose_name="Goods Pre Pick QTY") + picked_qty = models.BigIntegerField(default=0, verbose_name="Goods Picked QTY") + intransit_qty = models.BigIntegerField(default=0, verbose_name="Intransit QTY") + delivery_actual_qty = models.BigIntegerField(default=0, verbose_name="Delivery Actual QTY") + delivery_shortage_qty = models.BigIntegerField(default=0, verbose_name="Delivery Shortage QTY") + delivery_more_qty = models.BigIntegerField(default=0, verbose_name="Delivery More QTY") + delivery_damage_qty = models.BigIntegerField(default=0, verbose_name="Delivery More QTY") + goods_weight = models.FloatField(default=0, verbose_name="Goods Weight") + goods_volume = models.FloatField(default=0, verbose_name="Goods Volume") + goods_cost = models.FloatField(default=0, verbose_name="Goods Cost") + creater = models.CharField(max_length=255, verbose_name="Who Created") + back_order_label = models.BooleanField(default=False, verbose_name='Back Order Label') + openid = models.CharField(max_length=255, verbose_name="Openid") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'dndetail' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['-id'] + + def __str__(self): + return self.pk + +class PickingListModel(models.Model): + dn_code = models.CharField(max_length=255, verbose_name="DN Code") + bin_name = models.CharField(max_length=255, verbose_name="Bin Name") + goods_code = models.CharField(max_length=255, verbose_name="Goods Code") + pick_qty = models.BigIntegerField(default=0, verbose_name="Goods Pre Pick QTY") + picked_qty = models.BigIntegerField(default=0, verbose_name="Picked QTY") + creater = models.CharField(max_length=255, verbose_name="Who Created") + t_code = models.CharField(max_length=255, verbose_name="Transaction Code") + openid = models.CharField(max_length=255, verbose_name="Openid") + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'pickinglist' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['-id'] + + def __str__(self): + return self.pk diff --git a/dn/page.py b/dn/page.py new file mode 100644 index 00000000..92388d24 --- /dev/null +++ b/dn/page.py @@ -0,0 +1,62 @@ +from collections import OrderedDict +from rest_framework.exceptions import APIException +from rest_framework.pagination import PageNumberPagination +from rest_framework.response import Response +from rest_framework.utils.urls import remove_query_param, replace_query_param + +from customer.models import ListModel as customer + +class MyPageNumberPaginationDNList(PageNumberPagination): + page_size = 30 + page_size_query_param = "max_page" + max_page_size = 1000 + page_query_param = 'page' + + def get_previous_link(self): + if not self.page.has_previous(): + return None + url = self.request.build_absolute_uri() + page_number = self.page.previous_page_number() + ssl_check = str(self.request.META.get('HTTP_ORIGIN')).split(':')[0] + url_combine = str(url).split(':') + if len(str(url).split(':')) == 2: + url = ssl_check + ':' + url_combine[1] + if page_number == 1: + return remove_query_param(url, self.page_query_param) + return replace_query_param(url, self.page_query_param, page_number) + elif len(str(url).split(':')) == 3: + url = ssl_check + ':' + url_combine[1] + ':' + url_combine[2] + if page_number == 1: + return remove_query_param(url, self.page_query_param) + return replace_query_param(url, self.page_query_param, page_number) + else: + raise APIException({"detail": "Wrong API Url"}) + + def get_next_link(self): + if not self.page.has_next(): + return None + url = self.request.build_absolute_uri() + page_number = self.page.next_page_number() + ssl_check = str(self.request.META.get('HTTP_ORIGIN')).split(':')[0] + url_combine = str(url).split(':') + if len(str(url).split(':')) == 2: + url = ssl_check + ':' + url_combine[1] + return replace_query_param(url, self.page_query_param, page_number) + elif len(str(url).split(':')) == 3: + url = ssl_check + ':' + url_combine[1] + ':' + url_combine[2] + return replace_query_param(url, self.page_query_param, page_number) + else: + raise APIException({"detail": "Wrong API Url"}) + + def get_paginated_response(self, data): + customer_list_data = customer.objects.filter(openid=self.request.auth.openid, is_delete=False) + customer_list = [] + for i in range(len(customer_list_data)): + customer_list.append(customer_list_data[i].customer_name) + return Response(OrderedDict([ + ('customer_list', customer_list), + ('count', self.page.paginator.count), + ('next', self.get_next_link()), + ('previous', self.get_previous_link()), + ('results', data) + ])) diff --git a/dn/serializers.py b/dn/serializers.py new file mode 100644 index 00000000..dd5d2cee --- /dev/null +++ b/dn/serializers.py @@ -0,0 +1,199 @@ +from rest_framework import serializers +from .models import DnListModel, DnDetailModel, PickingListModel +from utils import datasolve +class SannerDnDetailGetSerializer(serializers.ModelSerializer): + dn_code = serializers.CharField(read_only=True, required=False) + dn_status = serializers.IntegerField(read_only=True, required=False) + customer = serializers.CharField(read_only=True, required=False) + goods_code = serializers.CharField(read_only=True, required=False) + goods_qty = serializers.IntegerField(read_only=True, required=False) + pick_qty = serializers.IntegerField(read_only=True, required=False) + picked_qty = serializers.IntegerField(read_only=True, required=False) + intransit_qty = serializers.IntegerField(read_only=True, required=False) + delivery_actual_qty = serializers.IntegerField(read_only=True, required=False) + delivery_shortage_qty = serializers.IntegerField(read_only=True, required=False) + delivery_more_qty = serializers.IntegerField(read_only=True, required=False) + delivery_damage_qty = serializers.IntegerField(read_only=True, required=False) + goods_weight = serializers.FloatField(read_only=True, required=False) + goods_volume = serializers.FloatField(read_only=True, required=False) + goods_cost = serializers.FloatField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + back_order_label = serializers.BooleanField(read_only=True, required=False) + class Meta: + model = DnDetailModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'openid'] + + +class DNListGetSerializer(serializers.ModelSerializer): + dn_code = serializers.CharField(read_only=True, required=False) + dn_status = serializers.IntegerField(read_only=True, required=False) + customer = serializers.CharField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + bar_code = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = DnListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', ] + +class DNListPostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + dn_code = serializers.CharField(read_only=False, required=True, validators=[datasolve.dn_data_validate]) + customer = serializers.CharField(read_only=False, required=False) + bar_code = serializers.CharField(read_only=False, required=True) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = DnListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class DNListPartialUpdateSerializer(serializers.ModelSerializer): + dn_code = serializers.CharField(read_only=False, required=True, validators=[datasolve.dn_data_validate]) + + class Meta: + model = DnListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class DNListUpdateSerializer(serializers.ModelSerializer): + dn_code = serializers.CharField(read_only=False, required=True, validators=[datasolve.dn_data_validate]) + + class Meta: + model = DnListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class DNDetailGetSerializer(serializers.ModelSerializer): + dn_code = serializers.CharField(read_only=True, required=False) + dn_status = serializers.IntegerField(read_only=True, required=False) + customer = serializers.CharField(read_only=True, required=False) + goods_code = serializers.CharField(read_only=True, required=False) + goods_qty = serializers.IntegerField(read_only=True, required=False) + pick_qty = serializers.IntegerField(read_only=True, required=False) + picked_qty = serializers.IntegerField(read_only=True, required=False) + intransit_qty = serializers.IntegerField(read_only=True, required=False) + delivery_actual_qty = serializers.IntegerField(read_only=True, required=False) + delivery_shortage_qty = serializers.IntegerField(read_only=True, required=False) + delivery_more_qty = serializers.IntegerField(read_only=True, required=False) + delivery_damage_qty = serializers.IntegerField(read_only=True, required=False) + goods_weight = serializers.FloatField(read_only=True, required=False) + goods_volume = serializers.FloatField(read_only=True, required=False) + goods_cost = serializers.FloatField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + back_order_label = serializers.BooleanField(read_only=True, required=False) + class Meta: + model = DnDetailModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'openid'] + +class DNDetailPostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + dn_code = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + customer = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_code = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_qty = serializers.IntegerField(read_only=False, required=True, validators=[datasolve.qty_0_data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = DnDetailModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class DNDetailUpdateSerializer(serializers.ModelSerializer): + dn_code = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + customer = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_code = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_qty = serializers.IntegerField(read_only=False, required=True, validators=[datasolve.qty_0_data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = DnDetailModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class DNDetailPartialUpdateSerializer(serializers.ModelSerializer): + dn_code = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + customer = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + goods_code = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + goods_qty = serializers.IntegerField(read_only=False, required=False, validators=[datasolve.qty_0_data_validate]) + creater = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + class Meta: + model = DnDetailModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class DNPickingListGetSerializer(serializers.ModelSerializer): + dn_code = serializers.CharField(read_only=True, required=False) + bin_name = serializers.CharField(read_only=True, required=False) + goods_code = serializers.CharField(read_only=True, required=False) + pick_qty = serializers.IntegerField(read_only=True, required=False) + picked_qty = serializers.IntegerField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + t_code = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = PickingListModel + exclude = ['openid', ] + read_only_fields = ['id', ] + +class DNPickingCheckGetSerializer(serializers.ModelSerializer): + dn_code = serializers.CharField(read_only=True, required=False) + bin_name = serializers.CharField(read_only=True, required=False) + goods_code = serializers.CharField(read_only=True, required=False) + pick_qty = serializers.IntegerField(read_only=True, required=False) + picked_qty = serializers.IntegerField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = PickingListModel + exclude = ['openid', ] + read_only_fields = ['id', ] + +class FileListRenderSerializer(serializers.ModelSerializer): + dn_code = serializers.CharField(read_only=False, required=False) + dn_status = serializers.IntegerField(read_only=False, required=False) + total_weight = serializers.FloatField(read_only=False, required=False) + total_volume = serializers.FloatField(read_only=False, required=False) + total_cost = serializers.FloatField(read_only=False, required=False) + customer = serializers.CharField(read_only=False, required=False) + creater = serializers.CharField(read_only=False, required=False) + back_order_label = serializers.BooleanField(read_only=False, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + + class Meta: + model = DnListModel + ref_name = 'DNFileListRenderSerializer' + exclude = ['openid', 'is_delete', ] + +class FileDetailRenderSerializer(serializers.ModelSerializer): + dn_code = serializers.CharField(read_only=False, required=False) + dn_status = serializers.IntegerField(read_only=False, required=False) + customer = serializers.CharField(read_only=False, required=False) + goods_code = serializers.CharField(read_only=False, required=False) + goods_qty = serializers.IntegerField(read_only=False, required=False) + pick_qty = serializers.IntegerField(read_only=False, required=False) + picked_qty = serializers.IntegerField(read_only=False, required=False) + intransit_qty = serializers.IntegerField(read_only=False, required=False) + delivery_actual_qty = serializers.IntegerField(read_only=False, required=False) + delivery_shortage_qty = serializers.IntegerField(read_only=False, required=False) + delivery_more_qty = serializers.IntegerField(read_only=False, required=False) + delivery_damage_qty = serializers.IntegerField(read_only=False, required=False) + goods_weight = serializers.FloatField(read_only=False, required=False) + goods_volume = serializers.FloatField(read_only=False, required=False) + goods_cost = serializers.FloatField(read_only=False, required=False) + creater = serializers.CharField(read_only=False, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + back_order_label = serializers.BooleanField(read_only=False, required=False) + + class Meta: + model = DnDetailModel + ref_name = 'DNFileDetailRenderSerializer' + exclude = ['openid', 'is_delete', ] diff --git a/dn/tests.py b/dn/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/dn/urls.py b/dn/urls.py new file mode 100644 index 00000000..91c83cd1 --- /dev/null +++ b/dn/urls.py @@ -0,0 +1,44 @@ +from django.urls import path, re_path +from . import views + +urlpatterns = [ +path(r'list/', views.DnListViewSet.as_view({"get": "list", "post": "create"}), name="dnlist"), +re_path(r'^list/(?P\d+)/$', views.DnListViewSet.as_view({ + 'get': 'retrieve', + 'put': 'update', + 'patch': 'partial_update', + 'delete': 'destroy' +}), name="dnlist_1"), +path(r'detail/', views.DnDetailViewSet.as_view({"get": "list", "post": "create", 'put': 'update'}), name="dndetail"), +re_path(r'^detail/(?P\d+)/$', views.DnDetailViewSet.as_view({ + 'get': 'retrieve', + 'delete': 'destroy' +}), name="dndetail_1"), +re_path(r'^viewprint/(?P\d+)/$', views.DnViewPrintViewSet.as_view({ + 'get': 'retrieve', +}), name="dnviewprint_1"), +re_path(r'^neworder/(?P\d+)/$', views.DnNewOrderViewSet.as_view({ + 'post': 'create', +}), name="preloadid_1"), +path(r'orderrelease/', views.DnOrderReleaseViewSet.as_view({"post": "create"}), name="orderrelease"), +re_path(r'^orderrelease/(?P\d+)/$', views.DnOrderReleaseViewSet.as_view({ + 'put': 'update', +}), name="orderrelease_1"), +path(r'pickinglistfilter/', views.DnPickingListFilterViewSet.as_view({"get": "list"}), name="pickinglistfilter"), +re_path(r'^pickinglist/(?P\d+)/$', views.DnPickingListViewSet.as_view({ + 'get': 'retrieve', +}), name="pickinglist_1"), +path(r'picked/', views.DnPickedViewSet.as_view({'put': 'update'}), name="picked"), +re_path(r'^picked/(?P\d+)/$', views.DnPickedViewSet.as_view({ + 'post': 'create', +}), name="picked_1"), +re_path(r'^dispatch/(?P\d+)/$', views.DnDispatchViewSet.as_view({ + 'post': 'create', +}), name="dispatch_1"), +re_path(r'^pod/(?P\d+)/$', views.DnPODViewSet.as_view({ + 'post': 'create', +}), name="pod_1"), +path(r'filelist/', views.FileListDownloadView.as_view({"get": "list"}), name="dnfilelistdownload"), +path(r'filedetail/', views.FileDetailDownloadView.as_view({"get": "list"}), name="dnfiledetaildownload"), + +] diff --git a/dn/views.py.REMOVED.git-id b/dn/views.py.REMOVED.git-id new file mode 100644 index 00000000..7ada6cc5 --- /dev/null +++ b/dn/views.py.REMOVED.git-id @@ -0,0 +1 @@ +796816403bc9728ab23485a773cee729b81df0b9 \ No newline at end of file diff --git a/driver/__init__.py b/driver/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/driver/admin.py b/driver/admin.py new file mode 100644 index 00000000..c9f86026 --- /dev/null +++ b/driver/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from . models import ListModel + +admin.site.register(ListModel) diff --git a/driver/apps.py b/driver/apps.py new file mode 100644 index 00000000..5bbf2686 --- /dev/null +++ b/driver/apps.py @@ -0,0 +1,4 @@ +from django.apps import AppConfig + +class DriverConfig(AppConfig): + name = 'driver' diff --git a/driver/files.py b/driver/files.py new file mode 100644 index 00000000..436935b8 --- /dev/null +++ b/driver/files.py @@ -0,0 +1,38 @@ +from rest_framework_csv.renderers import CSVStreamingRenderer + +def file_headers(): + return [ + 'driver_name', + 'license_plate', + 'contact', + 'creater', + 'create_time', + 'update_time' + ] +def cn_data_header(): + return dict([ + ('driver_name', u'司机姓名'), + ('license_plate', u'车牌号'), + ('contact', u'联系方式'), + ('creater', u'创建人'), + ('create_time', u'创建时间'), + ('update_time', u'更新时间') + ]) + +def en_data_header(): + return dict([ + ('driver_name', u'Driver Name'), + ('license_plate', u'License Plate'), + ('contact', u'Contact'), + ('creater', u'Creater'), + ('create_time', u'Create Time'), + ('update_time', u'Update Time') + ]) + +class FileRenderCN(CSVStreamingRenderer): + header = file_headers() + labels = cn_data_header() + +class FileRenderEN(CSVStreamingRenderer): + header = file_headers() + labels = en_data_header() diff --git a/driver/filter.py b/driver/filter.py new file mode 100644 index 00000000..0bcf7e3e --- /dev/null +++ b/driver/filter.py @@ -0,0 +1,29 @@ +from django_filters import FilterSet +from .models import ListModel, DispatchListModel + +class Filter(FilterSet): + class Meta: + model = ListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "driver_name": ['exact', 'iexact', 'contains', 'icontains'], + "license_plate": ['exact', 'iexact', 'contains', 'icontains'], + "contact": ['exact', 'iexact', 'contains', 'icontains'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "is_delete": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } + +class DispatchFilter(FilterSet): + class Meta: + model = DispatchListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "driver_name": ['exact', 'iexact', 'contains', 'icontains'], + "dn_code": ['exact', 'iexact', 'contains', 'icontains'], + "contact": ['exact', 'iexact', 'contains', 'icontains'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } diff --git a/driver/migrations/__init__.py b/driver/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/driver/models.py b/driver/models.py new file mode 100644 index 00000000..1ef6fb92 --- /dev/null +++ b/driver/models.py @@ -0,0 +1,38 @@ +from django.db import models + +class ListModel(models.Model): + driver_name = models.CharField(max_length=255, verbose_name="Driver Name") + license_plate = models.CharField(max_length=255, verbose_name="License Plate") + contact = models.CharField(max_length=255, verbose_name="Contact Number") + creater = models.CharField(max_length=255, verbose_name="Who Created") + openid = models.CharField(max_length=255, verbose_name="Openid") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'driver' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['driver_name'] + + def __str__(self): + return self.pk + +class DispatchListModel(models.Model): + driver_name = models.CharField(max_length=255, verbose_name="Driver Name") + dn_code = models.CharField(max_length=255, verbose_name="DN Code") + contact = models.BigIntegerField(default=0, verbose_name="Contact Number") + creater = models.CharField(max_length=255, verbose_name="Who Created") + openid = models.CharField(max_length=255, verbose_name="Openid") + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'dispatchlist' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['-create_time'] + + def __str__(self): + return self.pk diff --git a/driver/serializers.py b/driver/serializers.py new file mode 100644 index 00000000..453ebd94 --- /dev/null +++ b/driver/serializers.py @@ -0,0 +1,71 @@ +from rest_framework import serializers +from .models import ListModel, DispatchListModel +from utils import datasolve + +class DriverGetSerializer(serializers.ModelSerializer): + driver_name = serializers.CharField(read_only=True, required=False) + license_plate = serializers.CharField(read_only=True, required=False) + contact = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', ] + +class DriverPostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + driver_name = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + contact = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + license_plate = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class DriverUpdateSerializer(serializers.ModelSerializer): + driver_name = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + license_plate = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + contact = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class DriverPartialUpdateSerializer(serializers.ModelSerializer): + driver_name = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + license_plate = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + contact = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class DispatchListGetSerializer(serializers.ModelSerializer): + driver_name = serializers.CharField(read_only=True, required=False) + dn_code = serializers.CharField(read_only=True, required=False) + contact = serializers.CharField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = DispatchListModel + exclude = ['openid', ] + read_only_fields = ['id', ] + +class FileRenderSerializer(serializers.ModelSerializer): + driver_name = serializers.CharField(read_only=False, required=False) + license_palate = serializers.IntegerField(read_only=False, required=False) + contact = serializers.CharField(read_only=False, required=False) + creater = serializers.CharField(read_only=False, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + + class Meta: + model = ListModel + ref_name = 'DriverFileRenderSerializer' + exclude = ['openid', 'is_delete', ] + diff --git a/driver/tests.py b/driver/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/driver/urls.py b/driver/urls.py new file mode 100644 index 00000000..15a86174 --- /dev/null +++ b/driver/urls.py @@ -0,0 +1,17 @@ +from django.urls import path, re_path +from . import views + +urlpatterns = [ +path(r'', views.APIViewSet.as_view({"get": "list", "post": "create"}), name="driver"), +path(r'file/', views.FileDownloadView.as_view({"get": "list"}), name="driverfiledownload"), +re_path(r'^(?P\d+)/$', views.APIViewSet.as_view({ + 'get': 'retrieve', + 'put': 'update', + 'patch': 'partial_update', + 'delete': 'destroy' +}), name="driver_1"), +path(r'dispatchlist/', views.DispatchListViewSet.as_view({"get": "list"}), name="dispatchlist"), +re_path(r'^dispatchlist/(?P\d+)/$', views.DispatchListViewSet.as_view({ + 'get': 'retrieve', +}), name="dispatchlist_1") +] diff --git a/driver/views.py b/driver/views.py new file mode 100644 index 00000000..511f8925 --- /dev/null +++ b/driver/views.py @@ -0,0 +1,204 @@ +from rest_framework import viewsets +from .models import ListModel, DispatchListModel +from . import serializers +from utils.page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from .filter import Filter, DispatchFilter +from rest_framework.exceptions import APIException +from .serializers import FileRenderSerializer +from django.http import StreamingHttpResponse +from .files import FileRenderCN, FileRenderEN +from rest_framework.settings import api_settings + +class APIViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + list: + Response a data list(all) + + create: + Create a data line(post) + + delete: + Delete a data line(delete) + + partial_update: + Partial_update a data(patch:partial_update) + + update: + Update a data(put:update) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve', 'destroy']: + return serializers.DriverGetSerializer + elif self.action in ['create']: + return serializers.DriverPostSerializer + elif self.action in ['update']: + return serializers.DriverUpdateSerializer + elif self.action in ['partial_update']: + return serializers.DriverPartialUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, *args, **kwargs): + data = self.request.data + data['openid'] = self.request.auth.openid + if ListModel.objects.filter(openid=self.request.auth.openid, driver_name=data['driver_name'], is_delete=False).exists(): + raise APIException({"detail": "Data Exists"}) + else: + serializer = self.get_serializer(data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot Update Data Which Not Yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def partial_update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot Partial Update Data Which Not Yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data, partial=True) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def destroy(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot Delete Data Which Not Yours"}) + else: + qs.is_delete = True + qs.save() + serializer = self.get_serializer(qs, many=False) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + +class DispatchListViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + list: + Response a data list(all) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = DispatchFilter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return DispatchListModel.objects.filter(openid=self.request.auth.openid) + else: + return DispatchListModel.objects.filter(openid=self.request.auth.openid, id=id) + else: + return DispatchListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve']: + return serializers.DispatchListGetSerializer + else: + return self.http_method_not_allowed(request=self.request) + +class FileDownloadView(viewsets.ModelViewSet): + renderer_classes = (FileRenderCN, ) + tuple(api_settings.DEFAULT_RENDERER_CLASSES) + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return serializers.FileRenderSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def get_lang(self, data): + lang = self.request.META.get('HTTP_LANGUAGE') + if lang: + if lang == 'zh-hans': + return FileRenderCN().render(data) + else: + return FileRenderEN().render(data) + else: + return FileRenderEN().render(data) + + def list(self, request, *args, **kwargs): + from datetime import datetime + dt = datetime.now() + data = ( + FileRenderSerializer(instance).data + for instance in self.filter_queryset(self.get_queryset()) + ) + renderer = self.get_lang(data) + response = StreamingHttpResponse( + renderer, + content_type="text/csv" + ) + response['Content-Disposition'] = "attachment; filename='driverlist_{}.csv'".format(str(dt.strftime('%Y%m%d%H%M%S%f'))) + return response diff --git a/goods/__init__.py b/goods/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/goods/admin.py b/goods/admin.py new file mode 100644 index 00000000..c9f86026 --- /dev/null +++ b/goods/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from . models import ListModel + +admin.site.register(ListModel) diff --git a/goods/apps.py b/goods/apps.py new file mode 100644 index 00000000..8999fc80 --- /dev/null +++ b/goods/apps.py @@ -0,0 +1,4 @@ +from django.apps import AppConfig + +class GoodsConfig(AppConfig): + name = 'goods' diff --git a/goods/files.py b/goods/files.py new file mode 100644 index 00000000..e0232365 --- /dev/null +++ b/goods/files.py @@ -0,0 +1,81 @@ +from rest_framework_csv.renderers import CSVStreamingRenderer + +def file_headers(): + return [ + 'goods_code', + 'goods_desc', + 'goods_supplier', + 'goods_weight', + 'goods_w', + 'goods_d', + 'goods_h', + 'unit_volume', + 'goods_unit', + 'goods_class', + 'goods_brand', + 'goods_color', + 'goods_shape', + 'goods_specs', + 'goods_origin', + 'goods_cost', + 'goods_price', + 'creater', + 'create_time', + 'update_time' + ] + +def cn_data_header(): + return dict([ + ('goods_code', u'商品编码'), + ('goods_desc', u'商品描述'), + ('goods_supplier', u'商品供应商'), + ('goods_weight', u'商品单位重量'), + ('goods_w', u'商品单位长度'), + ('goods_d', u'商品单位宽度'), + ('goods_h', u'商品单位高度'), + ('unit_volume', u'最小单位体积'), + ('goods_unit', u'商品单位'), + ('goods_class', u'商品类别'), + ('goods_brand', u'商品品牌'), + ('goods_color', u'商品颜色'), + ('goods_shape', u'商品形状'), + ('goods_specs', u'商品规格'), + ('goods_origin', u'商品产地'), + ('goods_cost', u'商品成本'), + ('goods_price', u'商品价格'), + ('creater', u'创建人'), + ('create_time', u'创建时间'), + ('update_time', u'更新时间') + ]) + +def en_data_header(): + return dict([ + ('goods_code', u'Goods Code'), + ('goods_desc', u'Goods Description'), + ('goods_supplier', u'Goods Supplier'), + ('goods_weight', u'Goods Weight'), + ('goods_w', u'Goods Wide'), + ('goods_d', u'Goods Depth'), + ('goods_h', u'Goods Height'), + ('unit_volume', u'Unit Volume'), + ('goods_unit', u'Goods Unit'), + ('goods_class', u'Goods Class'), + ('goods_brand', u'Goods Brand'), + ('goods_color', u'Goods Color'), + ('goods_shape', u'Goods Shape'), + ('goods_specs', u'Goods Specs'), + ('goods_origin', u'Goods Origin'), + ('goods_cost', u'Goods Cost'), + ('goods_price', u'Goods Price'), + ('creater', u'Creater'), + ('create_time', u'Create Time'), + ('update_time', u'Update Time') + ]) + +class FileRenderCN(CSVStreamingRenderer): + header = file_headers() + labels = cn_data_header() + +class FileRenderEN(CSVStreamingRenderer): + header = file_headers() + labels = en_data_header() diff --git a/goods/filter.py b/goods/filter.py new file mode 100644 index 00000000..bcd5f56f --- /dev/null +++ b/goods/filter.py @@ -0,0 +1,31 @@ +from django_filters import FilterSet +from .models import ListModel + +class Filter(FilterSet): + class Meta: + model = ListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "goods_code": ['exact', 'iexact', 'contains', 'icontains'], + "goods_desc": ['exact', 'iexact', 'contains', 'icontains'], + "goods_supplier": ['exact', 'iexact', 'contains', 'icontains'], + "goods_weight": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "goods_w": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "goods_d": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "goods_h": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "unit_volume": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "goods_unit": ['exact', 'iexact', 'contains', 'icontains'], + "goods_class": ['exact', 'iexact', 'contains', 'icontains'], + "goods_brand": ['exact', 'iexact', 'contains', 'icontains'], + "goods_color": ['exact', 'iexact', 'contains', 'icontains'], + "goods_shape": ['exact', 'iexact', 'contains', 'icontains'], + "goods_specs": ['exact', 'iexact', 'contains', 'icontains'], + "goods_origin": ['exact', 'iexact', 'contains', 'icontains'], + "safety_stock": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "goods_cost": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "goods_price": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "is_delete": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } diff --git a/goods/migrations/__init__.py b/goods/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/goods/models.py b/goods/models.py new file mode 100644 index 00000000..945adec9 --- /dev/null +++ b/goods/models.py @@ -0,0 +1,36 @@ +from django.db import models + +class ListModel(models.Model): + goods_code = models.CharField(max_length=255, verbose_name="Goods Name") + goods_desc = models.CharField(max_length=255, verbose_name="Goods Description") + goods_supplier = models.CharField(max_length=255, verbose_name="Goods Supplier") + goods_weight = models.FloatField(default=0, verbose_name="Goods Weight") + goods_w = models.FloatField(default=0, verbose_name="Goods Width") + goods_d = models.FloatField(default=0, verbose_name="Goods Depth") + goods_h = models.FloatField(default=0, verbose_name="Goods Height") + unit_volume = models.FloatField(default=0, verbose_name="Unit Volume") + goods_unit = models.CharField(max_length=255, verbose_name="Goods Unit") + goods_class = models.CharField(max_length=255, verbose_name="Goods Class") + goods_brand = models.CharField(max_length=255, verbose_name="Goods Brand") + goods_color = models.CharField(max_length=255, verbose_name="Goods Color") + goods_shape = models.CharField(max_length=255, verbose_name="Goods Shape") + goods_specs = models.CharField(max_length=255, verbose_name="Goods Specs") + goods_origin = models.CharField(max_length=255, verbose_name="Goods Origin") + safety_stock = models.BigIntegerField(default=0, verbose_name="Goods Safety Stock") + goods_cost = models.FloatField(default=0, verbose_name="Goods Cost") + goods_price = models.FloatField(default=0, verbose_name="Goods Price") + creater = models.CharField(max_length=255, verbose_name="Who created") + bar_code = models.CharField(max_length=255, verbose_name="Bar Code") + openid = models.CharField(max_length=255, verbose_name="Openid") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'goods' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['-id'] + + def __str__(self): + return self.pk diff --git a/goods/page.py b/goods/page.py new file mode 100644 index 00000000..d14b9bb4 --- /dev/null +++ b/goods/page.py @@ -0,0 +1,67 @@ +from collections import OrderedDict +from rest_framework.exceptions import APIException +from rest_framework.pagination import PageNumberPagination +from rest_framework.response import Response +from rest_framework.utils.urls import replace_query_param, remove_query_param +from goodsunit.models import ListModel as goods_unit +from goodsclass.models import ListModel as goods_class +from goodsbrand.models import ListModel as goods_brand +from goodscolor.models import ListModel as goods_color +from goodsshape.models import ListModel as goods_shape +from goodsspecs.models import ListModel as goods_specs +from goodsorigin.models import ListModel as goods_origin +from supplier.models import ListModel as supplier + +class MyPageNumberPagination(PageNumberPagination): + page_size = 30 + page_size_query_param = "max_page" + max_page_size = 1000 + page_query_param = 'page' + + def get_paginated_response(self, data): + goods_unit_list_data = goods_unit.objects.filter(openid=self.request.auth.openid, is_delete=False) + goods_unit_list = [] + for i in range(len(goods_unit_list_data)): + goods_unit_list.append(goods_unit_list_data[i].goods_unit) + goods_class_list_data = goods_class.objects.filter(openid=self.request.auth.openid, is_delete=False) + goods_class_list = [] + for i in range(len(goods_class_list_data)): + goods_class_list.append(goods_class_list_data[i].goods_class) + goods_brand_list_data = goods_brand.objects.filter(openid=self.request.auth.openid, is_delete=False) + goods_brand_list = [] + for i in range(len(goods_brand_list_data)): + goods_brand_list.append(goods_brand_list_data[i].goods_brand) + goods_color_list_data = goods_color.objects.filter(openid=self.request.auth.openid, is_delete=False) + goods_color_list = [] + for i in range(len(goods_color_list_data)): + goods_color_list.append(goods_color_list_data[i].goods_color) + goods_shape_list_data = goods_shape.objects.filter(openid=self.request.auth.openid, is_delete=False) + goods_shape_list = [] + for i in range(len(goods_shape_list_data)): + goods_shape_list.append(goods_shape_list_data[i].goods_shape) + goods_specs_list_data = goods_specs.objects.filter(openid=self.request.auth.openid, is_delete=False) + goods_specs_list = [] + for i in range(len(goods_specs_list_data)): + goods_specs_list.append(goods_specs_list_data[i].goods_specs) + goods_origin_list_data = goods_origin.objects.filter(openid=self.request.auth.openid, is_delete=False) + goods_origin_list = [] + for i in range(len(goods_origin_list_data)): + goods_origin_list.append(goods_origin_list_data[i].goods_origin) + supplier_list_data = supplier.objects.filter(openid=self.request.auth.openid, is_delete=False) + supplier_list = [] + for i in range(len(supplier_list_data)): + supplier_list.append(supplier_list_data[i].supplier_name) + return Response(OrderedDict([ + ('goods_unit_list', goods_unit_list), + ('goods_class_list', goods_class_list), + ('goods_brand_list', goods_brand_list), + ('goods_color_list', goods_color_list), + ('goods_shape_list', goods_shape_list), + ('goods_specs_list', goods_specs_list), + ('goods_origin_list', goods_origin_list), + ('supplier_list', supplier_list), + ('count', self.page.paginator.count), + ('next', self.get_next_link()), + ('previous', self.get_previous_link()), + ('results', data) + ])) diff --git a/goods/serializers.py b/goods/serializers.py new file mode 100644 index 00000000..111c31e8 --- /dev/null +++ b/goods/serializers.py @@ -0,0 +1,147 @@ +from rest_framework import serializers +from .models import ListModel +from utils import datasolve +from rest_framework.exceptions import ValidationError + +class GoodsGetSerializer(serializers.ModelSerializer): + goods_code = serializers.CharField(read_only=True, required=False) + goods_desc = serializers.CharField(read_only=True, required=False) + goods_supplier = serializers.CharField(read_only=True, required=False) + goods_weight = serializers.FloatField(read_only=True, required=False) + goods_w = serializers.FloatField(read_only=True, required=False) + goods_d = serializers.FloatField(read_only=True, required=False) + goods_h = serializers.FloatField(read_only=True, required=False) + unit_volume = serializers.FloatField(read_only=True, required=False) + goods_unit = serializers.CharField(read_only=True, required=False) + goods_class = serializers.CharField(read_only=True, required=False) + goods_brand = serializers.CharField(read_only=True, required=False) + goods_color = serializers.CharField(read_only=True, required=False) + goods_shape = serializers.CharField(read_only=True, required=False) + goods_specs = serializers.CharField(read_only=True, required=False) + goods_origin = serializers.CharField(read_only=True, required=False) + goods_cost = serializers.FloatField(read_only=True, required=False) + goods_price = serializers.FloatField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + bar_code = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id'] + + +class GoodsPostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + goods_code = serializers.CharField(read_only=False, required=True, max_length=15, min_length=1, + validators=[datasolve.data_validate]) + goods_desc = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_supplier = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_weight = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_w = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_d = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_h = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + unit_volume = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_unit = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_class = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_brand = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_color = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_shape = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_specs = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_origin = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_cost = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_price = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + bar_code = serializers.CharField(read_only=False, required=True) + + class Meta: + model = ListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + + + + + +class GoodsUpdateSerializer(serializers.ModelSerializer): + goods_code = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate], + max_length=15, min_length=1) + goods_desc = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_supplier = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_weight = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_w = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_d = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_h = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + unit_volume = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_unit = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_class = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_brand = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_color = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_shape = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_specs = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_origin = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_cost = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + goods_price = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + bar_code = serializers.CharField(read_only=False, required=False) + + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class GoodsPartialUpdateSerializer(serializers.ModelSerializer): + goods_code = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate], + max_length=15, min_length=1) + goods_desc = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + goods_supplier = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + goods_weight = serializers.FloatField(read_only=False, required=False, validators=[datasolve.data_validate]) + goods_w = serializers.FloatField(read_only=False, required=False, validators=[datasolve.data_validate]) + goods_d = serializers.FloatField(read_only=False, required=False, validators=[datasolve.data_validate]) + goods_h = serializers.FloatField(read_only=False, required=False, validators=[datasolve.data_validate]) + unit_volume = serializers.FloatField(read_only=False, required=False, validators=[datasolve.data_validate]) + goods_unit = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + goods_class = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + goods_brand = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + goods_color = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + goods_shape = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + goods_specs = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + goods_origin = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + goods_cost = serializers.FloatField(read_only=False, required=False, validators=[datasolve.data_validate]) + goods_price = serializers.FloatField(read_only=False, required=False, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + bar_code = serializers.CharField(read_only=False, required=False) + + + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class FileRenderSerializer(serializers.ModelSerializer): + goods_code = serializers.CharField(read_only=False, required=False) + goods_desc = serializers.CharField(read_only=False, required=False) + goods_supplier = serializers.CharField(read_only=False, required=False) + goods_weight = serializers.FloatField(read_only=False, required=False) + goods_w = serializers.FloatField(read_only=False, required=False) + goods_d = serializers.FloatField(read_only=False, required=False) + goods_h = serializers.FloatField(read_only=False, required=False) + unit_volume = serializers.FloatField(read_only=False, required=False) + goods_unit = serializers.CharField(read_only=False, required=False) + goods_class = serializers.CharField(read_only=False, required=False) + goods_brand = serializers.CharField(read_only=False, required=False) + goods_color = serializers.CharField(read_only=False, required=False) + goods_shape = serializers.CharField(read_only=False, required=False) + goods_specs = serializers.CharField(read_only=False, required=False) + goods_origin = serializers.CharField(read_only=False, required=False) + goods_cost = serializers.FloatField(read_only=False, required=False) + goods_price = serializers.FloatField(read_only=False, required=False) + creater = serializers.CharField(read_only=False, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + + class Meta: + model = ListModel + ref_name = 'GOODSFileRenderSerializer' + exclude = ['openid', 'is_delete', ] diff --git a/goods/tests.py b/goods/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/goods/urls.py b/goods/urls.py new file mode 100644 index 00000000..ca8e21dc --- /dev/null +++ b/goods/urls.py @@ -0,0 +1,14 @@ +from django.urls import path, re_path +from . import views + +urlpatterns = [ +path(r'', views.APIViewSet.as_view({"get": "list", "post": "create"}), name="goods"), +path(r'file/', views.FileDownloadView.as_view({"get": "list"}), name="goodslistfiledownload"), +re_path(r'^(?P\d+)/', views.APIViewSet.as_view({ + 'get': 'retrieve', + 'put': 'update', + 'patch': 'partial_update', + 'delete': 'destroy' +}), name="goods_1"), + path(r'goodstag//',views.SannerGoodsTagView.as_view({"get":"retrieve"})) +] diff --git a/goods/views.py b/goods/views.py new file mode 100644 index 00000000..87e44a96 --- /dev/null +++ b/goods/views.py @@ -0,0 +1,361 @@ +from rest_framework import viewsets +from .models import ListModel +from . import serializers +from .page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from .filter import Filter +from rest_framework.exceptions import APIException +from goodsunit.models import ListModel as goods_unit +from goodsclass.models import ListModel as goods_class +from goodsbrand.models import ListModel as goods_brand +from goodscolor.models import ListModel as goods_color +from goodsshape.models import ListModel as goods_shape +from goodsspecs.models import ListModel as goods_specs +from goodsorigin.models import ListModel as goods_origin +from supplier.models import ListModel as supplier +from scanner.models import ListModel as scanner +from utils.md5 import Md5 +from .serializers import FileRenderSerializer +from django.http import StreamingHttpResponse +from .files import FileRenderCN, FileRenderEN +from rest_framework.settings import api_settings +from asn.models import AsnDetailModel + +class SannerGoodsTagView(viewsets.ModelViewSet): + + """ + retrieve: + Response a data retrieve(get) + + """ + + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + lookup_field = 'bar_code' + def get_project(self): + try: + bar_code = self.kwargs['bar_code'] + return bar_code + except: + return None + + def get_queryset(self): + bar_code = self.get_project() + if self.request.user: + if bar_code is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, bar_code=bar_code, is_delete=False) + else: + return ListModel.objects.filter().none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve', 'destroy']: + return serializers.GoodsGetSerializer + elif self.action in ['create']: + return serializers.GoodsPostSerializer + elif self.action in ['update']: + return serializers.GoodsUpdateSerializer + elif self.action in ['partial_update']: + return serializers.GoodsPartialUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def retrieve(self, request, *args, **kwargs): + data=self.request.GET.get('asn_code') + instance = self.get_object() + serializer = self.get_serializer(instance) + good_detail=AsnDetailModel.objects.filter(asn_code=data,goods_code=serializer.data['goods_code']).first() + if good_detail is None: + raise APIException({"detail":"The product label does not exist"}) + else: + context = {} + context['goods_code'] = good_detail.goods_code + context['goods_actual_qty'] = good_detail.goods_actual_qty + return Response(context, status=200) + +class APIViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + list: + Response a data list(all) + + create: + Create a data line(post) + + delete: + Delete a data line(delete) + + partial_update: + Partial_update a data(patch:partial_update) + + update: + Update a data(put:update) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.filter().none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve', 'destroy']: + return serializers.GoodsGetSerializer + elif self.action in ['create']: + return serializers.GoodsPostSerializer + elif self.action in ['update']: + return serializers.GoodsUpdateSerializer + elif self.action in ['partial_update']: + return serializers.GoodsPartialUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, *args, **kwargs): + data = self.request.data + data['openid'] = self.request.auth.openid + if len(data['goods_code']) > 15: + raise APIException({"detail": "Goods Code No more than 15 characters"}) + data['unit_volume'] = round( + (float(data['goods_w']) * float(data['goods_d']) * float(data['goods_h'])) / 1000000000, 4) + if ListModel.objects.filter(openid=data['openid'], goods_code=data['goods_code'], is_delete=False).exists(): + raise APIException({"detail": "Data Exists"}) + else: + if supplier.objects.filter(openid=data['openid'], supplier_name=data['goods_supplier'], + is_delete=False).exists(): + if goods_unit.objects.filter(openid=data['openid'], goods_unit=data['goods_unit'], + is_delete=False).exists(): + if goods_class.objects.filter(openid=data['openid'], goods_class=data['goods_class'], + is_delete=False).exists(): + if goods_brand.objects.filter(openid=data['openid'], goods_brand=data['goods_brand'], + is_delete=False).exists(): + if goods_color.objects.filter(openid=data['openid'], goods_color=data['goods_color'], + is_delete=False).exists(): + if goods_shape.objects.filter(openid=data['openid'], goods_shape=data['goods_shape'], + is_delete=False).exists(): + if goods_specs.objects.filter(openid=data['openid'], + goods_specs=data['goods_specs'], + is_delete=False).exists(): + if goods_origin.objects.filter(openid=data['openid'], + goods_origin=data['goods_origin'], + is_delete=False).exists(): + data['bar_code'] = Md5.md5(data['goods_code']) + serializer = self.get_serializer(data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + scanner.objects.create(openid=self.request.auth.openid, mode="GOODS", + code=data['goods_code'], + bar_code=data['bar_code']) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + else: + raise APIException( + {"detail": "Goods Origin does not exists or it has been changed"}) + else: + raise APIException( + {"detail": "Goods Specs does not exists or it has been changed"}) + else: + raise APIException({"detail": "Goods Shape does not exists or it has been changed"}) + else: + raise APIException({"detail": "Goods Color does not exists or it has been changed"}) + else: + raise APIException({"detail": "Goods Brand does not exists or it has been changed"}) + else: + raise APIException({"detail": "Goods Class does not exists or it has been changed"}) + else: + raise APIException({"detail": "Goods Unit does not exists or it has been changed"}) + else: + raise APIException({"detail": "Supplier does not exists or it has been changed"}) + + def update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot update data which not yours"}) + else: + data = self.request.data + if len(data['goods_code']) > 15: + raise APIException({"detail": "Goods Code No more than 15 characters"}) + data['unit_volume'] = round( + (float(data['goods_w']) * float(data['goods_d']) * float(data['goods_h'])) / 1000000000, 4) + if supplier.objects.filter(openid=self.request.auth.openid, supplier_name=data['goods_supplier'], + is_delete=False).exists(): + if goods_unit.objects.filter(openid=self.request.auth.openid, goods_unit=data['goods_unit'], + is_delete=False).exists(): + if goods_class.objects.filter(openid=self.request.auth.openid, goods_class=data['goods_class'], + is_delete=False).exists(): + if goods_brand.objects.filter(openid=self.request.auth.openid, goods_brand=data['goods_brand'], + is_delete=False).exists(): + if goods_color.objects.filter(openid=self.request.auth.openid, goods_color=data['goods_color'], + is_delete=False).exists(): + if goods_shape.objects.filter(openid=self.request.auth.openid, goods_shape=data['goods_shape'], + is_delete=False).exists(): + if goods_specs.objects.filter(openid=self.request.auth.openid, + goods_specs=data['goods_specs'], + is_delete=False).exists(): + if goods_origin.objects.filter(openid=self.request.auth.openid, + goods_origin=data['goods_origin'], + is_delete=False).exists(): + scanner.objects.filter(openid=self.request.auth.openid, + mode='GOODS', + code=qs.goods_code).update(code=str(data['goods_code'])) + serializer = self.get_serializer(qs, data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + else: + raise APIException( + {"detail": "Goods Origin does not exists or it has been changed"}) + else: + raise APIException( + {"detail": "Goods Specs does not exists or it has been changed"}) + else: + raise APIException({"detail": "Goods Shape does not exists or it has been changed"}) + else: + raise APIException({"detail": "Goods Color does not exists or it has been changed"}) + else: + raise APIException({"detail": "Goods Brand does not exists or it has been changed"}) + else: + raise APIException({"detail": "Goods Class does not exists or it has been changed"}) + else: + raise APIException({"detail": "Goods Unit does not exists or it has been changed"}) + else: + raise APIException({"detail": "Supplier does not exists or it has been changed"}) + + def partial_update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot partial_update data which not yours"}) + else: + data = self.request.data + if supplier.objects.filter(openid=self.request.auth.openid, supplier_name=data['goods_supplier'], + is_delete=False).exists(): + if goods_unit.objects.filter(openid=self.request.auth.openid, goods_unit=data['goods_unit'], + is_delete=False).exists(): + if goods_class.objects.filter(openid=self.request.auth.openid, goods_class=data['goods_class'], + is_delete=False).exists(): + if goods_brand.objects.filter(openid=self.request.auth.openid, goods_brand=data['goods_brand'], + is_delete=False).exists(): + if goods_color.objects.filter(openid=self.request.auth.openid, goods_color=data['goods_color'], + is_delete=False).exists(): + if goods_shape.objects.filter(openid=self.request.auth.openid, goods_shape=data['goods_shape'], + is_delete=False).exists(): + if goods_specs.objects.filter(openid=self.request.auth.openid, + goods_specs=data['goods_specs'], + is_delete=False).exists(): + if goods_origin.objects.filter(openid=self.request.auth.openid, + goods_origin=data['goods_origin'], + is_delete=False).exists(): + scanner.objects.filter(openid=self.request.auth.openid, + mode='GOODS', + code=qs.goods_code).update( + code=str(data['goods_code'])) + serializer = self.get_serializer(qs, data=data, partial=True) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + else: + raise APIException( + {"detail": "Goods Origin does not exists or it has been changed"}) + else: + raise APIException( + {"detail": "Goods Specs does not exists or it has been changed"}) + else: + raise APIException({"detail": "Goods Shape does not exists or it has been changed"}) + else: + raise APIException({"detail": "Goods Color does not exists or it has been changed"}) + else: + raise APIException({"detail": "Goods Brand does not exists or it has been changed"}) + else: + raise APIException({"detail": "Goods Class does not exists or it has been changed"}) + else: + raise APIException({"detail": "Goods Unit does not exists or it has been changed"}) + else: + raise APIException({"detail": "Supplier does not exists or it has been changed"}) + + def destroy(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot delete data which not yours"}) + else: + qs.is_delete = True + qs.save() + serializer = self.get_serializer(qs, many=False) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + +class FileDownloadView(viewsets.ModelViewSet): + renderer_classes = (FileRenderCN, ) + tuple(api_settings.DEFAULT_RENDERER_CLASSES) + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return serializers.FileRenderSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def get_lang(self, data): + lang = self.request.META.get('HTTP_LANGUAGE') + if lang: + if lang == 'zh-hans': + return FileRenderCN().render(data) + else: + return FileRenderEN().render(data) + else: + return FileRenderEN().render(data) + + def list(self, request, *args, **kwargs): + from datetime import datetime + dt = datetime.now() + data = ( + FileRenderSerializer(instance).data + for instance in self.filter_queryset(self.get_queryset()) + ) + renderer = self.get_lang(data) + response = StreamingHttpResponse( + renderer, + content_type="text/csv" + ) + response['Content-Disposition'] = "attachment; filename='goodslist_{}.csv'".format(str(dt.strftime('%Y%m%d%H%M%S%f'))) + return response diff --git a/goodsbrand/__init__.py b/goodsbrand/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/goodsbrand/admin.py b/goodsbrand/admin.py new file mode 100644 index 00000000..c9f86026 --- /dev/null +++ b/goodsbrand/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from . models import ListModel + +admin.site.register(ListModel) diff --git a/goodsbrand/apps.py b/goodsbrand/apps.py new file mode 100644 index 00000000..34b972e7 --- /dev/null +++ b/goodsbrand/apps.py @@ -0,0 +1,4 @@ +from django.apps import AppConfig + +class GoodsbrandConfig(AppConfig): + name = 'goodsbrand' diff --git a/goodsbrand/filter.py b/goodsbrand/filter.py new file mode 100644 index 00000000..76efe0ce --- /dev/null +++ b/goodsbrand/filter.py @@ -0,0 +1,14 @@ +from django_filters import FilterSet +from .models import ListModel + +class Filter(FilterSet): + class Meta: + model = ListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "goods_brand": ['exact', 'iexact', 'contains', 'icontains'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "is_delete": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } diff --git a/goodsbrand/migrations/__init__.py b/goodsbrand/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/goodsbrand/models.py b/goodsbrand/models.py new file mode 100644 index 00000000..9788ef14 --- /dev/null +++ b/goodsbrand/models.py @@ -0,0 +1,18 @@ +from django.db import models + +class ListModel(models.Model): + goods_brand = models.CharField(max_length=32, verbose_name="Goods Brand") + creater = models.CharField(max_length=255, verbose_name="Who created") + openid = models.CharField(max_length=255, verbose_name="Openid") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'goodsbrand' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['goods_brand'] + + def __str__(self): + return self.pk diff --git a/goodsbrand/serializers.py b/goodsbrand/serializers.py new file mode 100644 index 00000000..47a069b0 --- /dev/null +++ b/goodsbrand/serializers.py @@ -0,0 +1,38 @@ +from rest_framework import serializers +from .models import ListModel +from utils import datasolve + +class GoodsbrandGetSerializer(serializers.ModelSerializer): + goods_brand = serializers.CharField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'openid', 'appid', 'create_time', 'update_time', ] + +class GoodsbrandPostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + goods_brand = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class GoodsbrandUpdateSerializer(serializers.ModelSerializer): + goods_brand = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class GoodsbrandPartialUpdateSerializer(serializers.ModelSerializer): + goods_brand = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] diff --git a/goodsbrand/tests.py b/goodsbrand/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/goodsbrand/urls.py b/goodsbrand/urls.py new file mode 100644 index 00000000..ab9a4130 --- /dev/null +++ b/goodsbrand/urls.py @@ -0,0 +1,12 @@ +from django.urls import path, re_path +from . import views + +urlpatterns = [ +path(r'', views.APIViewSet.as_view({"get": "list", "post": "create"}), name="goodsbrand"), +re_path(r'^(?P\d+)/$', views.APIViewSet.as_view({ + 'get': 'retrieve', + 'put': 'update', + 'patch': 'partial_update', + 'delete': 'destroy' +}), name="goodsbrand_1") +] diff --git a/goodsbrand/views.py b/goodsbrand/views.py new file mode 100644 index 00000000..9070c224 --- /dev/null +++ b/goodsbrand/views.py @@ -0,0 +1,110 @@ +from rest_framework import viewsets +from .models import ListModel +from . import serializers +from utils.page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from .filter import Filter +from rest_framework.exceptions import APIException + +class APIViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + list: + Response a data list(all) + + create: + Create a data line(post) + + delete: + Delete a data line(delete) + + partial_update: + Partial_update a data(patch:partial_update) + + update: + Update a data(put:update) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve', 'destroy']: + return serializers.GoodsbrandGetSerializer + elif self.action in ['create']: + return serializers.GoodsbrandPostSerializer + elif self.action in ['update']: + return serializers.GoodsbrandUpdateSerializer + elif self.action in ['partial_update']: + return serializers.GoodsbrandPartialUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, *args, **kwargs): + data = self.request.data + data['openid'] = self.request.auth.openid + if ListModel.objects.filter(openid=data['openid'], goods_brand=data['goods_brand'], is_delete=False).exists(): + raise APIException({"detail": "Data exists"}) + else: + serializer = self.get_serializer(data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def partial_update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot partial_update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data, partial=True) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def destroy(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot delete data which not yours"}) + else: + qs.is_delete = True + qs.save() + serializer = self.get_serializer(qs, many=False) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) diff --git a/goodsclass/__init__.py b/goodsclass/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/goodsclass/admin.py b/goodsclass/admin.py new file mode 100644 index 00000000..c9f86026 --- /dev/null +++ b/goodsclass/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from . models import ListModel + +admin.site.register(ListModel) diff --git a/goodsclass/apps.py b/goodsclass/apps.py new file mode 100644 index 00000000..fd26841f --- /dev/null +++ b/goodsclass/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class GoodsclassConfig(AppConfig): + name = 'goodsclass' diff --git a/goodsclass/filter.py b/goodsclass/filter.py new file mode 100644 index 00000000..26218c35 --- /dev/null +++ b/goodsclass/filter.py @@ -0,0 +1,14 @@ +from django_filters import FilterSet +from .models import ListModel + +class Filter(FilterSet): + class Meta: + model = ListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "goods_class": ['exact', 'iexact', 'contains', 'icontains'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "is_delete": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } diff --git a/goodsclass/migrations/__init__.py b/goodsclass/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/goodsclass/models.py b/goodsclass/models.py new file mode 100644 index 00000000..65e59910 --- /dev/null +++ b/goodsclass/models.py @@ -0,0 +1,18 @@ +from django.db import models + +class ListModel(models.Model): + goods_class = models.CharField(max_length=32, verbose_name="Goods Class") + creater = models.CharField(max_length=255, verbose_name="Who created") + openid = models.CharField(max_length=255, verbose_name="Openid") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'goodsclass' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['goods_class'] + + def __str__(self): + return self.pk diff --git a/goodsclass/serializers.py b/goodsclass/serializers.py new file mode 100644 index 00000000..cf8d272d --- /dev/null +++ b/goodsclass/serializers.py @@ -0,0 +1,38 @@ +from rest_framework import serializers +from .models import ListModel +from utils import datasolve + +class GoodsclassGetSerializer(serializers.ModelSerializer): + goods_class = serializers.CharField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', ] + +class GoodsclassPostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + goods_class = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class GoodsclassUpdateSerializer(serializers.ModelSerializer): + goods_class = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class GoodsclassPartialUpdateSerializer(serializers.ModelSerializer): + goods_class = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] diff --git a/goodsclass/tests.py b/goodsclass/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/goodsclass/urls.py b/goodsclass/urls.py new file mode 100644 index 00000000..87f4a840 --- /dev/null +++ b/goodsclass/urls.py @@ -0,0 +1,12 @@ +from django.urls import path, re_path +from . import views + +urlpatterns = [ +path(r'', views.APIViewSet.as_view({"get": "list", "post": "create"}), name="goodsclass"), +re_path(r'^(?P\d+)/$', views.APIViewSet.as_view({ + 'get': 'retrieve', + 'put': 'update', + 'patch': 'partial_update', + 'delete': 'destroy' +}), name="goodsclass_1") +] diff --git a/goodsclass/views.py b/goodsclass/views.py new file mode 100644 index 00000000..5f608954 --- /dev/null +++ b/goodsclass/views.py @@ -0,0 +1,110 @@ +from rest_framework import viewsets +from .models import ListModel +from . import serializers +from utils.page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from .filter import Filter +from rest_framework.exceptions import APIException + +class APIViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + list: + Response a data list(all) + + create: + Create a data line(post) + + delete: + Delete a data line(delete) + + partial_update: + Partial_update a data(patch:partial_update) + + update: + Update a data(put:update) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve', 'destroy']: + return serializers.GoodsclassGetSerializer + elif self.action in ['create']: + return serializers.GoodsclassPostSerializer + elif self.action in ['update']: + return serializers.GoodsclassUpdateSerializer + elif self.action in ['partial_update']: + return serializers.GoodsclassPartialUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, *args, **kwargs): + data = self.request.data + data['openid'] = self.request.auth.openid + if ListModel.objects.filter(openid=data['openid'], goods_class=data['goods_class'], is_delete=False).exists(): + raise APIException({"detail": "Data exists"}) + else: + serializer = self.get_serializer(data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def partial_update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot partial_update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data, partial=True) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def destroy(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot delete data which not yours"}) + else: + qs.is_delete = True + qs.save() + serializer = self.get_serializer(qs, many=False) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) diff --git a/goodscolor/__init__.py b/goodscolor/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/goodscolor/admin.py b/goodscolor/admin.py new file mode 100644 index 00000000..c9f86026 --- /dev/null +++ b/goodscolor/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from . models import ListModel + +admin.site.register(ListModel) diff --git a/goodscolor/apps.py b/goodscolor/apps.py new file mode 100644 index 00000000..8ca004de --- /dev/null +++ b/goodscolor/apps.py @@ -0,0 +1,4 @@ +from django.apps import AppConfig + +class GoodscolorConfig(AppConfig): + name = 'goodscolor' diff --git a/goodscolor/filter.py b/goodscolor/filter.py new file mode 100644 index 00000000..ad820b56 --- /dev/null +++ b/goodscolor/filter.py @@ -0,0 +1,14 @@ +from django_filters import FilterSet +from .models import ListModel + +class Filter(FilterSet): + class Meta: + model = ListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "goods_color": ['exact', 'iexact', 'contains', 'icontains'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "is_delete": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } diff --git a/goodscolor/migrations/__init__.py b/goodscolor/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/goodscolor/models.py b/goodscolor/models.py new file mode 100644 index 00000000..a60a2c21 --- /dev/null +++ b/goodscolor/models.py @@ -0,0 +1,18 @@ +from django.db import models + +class ListModel(models.Model): + goods_color = models.CharField(max_length=32, verbose_name="Goods Color") + creater = models.CharField(max_length=255, verbose_name="Who created") + openid = models.CharField(max_length=255, verbose_name="Openid") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'goodscolor' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['goods_color'] + + def __str__(self): + return self.pk diff --git a/goodscolor/serializers.py b/goodscolor/serializers.py new file mode 100644 index 00000000..3b39f0e3 --- /dev/null +++ b/goodscolor/serializers.py @@ -0,0 +1,40 @@ +from rest_framework import serializers +from .models import ListModel +from utils import datasolve + +class GoodscolorGetSerializer(serializers.ModelSerializer): + goods_color = serializers.CharField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'openid', 'appid', 'create_time', 'update_time', ] + +class GoodscolorPostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + goods_color = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + + +class GoodscolorUpdateSerializer(serializers.ModelSerializer): + goods_color = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + + +class GoodscolorPartialUpdateSerializer(serializers.ModelSerializer): + goods_color = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] diff --git a/goodscolor/tests.py b/goodscolor/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/goodscolor/urls.py b/goodscolor/urls.py new file mode 100644 index 00000000..1455312f --- /dev/null +++ b/goodscolor/urls.py @@ -0,0 +1,12 @@ +from django.urls import path, re_path +from . import views + +urlpatterns = [ +path(r'', views.APIViewSet.as_view({"get": "list", "post": "create"}), name="goodscolor"), +re_path(r'^(?P\d+)/$', views.APIViewSet.as_view({ + 'get': 'retrieve', + 'put': 'update', + 'patch': 'partial_update', + 'delete': 'destroy' +}), name="goodscolor_1") +] diff --git a/goodscolor/views.py b/goodscolor/views.py new file mode 100644 index 00000000..d39c2198 --- /dev/null +++ b/goodscolor/views.py @@ -0,0 +1,110 @@ +from rest_framework import viewsets +from .models import ListModel +from . import serializers +from utils.page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from .filter import Filter +from rest_framework.exceptions import APIException + +class APIViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + list: + Response a data list(all) + + create: + Create a data line(post) + + delete: + Delete a data line(delete) + + partial_update: + Partial_update a data(patch:partial_update) + + update: + Update a data(put:update) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve', 'destroy']: + return serializers.GoodscolorGetSerializer + elif self.action in ['create']: + return serializers.GoodscolorPostSerializer + elif self.action in ['update']: + return serializers.GoodscolorUpdateSerializer + elif self.action in ['partial_update']: + return serializers.GoodscolorPartialUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, *args, **kwargs): + data = self.request.data + data['openid'] = self.request.auth.openid + if ListModel.objects.filter(openid=data['openid'], goods_color=data['goods_color'], is_delete=False).exists(): + raise APIException({"detail": "Data exists"}) + else: + serializer = self.get_serializer(data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def partial_update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot partial_update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data, partial=True) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def destroy(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot delete data which not yours"}) + else: + qs.is_delete = True + qs.save() + serializer = self.get_serializer(qs, many=False) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) diff --git a/goodsorigin/__init__.py b/goodsorigin/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/goodsorigin/admin.py b/goodsorigin/admin.py new file mode 100644 index 00000000..c9f86026 --- /dev/null +++ b/goodsorigin/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from . models import ListModel + +admin.site.register(ListModel) diff --git a/goodsorigin/apps.py b/goodsorigin/apps.py new file mode 100644 index 00000000..e3ca8dee --- /dev/null +++ b/goodsorigin/apps.py @@ -0,0 +1,4 @@ +from django.apps import AppConfig + +class GoodsoriginConfig(AppConfig): + name = 'goodsorigin' diff --git a/goodsorigin/filter.py b/goodsorigin/filter.py new file mode 100644 index 00000000..72a6084e --- /dev/null +++ b/goodsorigin/filter.py @@ -0,0 +1,14 @@ +from django_filters import FilterSet +from .models import ListModel + +class Filter(FilterSet): + class Meta: + model = ListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "goods_origin": ['exact', 'iexact', 'contains', 'icontains'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "is_delete": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } diff --git a/goodsorigin/migrations/__init__.py b/goodsorigin/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/goodsorigin/models.py b/goodsorigin/models.py new file mode 100644 index 00000000..f6bcf33b --- /dev/null +++ b/goodsorigin/models.py @@ -0,0 +1,18 @@ +from django.db import models + +class ListModel(models.Model): + goods_origin = models.CharField(max_length=32, verbose_name="Goods Origin") + creater = models.CharField(max_length=255, verbose_name="Who created") + openid = models.CharField(max_length=255, verbose_name="Openid") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'goodsorigin' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['goods_origin'] + + def __str__(self): + return self.pk diff --git a/goodsorigin/serializers.py b/goodsorigin/serializers.py new file mode 100644 index 00000000..dbf6f04a --- /dev/null +++ b/goodsorigin/serializers.py @@ -0,0 +1,41 @@ +from rest_framework import serializers +from .models import ListModel +from utils import datasolve + +class GoodsoriginGetSerializer(serializers.ModelSerializer): + goods_origin = serializers.CharField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'openid', 'appid', 'create_time', 'update_time', ] + +class GoodsoriginPostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + goods_origin = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class GoodsoriginUpdateSerializer(serializers.ModelSerializer): + goods_origin = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + + + + +class GoodsoriginPartialUpdateSerializer(serializers.ModelSerializer): + goods_origin = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] diff --git a/goodsorigin/tests.py b/goodsorigin/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/goodsorigin/urls.py b/goodsorigin/urls.py new file mode 100644 index 00000000..60d17a3c --- /dev/null +++ b/goodsorigin/urls.py @@ -0,0 +1,12 @@ +from django.urls import path, re_path +from . import views + +urlpatterns = [ +path(r'', views.APIViewSet.as_view({"get": "list", "post": "create"}), name="goodsorigin"), +re_path(r'^(?P\d+)/$', views.APIViewSet.as_view({ + 'get': 'retrieve', + 'put': 'update', + 'patch': 'partial_update', + 'delete': 'destroy' +}), name="goodsorigin_1") +] diff --git a/goodsorigin/views.py b/goodsorigin/views.py new file mode 100644 index 00000000..ac6655b6 --- /dev/null +++ b/goodsorigin/views.py @@ -0,0 +1,112 @@ +from rest_framework import viewsets +from .models import ListModel +from . import serializers +from utils.page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from .filter import Filter +from rest_framework.exceptions import APIException + +class APIViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + list: + Response a data list(all) + + create: + Create a data line(post) + + delete: + Delete a data line(delete) + + partial_update: + Partial_update a data(patch:partial_update) + + update: + Update a data(put:update) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve', 'destroy']: + return serializers.GoodsoriginGetSerializer + elif self.action in ['create']: + return serializers.GoodsoriginPostSerializer + elif self.action in ['update']: + return serializers.GoodsoriginUpdateSerializer + elif self.action in ['partial_update']: + return serializers.GoodsoriginPartialUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, *args, **kwargs): + data = self.request.data + data['openid'] = self.request.auth.openid + if ListModel.objects.filter(openid=data['openid'], goods_origin=data['goods_origin'], is_delete=False).exists(): + raise APIException({"detail": "Data exists"}) + else: + serializer = self.get_serializer(data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot update data which not yours"}) + data = self.request.data + if ListModel.objects.filter(openid=self.request.auth.openid,goods_origin=data['goods_origin'], is_delete=False).exists(): + raise APIException({"detail": "Data exists"}) + else: + serializer = self.get_serializer(qs, data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def partial_update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot partial_update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data, partial=True) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def destroy(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot delete data which not yours"}) + else: + qs.is_delete = True + qs.save() + serializer = self.get_serializer(qs, many=False) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) diff --git a/goodsshape/__init__.py b/goodsshape/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/goodsshape/admin.py b/goodsshape/admin.py new file mode 100644 index 00000000..c9f86026 --- /dev/null +++ b/goodsshape/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from . models import ListModel + +admin.site.register(ListModel) diff --git a/goodsshape/apps.py b/goodsshape/apps.py new file mode 100644 index 00000000..99c6f3fc --- /dev/null +++ b/goodsshape/apps.py @@ -0,0 +1,4 @@ +from django.apps import AppConfig + +class GoodsshapeConfig(AppConfig): + name = 'goodsshape' diff --git a/goodsshape/filter.py b/goodsshape/filter.py new file mode 100644 index 00000000..8f1f3d62 --- /dev/null +++ b/goodsshape/filter.py @@ -0,0 +1,14 @@ +from django_filters import FilterSet +from .models import ListModel + +class Filter(FilterSet): + class Meta: + model = ListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "goods_shape": ['exact', 'iexact', 'contains', 'icontains'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "is_delete": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } diff --git a/goodsshape/migrations/__init__.py b/goodsshape/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/goodsshape/models.py b/goodsshape/models.py new file mode 100644 index 00000000..d46f825a --- /dev/null +++ b/goodsshape/models.py @@ -0,0 +1,18 @@ +from django.db import models + +class ListModel(models.Model): + goods_shape = models.CharField(max_length=32, verbose_name="Goods Shape") + creater = models.CharField(max_length=255, verbose_name="Who created") + openid = models.CharField(max_length=255, verbose_name="Openid") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'goodsshape' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['goods_shape'] + + def __str__(self): + return self.pk diff --git a/goodsshape/serializers.py b/goodsshape/serializers.py new file mode 100644 index 00000000..12b8aeb2 --- /dev/null +++ b/goodsshape/serializers.py @@ -0,0 +1,38 @@ +from rest_framework import serializers +from .models import ListModel +from utils import datasolve + +class GoodsshapeGetSerializer(serializers.ModelSerializer): + goods_shape = serializers.CharField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'openid', 'appid', 'create_time', 'update_time', ] + +class GoodsshapePostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + goods_shape = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class GoodsshapeUpdateSerializer(serializers.ModelSerializer): + goods_shape = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class GoodsshapePartialUpdateSerializer(serializers.ModelSerializer): + goods_shape = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] diff --git a/goodsshape/tests.py b/goodsshape/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/goodsshape/urls.py b/goodsshape/urls.py new file mode 100644 index 00000000..0e2f7ed5 --- /dev/null +++ b/goodsshape/urls.py @@ -0,0 +1,12 @@ +from django.urls import path, re_path +from . import views + +urlpatterns = [ +path(r'', views.APIViewSet.as_view({"get": "list", "post": "create"}), name="goodsshape"), +re_path(r'^(?P\d+)/$', views.APIViewSet.as_view({ + 'get': 'retrieve', + 'put': 'update', + 'patch': 'partial_update', + 'delete': 'destroy' +}), name="goodsshape_1") +] diff --git a/goodsshape/views.py b/goodsshape/views.py new file mode 100644 index 00000000..a99ecc7b --- /dev/null +++ b/goodsshape/views.py @@ -0,0 +1,110 @@ +from rest_framework import viewsets +from .models import ListModel +from . import serializers +from utils.page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from .filter import Filter +from rest_framework.exceptions import APIException + +class APIViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + list: + Response a data list(all) + + create: + Create a data line(post) + + delete: + Delete a data line(delete) + + partial_update: + Partial_update a data(patch:partial_update) + + update: + Update a data(put:update) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve', 'destroy']: + return serializers.GoodsshapeGetSerializer + elif self.action in ['create']: + return serializers.GoodsshapePostSerializer + elif self.action in ['update']: + return serializers.GoodsshapeUpdateSerializer + elif self.action in ['partial_update']: + return serializers.GoodsshapePartialUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, *args, **kwargs): + data = self.request.data + data['openid'] = self.request.auth.openid + if ListModel.objects.filter(openid=data['openid'], goods_shape=data['goods_shape'], is_delete=False).exists(): + raise APIException({"detail": "Data exists"}) + else: + serializer = self.get_serializer(data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def partial_update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot partial_update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data, partial=True) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def destroy(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot delete data which not yours"}) + else: + qs.is_delete = True + qs.save() + serializer = self.get_serializer(qs, many=False) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) diff --git a/goodsspecs/__init__.py b/goodsspecs/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/goodsspecs/admin.py b/goodsspecs/admin.py new file mode 100644 index 00000000..c9f86026 --- /dev/null +++ b/goodsspecs/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from . models import ListModel + +admin.site.register(ListModel) diff --git a/goodsspecs/apps.py b/goodsspecs/apps.py new file mode 100644 index 00000000..a2539894 --- /dev/null +++ b/goodsspecs/apps.py @@ -0,0 +1,4 @@ +from django.apps import AppConfig + +class GoodsspecsConfig(AppConfig): + name = 'goodsspecs' diff --git a/goodsspecs/filter.py b/goodsspecs/filter.py new file mode 100644 index 00000000..3ddd2dc4 --- /dev/null +++ b/goodsspecs/filter.py @@ -0,0 +1,14 @@ +from django_filters import FilterSet +from .models import ListModel + +class Filter(FilterSet): + class Meta: + model = ListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "goods_specs": ['exact', 'iexact', 'contains', 'icontains'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "is_delete": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } diff --git a/goodsspecs/migrations/__init__.py b/goodsspecs/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/goodsspecs/models.py b/goodsspecs/models.py new file mode 100644 index 00000000..f3958d56 --- /dev/null +++ b/goodsspecs/models.py @@ -0,0 +1,18 @@ +from django.db import models + +class ListModel(models.Model): + goods_specs = models.CharField(max_length=32, verbose_name="Goods Specs") + creater = models.CharField(max_length=255, verbose_name="Who created") + openid = models.CharField(max_length=255, verbose_name="Openid") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'goodsspecs' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['goods_specs'] + + def __str__(self): + return self.pk diff --git a/goodsspecs/serializers.py b/goodsspecs/serializers.py new file mode 100644 index 00000000..4773a378 --- /dev/null +++ b/goodsspecs/serializers.py @@ -0,0 +1,38 @@ +from rest_framework import serializers +from .models import ListModel +from utils import datasolve + +class GoodsspecsGetSerializer(serializers.ModelSerializer): + goods_specs = serializers.CharField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'openid', 'appid', 'create_time', 'update_time', ] + +class GoodsspecsPostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + goods_specs = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class GoodsspecsUpdateSerializer(serializers.ModelSerializer): + goods_specs = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class GoodsspecsPartialUpdateSerializer(serializers.ModelSerializer): + goods_specs = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] diff --git a/goodsspecs/tests.py b/goodsspecs/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/goodsspecs/urls.py b/goodsspecs/urls.py new file mode 100644 index 00000000..fc1708a9 --- /dev/null +++ b/goodsspecs/urls.py @@ -0,0 +1,12 @@ +from django.urls import path, re_path +from . import views + +urlpatterns = [ +path(r'', views.APIViewSet.as_view({"get": "list", "post": "create"}), name="goodsspecs"), +re_path(r'^(?P\d+)/$', views.APIViewSet.as_view({ + 'get': 'retrieve', + 'put': 'update', + 'patch': 'partial_update', + 'delete': 'destroy' +}), name="goodsspecs_1") +] diff --git a/goodsspecs/views.py b/goodsspecs/views.py new file mode 100644 index 00000000..570cfff2 --- /dev/null +++ b/goodsspecs/views.py @@ -0,0 +1,110 @@ +from rest_framework import viewsets +from .models import ListModel +from . import serializers +from utils.page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from .filter import Filter +from rest_framework.exceptions import APIException + +class APIViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + list: + Response a data list(all) + + create: + Create a data line(post) + + delete: + Delete a data line(delete) + + partial_update: + Partial_update a data(patch:partial_update) + + update: + Update a data(put:update) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve', 'destroy']: + return serializers.GoodsspecsGetSerializer + elif self.action in ['create']: + return serializers.GoodsspecsPostSerializer + elif self.action in ['update']: + return serializers.GoodsspecsUpdateSerializer + elif self.action in ['partial_update']: + return serializers.GoodsspecsPartialUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, *args, **kwargs): + data = self.request.data + data['openid'] = self.request.auth.openid + if ListModel.objects.filter(openid=data['openid'], goods_specs=data['goods_specs'], is_delete=False).exists(): + raise APIException({"detail": "Data exists"}) + else: + serializer = self.get_serializer(data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def partial_update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot partial_update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data, partial=True) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def destroy(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot delete data which not yours"}) + else: + qs.is_delete = True + qs.save() + serializer = self.get_serializer(qs, many=False) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) diff --git a/goodsunit/__init__.py b/goodsunit/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/goodsunit/admin.py b/goodsunit/admin.py new file mode 100644 index 00000000..c9f86026 --- /dev/null +++ b/goodsunit/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from . models import ListModel + +admin.site.register(ListModel) diff --git a/goodsunit/apps.py b/goodsunit/apps.py new file mode 100644 index 00000000..61912a63 --- /dev/null +++ b/goodsunit/apps.py @@ -0,0 +1,4 @@ +from django.apps import AppConfig + +class GoodsunitConfig(AppConfig): + name = 'goodsunit' diff --git a/goodsunit/filter.py b/goodsunit/filter.py new file mode 100644 index 00000000..9b6e4e09 --- /dev/null +++ b/goodsunit/filter.py @@ -0,0 +1,14 @@ +from django_filters import FilterSet +from .models import ListModel + +class Filter(FilterSet): + class Meta: + model = ListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "goods_unit": ['exact', 'iexact', 'contains', 'icontains'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "is_delete": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } diff --git a/goodsunit/migrations/__init__.py b/goodsunit/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/goodsunit/models.py b/goodsunit/models.py new file mode 100644 index 00000000..dc7686bb --- /dev/null +++ b/goodsunit/models.py @@ -0,0 +1,18 @@ +from django.db import models + +class ListModel(models.Model): + goods_unit = models.CharField(max_length=32, verbose_name="Goods Unit") + creater = models.CharField(max_length=255, verbose_name="Who created") + openid = models.CharField(max_length=255, verbose_name="Openid") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'goodsunit' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['goods_unit'] + + def __str__(self): + return self.pk diff --git a/goodsunit/serializers.py b/goodsunit/serializers.py new file mode 100644 index 00000000..0b06707e --- /dev/null +++ b/goodsunit/serializers.py @@ -0,0 +1,38 @@ +from rest_framework import serializers +from .models import ListModel +from utils import datasolve + +class GoodsunitGetSerializer(serializers.ModelSerializer): + goods_unit = serializers.CharField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id'] + +class GoodsunitPostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + goods_unit = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['is_delete', ] + read_only_fields = ['id', ] + +class GoodsunitUpdateSerializer(serializers.ModelSerializer): + goods_unit = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class GoodsunitPartialUpdateSerializer(serializers.ModelSerializer): + goods_unit = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] diff --git a/goodsunit/tests.py b/goodsunit/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/goodsunit/urls.py b/goodsunit/urls.py new file mode 100644 index 00000000..a123bd33 --- /dev/null +++ b/goodsunit/urls.py @@ -0,0 +1,12 @@ +from django.urls import path, re_path +from . import views + +urlpatterns = [ +path(r'', views.APIViewSet.as_view({"get": "list", "post": "create"}), name="goodsunit"), +re_path(r'^(?P\d+)/$', views.APIViewSet.as_view({ + 'get': 'retrieve', + 'put': 'update', + 'patch': 'partial_update', + 'delete': 'destroy' +}), name="goodsunit_1") +] diff --git a/goodsunit/views.py b/goodsunit/views.py new file mode 100644 index 00000000..aad78b14 --- /dev/null +++ b/goodsunit/views.py @@ -0,0 +1,110 @@ +from rest_framework import viewsets +from .models import ListModel +from . import serializers +from utils.page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from .filter import Filter +from rest_framework.exceptions import APIException + +class APIViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + list: + Response a data list(all) + + create: + Create a data line(post) + + delete: + Delete a data line(delete) + + partial_update: + Partial_update a data(patch:partial_update) + + update: + Update a data(put:update) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve', 'destroy']: + return serializers.GoodsunitGetSerializer + elif self.action in ['create']: + return serializers.GoodsunitPostSerializer + elif self.action in ['update']: + return serializers.GoodsunitUpdateSerializer + elif self.action in ['partial_update']: + return serializers.GoodsunitPartialUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, *args, **kwargs): + data = self.request.data + data['openid'] = self.request.auth.openid + if ListModel.objects.filter(openid=data['openid'], goods_unit=data['goods_unit'], is_delete=False).exists(): + raise APIException({"detail": "Data exists"}) + else: + serializer = self.get_serializer(data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def partial_update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot partial_update data which not yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data, partial=True) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def destroy(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot delete data which not yours"}) + else: + qs.is_delete = True + qs.save() + serializer = self.get_serializer(qs, many=False) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) diff --git a/greaterwms/__init__.py b/greaterwms/__init__.py new file mode 100644 index 00000000..55c7d3ee --- /dev/null +++ b/greaterwms/__init__.py @@ -0,0 +1,75 @@ +import mimetypes, os, requests, django +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'greaterwms.settings') +os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true" +django.setup() +from django.conf import settings +import pandas as pd + +mimetypes.add_type("text/css", ".css", True) +mimetypes.add_type("text/javascript", ".js", True) + +win32_folder = os.path.exists(os.path.join(settings.BASE_DIR, 'media/' + "/win32")) +linux_folder = os.path.exists(os.path.join(settings.BASE_DIR, 'media/' + "/linux")) +darwin_folder = os.path.exists(os.path.join(settings.BASE_DIR, 'media/' + "/darwin")) +upload_folder = os.path.exists(os.path.join(settings.BASE_DIR, 'media/' + "/upload_example")) +if not win32_folder: + os.makedirs(os.path.join(settings.BASE_DIR, 'media/' + "/win32")) +if not linux_folder: + os.makedirs(os.path.join(settings.BASE_DIR, 'media/' + "/linux")) +if not darwin_folder: + os.makedirs(os.path.join(settings.BASE_DIR, 'media/' + "/darwin")) +if not upload_folder: + os.makedirs(os.path.join(settings.BASE_DIR, 'media/' + "/upload_example")) + +customer_cn_path = os.path.join(settings.BASE_DIR, 'media/' + "/upload_example/customer_cn.xlsx") +customer_en_path = os.path.join(settings.BASE_DIR, 'media/' + "/upload_example/customer_en.xlsx") +goodslist_cn_path = os.path.join(settings.BASE_DIR, 'media/' + "/upload_example/goodslist_cn.xlsx") +goodslist_en_path = os.path.join(settings.BASE_DIR, 'media/' + "/upload_example/goodslist_en.xlsx") +supplier_cn_path = os.path.join(settings.BASE_DIR, 'media/' + "/upload_example/supplier_cn.xlsx") +supplier_en_path = os.path.join(settings.BASE_DIR, 'media/' + "/upload_example/supplier_en.xlsx") +customer_cn_file = os.path.exists(customer_cn_path) +customer_en_file = os.path.exists(customer_en_path) +goodslist_cn_file = os.path.exists(goodslist_cn_path) +goodslist_en_file = os.path.exists(goodslist_en_path) +supplier_cn_file = os.path.exists(supplier_cn_path) +supplier_en_file = os.path.exists(supplier_en_path) +if not customer_cn_file: + customer_cn = pd.DataFrame({"客户名称": [], "客户城市": [] ,"详细地址": [], "联系电话": [], "负责人": [], "客户等级": []}) + df = customer_cn.set_index("客户名称") + df.to_excel(customer_cn_path) + +if not customer_en_file: + customer_en = pd.DataFrame({"Customer Name": [], "Customer City": [], "Customer Address": [], "Customer Contact": [], "Customer Manager": [], "Customer Level": []}) + df = customer_en.set_index("Customer Name") + df.to_excel(customer_en_path) + +if not goodslist_cn_file: + goodslist_cn = pd.DataFrame({"商品编码": [], "商品描述": [], "商品供应商": [], "商品单位重量": [], "商品单位长度": [], "商品单位宽度": [], "商品单位高度": [], "最小单位体积": [], "商品单位": [], "商品类别": [], "商品品牌": [], "商品颜色": [], "商品形状": [], "商品规格": [], "商品产地": [], "商品成本": [], "商品价格": []}) + df = goodslist_cn.set_index("商品编码") + df.to_excel(goodslist_cn_path) + +if not goodslist_en_file: + goodslist_en = pd.DataFrame({"Goods Code": [], "Goods Description": [], "Goods Supplier": [], "Goods Weight": [], "Goods Width": [], "Goods Depth": [], "Goods Height": [], "Unit Volume": [], "Goods Unit": [], "Goods Class": [], "Goods Brand": [], "Goods Color": [], "Goods Shape": [], "Goods Specs": [], "Goods Origin": [], "Goods Cost": [], "Goods Price": []}) + df = goodslist_en.set_index("Goods Code") + df.to_excel(goodslist_en_path) + +if not supplier_cn_file: + supplier_cn = pd.DataFrame({"供应商名称": [], "供应商城市": [] ,"详细地址": [], "联系电话": [], "负责人": [], "供应商等级": []}) + df = supplier_cn.set_index("供应商名称") + df.to_excel(supplier_cn_path) + +if not supplier_en_file: + supplier_en = pd.DataFrame({"Supplier Name": [], "Supplier City": [] ,"Supplier Address": [], "Supplier Contact": [], "Supplier Manager": [], "Supplier Level": []}) + df = supplier_en.set_index("Supplier Name") + df.to_excel(supplier_en_path) + +try: + path = os.path.join(settings.BASE_DIR, 'utils/authorization.txt') + if os.path.exists(path) is False: + response = requests.post('https://www.56yhz.com/area_v2/') + with open(path, 'w') as f: + f.write(str(eval(response.text).get('check_token'))) + f.close() +except: + pass +print('Welcome To GreaterWMS') diff --git a/greaterwms/asgi.py b/greaterwms/asgi.py new file mode 100644 index 00000000..c9641064 --- /dev/null +++ b/greaterwms/asgi.py @@ -0,0 +1,25 @@ +""" +ASGI config for IM56 project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/3.1/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application +from utils.websocket import websocket_application +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'greaterwms.settings') + +http_application = get_asgi_application() + +async def application(scope, receive, send): + if scope['type'] in ['http', 'https']: + await http_application(scope, receive, send) + elif scope['type'] in ['websocket']: + await websocket_application(scope, receive, send) + else: + raise Exception('Unknown Type' + scope['type']) + diff --git a/greaterwms/settings.py b/greaterwms/settings.py new file mode 100644 index 00000000..ffa0e676 --- /dev/null +++ b/greaterwms/settings.py @@ -0,0 +1,262 @@ +from pathlib import Path +import os + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +from django.core.management.utils import get_random_secret_key +get_random_secret_key() +SECRET_KEY = get_random_secret_key() + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = False + +ALLOWED_HOSTS = ['*'] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'chat.apps.ChatConfig', + 'staff.apps.StaffConfig', + 'userprofile.apps.UserprofileConfig', + 'userregister.apps.UserregisterConfig', + 'userlogin.apps.UserloginConfig', + 'company.apps.CompanyConfig', + 'supplier.apps.SupplierConfig', + 'asn.apps.AsnConfig', + 'dn.apps.DnConfig', + 'binset.apps.BinsetConfig', + 'binsize.apps.BinsizeConfig', + 'binproperty.apps.BinpropertyConfig', + 'customer.apps.CustomerConfig', + 'capital.apps.CapitalConfig', + 'cyclecount.apps.CyclecountConfig', + 'dashboard.apps.DashboardConfig', + 'warehouse.apps.WarehouseConfig', + 'goods.apps.GoodsConfig', + 'goodsunit.apps.GoodsunitConfig', + 'goodsclass.apps.GoodsclassConfig', + 'goodscolor.apps.GoodscolorConfig', + 'goodsbrand.apps.GoodsbrandConfig', + 'goodsshape.apps.GoodsshapeConfig', + 'goodsspecs.apps.GoodsspecsConfig', + 'goodsorigin.apps.GoodsoriginConfig', + 'payment.apps.PaymentConfig', + 'driver.apps.DriverConfig', + 'stock.apps.StockConfig', + 'shopid.apps.ShopidConfig', + 'throttle.apps.ThrottleConfig', + 'uploadfile.apps.UploadfileConfig', + 'scanner.apps.ScannerConfig', + 'rest_framework', + 'django_filters', + 'silk', + 'drf_yasg', + 'corsheaders' +] + +MIDDLEWARE = [ + 'corsheaders.middleware.CorsMiddleware', + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + #'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'silk.middleware.SilkyMiddleware', +] + +ROOT_URLCONF = 'greaterwms.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [BASE_DIR / 'templates'] + , + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'greaterwms.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/3.1/ref/settings/#databases +# update +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/3.1/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/3.1/topics/i18n/ + +LANGUAGE_CODE = 'zh-hans' + +TIME_ZONE = 'Asia/Shanghai' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = False + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/3.1/howto/static-files/ + +STATIC_URL = '/static/' +STATIC_ROOT = os.path.join(BASE_DIR, 'static_new').replace('\\', '/') +STATICFILES_DIRS = [ + os.path.join(BASE_DIR, 'static').replace('\\', '/'), +] + +MEDIA_URL = '/media/' +MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/') + +REST_FRAMEWORK = { + # AttributeError: ‘AutoSchema’ object has no attribute ‘get_link’ + #'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.AutoSchema', + # DEFAULT SET: + 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.openapi.AutoSchema', + # EXCEPTION: + 'EXCEPTION_HANDLER': 'utils.my_exceptions.custom_exception_handler', + # Base API policies: + 'DEFAULT_RENDERER_CLASSES': [ + 'rest_framework.renderers.JSONRenderer', + 'rest_framework_csv.renderers.CSVRenderer', + #'rest_framework.renderers.BrowsableAPIRenderer', + ], + 'DEFAULT_PARSER_CLASSES': [ + 'rest_framework.parsers.JSONParser', + 'rest_framework.parsers.FormParser', + 'rest_framework.parsers.MultiPartParser' + ], + 'DEFAULT_AUTHENTICATION_CLASSES': ['utils.auth.Authtication', ], + 'DEFAULT_PERMISSION_CLASSES': ["utils.permission.Normalpermission", ], + 'DEFAULT_THROTTLE_CLASSES': ['utils.throttle.VisitThrottle', ], + # 'DEFAULT_THROTTLE_RATES': ['utils.throttle.VisitThrottle', ], + 'DEFAULT_CONTENT_NEGOTIATION_CLASS': 'rest_framework.negotiation.DefaultContentNegotiation', + 'DEFAULT_METADATA_CLASS': 'rest_framework.metadata.SimpleMetadata', + 'DEFAULT_VERSIONING_CLASS': None, + # 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', + # 'PAGE_SIZE': 1, # 默认 None + 'DEFAULT_FILTER_BACKENDS': [ + 'django_filters.rest_framework.DjangoFilterBackend', + # 'django_filters.rest_framework.backends.DjangoFilterBackend', + ], + 'SEARCH_PARAM': 'search', + 'ORDERING_PARAM': 'ordering', + 'NUM_PROXIES': None, + # Versioning: + 'DEFAULT_VERSION': None, + 'ALLOWED_VERSIONS': None, + 'VERSION_PARAM': 'version', + # Authentication: + 'UNAUTHENTICATED_USER': 'django.contrib.auth.models.AnonymousUser', + 'UNAUTHENTICATED_TOKEN': None, + # View configuration: + 'VIEW_NAME_FUNCTION': 'rest_framework.views.get_view_name', + 'VIEW_DESCRIPTION_FUNCTION': 'rest_framework.views.get_view_description', + 'NON_FIELD_ERRORS_KEY': 'non_field_errors', + # Testing + 'TEST_REQUEST_RENDERER_CLASSES': [ + 'rest_framework.renderers.MultiPartRenderer', + 'rest_framework.renderers.JSONRenderer' + ], + 'TEST_REQUEST_DEFAULT_FORMAT': 'multipart', + # Hyperlink settings + 'URL_FORMAT_OVERRIDE': 'format', + 'FORMAT_SUFFIX_KWARG': 'format', + 'URL_FIELD_NAME': 'url', + # Encoding + 'UNICODE_JSON': True, + 'COMPACT_JSON': True, + 'STRICT_JSON': True, + 'COERCE_DECIMAL_TO_STRING': True, + 'UPLOADED_FILES_USE_URL': True, + # Browseable API + 'HTML_SELECT_CUTOFF': 1000, + 'HTML_SELECT_CUTOFF_TEXT': "More than {count} items...", + # Schemas + 'SCHEMA_COERCE_PATH_PK': True, + 'SCHEMA_COERCE_METHOD_NAMES': { + 'retrieve': 'read', + 'destroy': 'delete' + }, +} + +CORS_ALLOW_CREDENTIALS = True +CORS_ORIGIN_ALLOW_ALL = True +CORS_ORIGIN_WHITELIST = () + +CORS_ALLOW_METHODS = ( + 'DELETE', + 'GET', + 'OPTIONS', + 'PATCH', + 'POST', + 'PUT', + 'VIEW', +) + +CORS_ALLOW_HEADERS = ( + 'accept', + 'accept-encoding', + 'authorization', + 'content-type', + 'dnt', + 'origin', + 'user-agent', + 'x-csrftoken', + 'x-requested-with', + 'token', + 'language', + 'operator', + 'device', + 'app-id', + 'event-sign' +) \ No newline at end of file diff --git a/greaterwms/urls.py b/greaterwms/urls.py new file mode 100644 index 00000000..2a0da9bf --- /dev/null +++ b/greaterwms/urls.py @@ -0,0 +1,82 @@ +from django.contrib import admin +from django.conf import settings +from django.urls import path, include, re_path +from django.views.generic.base import TemplateView +from django.contrib.staticfiles.views import serve +from django.views.static import serve as static_serve +from rest_framework import permissions +from drf_yasg.views import get_schema_view +from drf_yasg import openapi +from . import views + +schema_view = get_schema_view( + openapi.Info( + title="GreaterWMS--API Docs", + default_version='v2.1.0', + description= + """ + openid: + Openid is the only mark of your data group, You should add it to you request headers.token . + """ + , + terms_of_service="https://www.56yhz.com/", + license=openapi.License(name="Apache License 2.0"), + ), + public=True, + permission_classes=(permissions.AllowAny, ), +) + +def return_static(request, path, insecure=True, **kwargs): + return serve(request, path, insecure, **kwargs) + +urlpatterns = [ + # path('admin/', admin.site.urls), + path('', TemplateView.as_view(template_name='dist/spa/index.html')), + path('vcheck/', views.vcheck, name='vcheck'), + path('myip/', views.myip, name='myip'), + path('asn/', include('asn.urls')), + path('dn/', include('dn.urls')), + path('staff/', include('staff.urls')), + path('binset/', include('binset.urls')), + path('binsize/', include('binsize.urls')), + path('binproperty/', include('binproperty.urls')), + path('chat/', include('chat.urls')), + path('capital/', include('capital.urls')), + path('driver/', include('driver.urls')), + path('stock/', include('stock.urls')), + path('company/', include('company.urls')), + path('cyclecount/', include('cyclecount.urls')), + path('dashboard/', include('dashboard.urls')), + path('supplier/', include('supplier.urls')), + path('customer/', include('customer.urls')), + path('warehouse/', include('warehouse.urls')), + path('goods/', include('goods.urls')), + path('goodsunit/', include('goodsunit.urls')), + path('goodsclass/', include('goodsclass.urls')), + path('goodscolor/', include('goodscolor.urls')), + path('goodsbrand/', include('goodsbrand.urls')), + path('goodsshape/', include('goodsshape.urls')), + path('goodsspecs/', include('goodsspecs.urls')), + path('goodsorigin/', include('goodsorigin.urls')), + path('scanner/', include('scanner.urls')), + path('shopid/', include('shopid.urls')), + path('payment/', include('payment.urls')), + path('login/', include('userlogin.urls')), + path('register/', include('userregister.urls')), + path('uploadfile/', include('uploadfile.urls')), + path('api-auth/', include('rest_framework.urls', namespace='rest_framework')), + re_path(r'^favicon\.ico$', views.favicon, name='favicon'), + re_path('^css/.*$', views.css, name='css'), + re_path('^js/.*$', views.js, name='js'), + re_path('^statics/.*$', views.statics, name='statics'), + re_path('^fonts/.*$', views.fonts, name='fonts'), + re_path('^pdf/.*$', views.pdf, name='pdf'), + re_path(r'^robots.txt', views.robots, name='robots'), + re_path(r'^static/(?P.*)$', return_static, name='static'), + re_path(r'^media/(?P.*)$', static_serve, {'document_root': settings.MEDIA_ROOT}), + re_path(r'^swagger(?P\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name='schema-json'), + path('swagger', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'), + path('docs/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'), +] + +urlpatterns += [re_path(r'^silk/', include('silk.urls', namespace='silk'))] diff --git a/greaterwms/views.py b/greaterwms/views.py new file mode 100644 index 00000000..0fb36c98 --- /dev/null +++ b/greaterwms/views.py @@ -0,0 +1,88 @@ +from django.http import StreamingHttpResponse, JsonResponse +from django.conf import settings +from wsgiref.util import FileWrapper +from rest_framework.exceptions import APIException +import mimetypes, os + +baseurl = 'https://production.56yhz.com/media/' + +async def vcheck(request): + openid = request.GET.get('openid', '') + platform = request.GET.get('platform', '') + if platform: + if openid: + folder = os.path.exists(os.path.join(settings.BASE_DIR, 'media/' + openid + '/' + platform + '/latest.yml')) + if not folder: + upurl = baseurl + platform + else: + upurl = baseurl + openid + '/' + platform + else: + return JsonResponse({"detail": "Please Enter Your Openid"}) + else: + return JsonResponse({"detail": "Please Choose Your Platform"}) + return JsonResponse({"upurl": upurl}) + + +async def robots(request): + path = settings.BASE_DIR + request.path_info + content_type, encoding = mimetypes.guess_type(path) + resp = StreamingHttpResponse(FileWrapper(open(path, 'rb')), content_type=content_type) + resp['Cache-Control'] = "max-age=864000000000" + return resp + + +async def favicon(request): + path = str(settings.BASE_DIR) + '/static/img/logo.png' + content_type, encoding = mimetypes.guess_type(path) + resp = StreamingHttpResponse(FileWrapper(open(path, 'rb')), content_type=content_type) + resp['Cache-Control'] = "max-age=864000000000" + return resp + + +async def css(request): + path = str(settings.BASE_DIR) + '/templates/dist/spa' + request.path_info + content_type, encoding = mimetypes.guess_type(path) + resp = StreamingHttpResponse(FileWrapper(open(path, 'rb')), content_type=content_type) + resp['Cache-Control'] = "max-age=864000000000" + return resp + + +async def js(request): + path = str(settings.BASE_DIR) + '/templates/dist/spa' + request.path_info + content_type, encoding = mimetypes.guess_type(path) + resp = StreamingHttpResponse(FileWrapper(open(path, 'rb')), content_type=content_type) + resp['Cache-Control'] = "max-age=864000000000" + return resp + + +async def statics(request): + path = str(settings.BASE_DIR) + '/templates/dist/spa' + request.path_info + content_type, encoding = mimetypes.guess_type(path) + resp = StreamingHttpResponse(FileWrapper(open(path, 'rb')), content_type=content_type) + resp['Cache-Control'] = "max-age=864000000000" + return resp + + +def fonts(request): + path = str(settings.BASE_DIR) + '/templates/dist/spa' + request.path_info + content_type, encoding = mimetypes.guess_type(path) + resp = StreamingHttpResponse(FileWrapper(open(path, 'rb')), content_type=content_type) + resp['Cache-Control'] = "max-age=864000000000" + return resp + +async def pdf(request): + path = str(settings.BASE_DIR) + '/templates/dist/spa' + request.path_info + content_type, encoding = mimetypes.guess_type(path) + resp = StreamingHttpResponse(FileWrapper(open(path, 'rb')), content_type=content_type) + resp['Cache-Control'] = "max-age=864000000000" + return resp + + +async def myip(request): + import socket + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + s.connect(('8.8.8.8', 80)) + print(s.getsockname()[0]) + ip = s.getsockname()[0] + s.close() + return JsonResponse({"ip": ip}) diff --git a/greaterwms/wsgi.py b/greaterwms/wsgi.py new file mode 100644 index 00000000..ff8486e0 --- /dev/null +++ b/greaterwms/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for django_wms project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/3.1/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'greaterwms.settings') + +application = get_wsgi_application() diff --git a/manage.py b/manage.py new file mode 100644 index 00000000..3409bb75 --- /dev/null +++ b/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'greaterwms.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() diff --git a/media/__init__.py b/media/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/media/error.wav b/media/error.wav new file mode 100644 index 0000000000000000000000000000000000000000..bbfe6a105268710905c2ea9da547472e5ae4142b GIT binary patch literal 57208 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 literal 0 HcmV?d00001 diff --git a/media/scanned.mp3 b/media/scanned.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..c62fa2da345b77b055d1e8db102624ae6d9b5ae0 GIT binary patch literal 15609 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 literal 0 HcmV?d00001 diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 00000000..44c22508 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,97 @@ + +user root; +worker_processes auto; + +events { + worker_connections 1024; +} + +http { + include mime.types; + default_type application/octet-stream; + sendfile on; + gzip on; + gzip_min_length 1k; + gzip_comp_level 4; + gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css; + gzip_disable "MSIE [1-6]\."; + gzip_vary on; + proxy_redirect off; + proxy_set_header Host $host; + proxy_set_header https $https; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + client_max_body_size 75M; #缓冲区代理缓冲用户端请求的最大字节数,可以理解为保存到本地再传给用户 + client_body_buffer_size 256k; + client_header_timeout 3m; + client_body_timeout 3m; + send_timeout 3m; + proxy_connect_timeout 300s; #nginx跟后端服务器连接超时时间(代理连接超时) + proxy_read_timeout 300s; #连接成功后,后端服务器响应时间(代理接收超时) + proxy_send_timeout 300s; + proxy_buffer_size 64k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小 + proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置 + proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2) + proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传递请求,而不缓冲到磁盘 + proxy_ignore_client_abort on; #不允许代理端主动关闭连接 + + upstream GreaterWMS{ + server 127.0.0.1:8008; +} + server { + listen 80; + server_name {{ Domin Name }}; + rewrite ^(.*)$ https://{{ Domin Name }}$1; + + } + + server { + listen 443 ssl; + + server_name {{ Domin Name }}; + root /path/to/GreaterWMS; + charset utf-8; + add_header X-Frame-Options "SAMEORIGIN"; + add_header X-XSS-Protection "1; mode=block"; + add_header X-Content-Type-Options "nosniff"; + + client_max_body_size 75M; + + ssl_certificate /path/to/GreaterWMS.pem; + ssl_certificate_key /path/to/GreaterWMS.key; + ssl_session_timeout 5m; + ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_prefer_server_ciphers on; + + access_log off; + error_log /path/to/GreaterWMS/greaterwms-error.log error; + + location /websocket/ { + proxy_pass http://GreaterWMS/; + proxy_read_timeout 60s; + proxy_set_header Host $host; + proxy_set_header X-Real_IP $remote_addr; + proxy_set_header X-Forwarded-for $remote_addr; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'Upgrade'; + } + + location / { + #root html; + #index testssl.html index.html index.htm; + proxy_redirect off; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass http://127.0.0.1:8008/; + } + location /static/ { + alias /path/to/GreaterWMS/static_new/; + } + location /media/{ + alias /path/to/GreaterWMS/media/; + } + } +} diff --git a/operater document.pdf.REMOVED.git-id b/operater document.pdf.REMOVED.git-id new file mode 100644 index 00000000..343d8dec --- /dev/null +++ b/operater document.pdf.REMOVED.git-id @@ -0,0 +1 @@ +8e7e3f7263fcd1bae4edba693a981b6f76b34ab6 \ No newline at end of file diff --git a/payment/__init__.py b/payment/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/payment/admin.py b/payment/admin.py new file mode 100644 index 00000000..53117e85 --- /dev/null +++ b/payment/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from . models import TransportationFeeListModel + +admin.site.register(TransportationFeeListModel) diff --git a/payment/apps.py b/payment/apps.py new file mode 100644 index 00000000..5aa047d4 --- /dev/null +++ b/payment/apps.py @@ -0,0 +1,35 @@ +from django.apps import AppConfig +from django.db.models.signals import post_migrate + +class PaymentConfig(AppConfig): + name = 'payment' + +# def ready(self): +# post_migrate.connect(do_init_data, sender=self) +# +# def do_init_data(sender, **kwargs): +# init_category() +# +# def init_category(): +# """ +# :return:None +# """ +# try: +# from .models import TransportationFeeListModel as transporationfee +# if transporationfee.objects.filter(openid__iexact='init_data').exists(): +# pass +# else: +# init_data = [ +# transporationfee(openid='init_data', send_city='上海市', receiver_city='杭州市', +# weight_fee=0.4, volume_fee=30, transportation_supplier='WanKe Logistic', +# min_payment=250, creater='GreaterWMS'), +# transporationfee(openid='init_data', send_city='上海市', receiver_city='北京市', +# weight_fee=0.8, volume_fee=220, transportation_supplier='WanKe Logistic', +# min_payment=250, creater='GreaterWMS'), +# ] +# transporationfee.objects.bulk_create(init_data, batch_size=100) +# except: +# pass +# +# def init_datas(): +# init_category() diff --git a/payment/files.py b/payment/files.py new file mode 100644 index 00000000..4f0b8587 --- /dev/null +++ b/payment/files.py @@ -0,0 +1,48 @@ +from rest_framework_csv.renderers import CSVStreamingRenderer + +def file_headers(): + return [ + 'send_city', + 'receiver_city', + 'weight_fee', + 'volume_fee', + 'min_payment', + 'transportation_supplier', + 'creater', + 'create_time', + 'update_time' + ] + +def cn_data_header(): + return dict([ + ('send_city', u'始发城市'), + ('receiver_city', u'到货城市'), + ('weight_fee', u'单公斤运费'), + ('volume_fee', u'每立方米运费'), + ('min_payment', u'最小运费'), + ('transportation_supplier', u'承运商'), + ('creater', u'创建人'), + ('create_time', u'创建时间'), + ('update_time', u'更新时间') + ]) + +def en_data_header(): + return dict([ + ('send_city', u'Send City'), + ('receiver_city', u'Receiver City'), + ('weight_fee', u'Weight Fee'), + ('volume_fee', u'Volume Fee'), + ('min_payment', u'Min Payment'), + ('transportation_supplier', u'Transportation Supplier'), + ('creater', u'Creater'), + ('create_time', u'Create Time'), + ('update_time', u'Update Time') + ]) + +class FreightfileRenderCN(CSVStreamingRenderer): + header = file_headers() + labels = cn_data_header() + +class FreightfileRenderEN(CSVStreamingRenderer): + header = file_headers() + labels = en_data_header() diff --git a/payment/filter.py b/payment/filter.py new file mode 100644 index 00000000..11743e84 --- /dev/null +++ b/payment/filter.py @@ -0,0 +1,19 @@ +from django_filters import FilterSet +from .models import TransportationFeeListModel + +class TransportationFeeListFilter(FilterSet): + class Meta: + model = TransportationFeeListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "send_city": ['exact', 'iexact', 'contains', 'icontains'], + "receiver_city": ['exact', 'iexact', 'contains', 'icontains'], + "weight_fee": ['exact', 'iexact', 'contains', 'icontains', 'gt', 'gte', 'lt', 'lte', 'range'], + "volume_fee": ['exact', 'iexact', 'contains', 'icontains', 'gt', 'gte', 'lt', 'lte', 'range'], + "min_payment": ['exact', 'iexact', 'contains', 'icontains', 'gt', 'gte', 'lt', 'lte', 'range'], + "transportation_supplier": ['exact', 'iexact', 'contains', 'icontains'], + "creater": ['exact', 'iexact', 'contains', 'icontains'], + "is_delete": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } diff --git a/payment/migrations/__init__.py b/payment/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/payment/models.py b/payment/models.py new file mode 100644 index 00000000..0d4a33cd --- /dev/null +++ b/payment/models.py @@ -0,0 +1,23 @@ +from django.db import models + +class TransportationFeeListModel(models.Model): + send_city = models.CharField(max_length=255, verbose_name="Send City") + receiver_city = models.CharField(max_length=255, verbose_name="Receiver City") + weight_fee = models.FloatField(default=0, verbose_name="Weight Fee") + volume_fee = models.FloatField(default=0, verbose_name="Volume Fee") + min_payment = models.FloatField(default=0, verbose_name="Min Payment") + transportation_supplier = models.CharField(max_length=255, verbose_name="Transportation Supplier") + creater = models.CharField(max_length=255, verbose_name="Who Created") + openid = models.CharField(max_length=255, verbose_name="Openid") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'transportationfee' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['-id'] + + def __str__(self): + return self.pk diff --git a/payment/serializers.py b/payment/serializers.py new file mode 100644 index 00000000..52e7eaab --- /dev/null +++ b/payment/serializers.py @@ -0,0 +1,68 @@ +from rest_framework import serializers +from .models import TransportationFeeListModel +from utils import datasolve + +class FreightGetSerializer(serializers.ModelSerializer): + send_city = serializers.CharField(read_only=True, required=False) + receiver_city = serializers.CharField(read_only=True, required=False) + weight_fee = serializers.FloatField(read_only=True, required=False) + volume_fee = serializers.FloatField(read_only=True, required=False) + transportation_supplier = serializers.CharField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = TransportationFeeListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id'] + +class FreightPostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + send_city = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + receiver_city = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + weight_fee = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + volume_fee = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + transportation_supplier = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = TransportationFeeListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class FreightUpdateSerializer(serializers.ModelSerializer): + send_city = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + receiver_city = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + weight_fee = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + volume_fee = serializers.FloatField(read_only=False, required=True, validators=[datasolve.data_validate]) + transportation_supplier = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = TransportationFeeListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class FreightPartialUpdateSerializer(serializers.ModelSerializer): + send_city = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + receiver_city = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + weight_fee = serializers.FloatField(read_only=False, required=False, validators=[datasolve.data_validate]) + volume_fee = serializers.FloatField(read_only=False, required=False, validators=[datasolve.data_validate]) + transportation_supplier = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + creater = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + class Meta: + model = TransportationFeeListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class FreightfileRenderSerializer(serializers.ModelSerializer): + send_city = serializers.CharField(read_only=True, required=False) + receiver_city = serializers.CharField(read_only=True, required=False) + weight_fee = serializers.FloatField(read_only=True, required=False) + volume_fee = serializers.FloatField(read_only=True, required=False) + transportation_supplier = serializers.CharField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = TransportationFeeListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id'] diff --git a/payment/tests.py b/payment/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/payment/urls.py b/payment/urls.py new file mode 100644 index 00000000..7d9ca396 --- /dev/null +++ b/payment/urls.py @@ -0,0 +1,13 @@ +from django.urls import path, re_path +from . import views + +urlpatterns = [ +path(r'freight/', views.TransportationFeeListViewSet.as_view({"get": "list", "post": "create"}), name="transportationfee"), +path(r'freightfile/', views.FreightfileDownloadView.as_view({"get": "list"}), name="freightfiledownload"), +re_path(r'^freight/(?P\d+)/$', views.TransportationFeeListViewSet.as_view({ + 'get': 'retrieve', + 'put': 'update', + 'patch': 'partial_update', + 'delete': 'destroy' +}), name="transportationfee_1") +] diff --git a/payment/views.py b/payment/views.py new file mode 100644 index 00000000..c924c6cc --- /dev/null +++ b/payment/views.py @@ -0,0 +1,164 @@ +from django.http import StreamingHttpResponse +from rest_framework import viewsets +from rest_framework.settings import api_settings +from .models import TransportationFeeListModel +from . import serializers +from utils.page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from .filter import TransportationFeeListFilter +from rest_framework.exceptions import APIException +from .files import FreightfileRenderCN, FreightfileRenderEN + +class TransportationFeeListViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + list: + Response a data list(all) + + create: + Create a data line(post) + + delete: + Delete a data line(delete) + + partial_update: + Partial_update a data(patch:partial_update) + + update: + Update a data(put:update) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = TransportationFeeListFilter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return TransportationFeeListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return TransportationFeeListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return TransportationFeeListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve', 'destroy']: + return serializers.FreightGetSerializer + elif self.action == 'create': + return serializers.FreightPostSerializer + elif self.action == 'update': + return serializers.FreightUpdateSerializer + elif self.action == 'partial_update': + return serializers.FreightPartialUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, *args, **kwargs): + data = self.request.data + data['openid'] = self.request.auth.openid + serializer = self.get_serializer(data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot Update Data Which Not Yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def partial_update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot Partial Update Data Which Not Yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data, partial=True) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def destroy(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot Delete Data Which Not Yours"}) + else: + qs.is_delete = True + qs.save() + serializer = self.get_serializer(qs, many=False) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + +class FreightfileDownloadView(viewsets.ModelViewSet): + renderer_classes = (FreightfileRenderCN, ) + tuple(api_settings.DEFAULT_RENDERER_CLASSES) + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = TransportationFeeListFilter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return TransportationFeeListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return TransportationFeeListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return TransportationFeeListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return serializers.FreightfileRenderSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def get_lang(self, data): + lang = self.request.META.get('HTTP_LANGUAGE') + if lang: + if lang == 'zh-hans': + return FreightfileRenderCN().render(data) + else: + return FreightfileRenderEN().render(data) + else: + return FreightfileRenderEN().render(data) + + def list(self, request, *args, **kwargs): + from datetime import datetime + dt = datetime.now() + data = ( + serializers.FreightfileRenderSerializer(instance).data + for instance in self.filter_queryset(self.get_queryset()) + ) + renderer = self.get_lang(data) + response = StreamingHttpResponse( + renderer, + content_type="text/csv" + ) + response['Content-Disposition'] = "attachment; filename='freight_{}.csv'".format(str(dt.strftime('%Y%m%d%H%M%S%f'))) + return response diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..58422425 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,59 @@ +asgiref==3.3.1 +attrs==20.3.0 +autobahn==21.3.1 +Automat==20.2.0 +autopep8==1.5.6 +certifi==2020.12.5 +cffi==1.14.5 +chardet==4.0.0 +constantly==15.1.0 +coreapi==2.3.3 +coreschema==0.0.4 +cryptography==3.4.6 +daphne==3.0.2 +Django==3.1.14 +django-cors-headers==3.7.0 +django-filter==2.4.0 +django-silk==4.2.0 +djangorestframework==3.12.4 +djangorestframework-csv==2.1.1 +drf-yasg==1.20.0 +et-xmlfile==1.1.0 +gprof2dot==2019.11.30 +h2==3.2.0 +hpack==3.0.0 +hyperframe==5.2.0 +hyperlink==21.0.0 +idna==2.9 +incremental==21.3.0 +inflection==0.5.1 +itypes==1.2.0 +Jinja2==2.11.3 +MarkupSafe==1.1.1 +numpy==1.21.2 +openpyxl==3.0.9 +packaging==20.8 +pandas==1.3.3 +priority==1.3.0 +pyasn1==0.4.8 +pyasn1-modules==0.2.8 +pycodestyle==2.7.0 +pycparser==2.20 +Pygments==2.9.0 +PyHamcrest==2.0.2 +pyOpenSSL==20.0.1 +pyparsing==2.4.7 +python-dateutil==2.8.1 +pytz==2021.1 +requests==2.25.1 +ruamel.yaml==0.16.12 +service-identity==18.1.0 +six==1.15.0 +sqlparse==0.4.1 +toml==0.10.2 +Twisted==20.3.0 +txaio==21.2.1 +unicodecsv==0.14.1 +uritemplate==3.0.1 +urllib3==1.26.5 +zope.interface==5.2.0 diff --git a/scanner/__init__.py b/scanner/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/scanner/admin.py b/scanner/admin.py new file mode 100644 index 00000000..c9f86026 --- /dev/null +++ b/scanner/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from . models import ListModel + +admin.site.register(ListModel) diff --git a/scanner/apps.py b/scanner/apps.py new file mode 100644 index 00000000..efb7efe8 --- /dev/null +++ b/scanner/apps.py @@ -0,0 +1,4 @@ +from django.apps import AppConfig + +class ScannerConfig(AppConfig): + name = 'scanner' diff --git a/scanner/filter.py b/scanner/filter.py new file mode 100644 index 00000000..f222fcb1 --- /dev/null +++ b/scanner/filter.py @@ -0,0 +1,12 @@ +from django_filters import FilterSet +from .models import ListModel + +class Filter(FilterSet): + class Meta: + model = ListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "bar_code": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } + diff --git a/scanner/migrations/__init__.py b/scanner/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/scanner/models.py b/scanner/models.py new file mode 100644 index 00000000..789a73b2 --- /dev/null +++ b/scanner/models.py @@ -0,0 +1,18 @@ +from django.db import models + +class ListModel(models.Model): + mode = models.CharField(max_length=255, verbose_name="Request Mode") + code = models.CharField(max_length=255, verbose_name="Request Code") + bar_code = models.CharField(max_length=255, verbose_name="Bar Code") + openid = models.CharField(max_length=255, verbose_name="Openid") + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'scanner' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['-id'] + + def __str__(self): + return self.pk diff --git a/scanner/serializers.py b/scanner/serializers.py new file mode 100644 index 00000000..2eb96996 --- /dev/null +++ b/scanner/serializers.py @@ -0,0 +1,51 @@ +from rest_framework import serializers +from .models import ListModel +from utils import datasolve +from dn.models import DnDetailModel +import time +from stock.models import StockBinModel + + +class ListGetSerializer(serializers.ModelSerializer): + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + request_time = serializers.SerializerMethodField() + + class Meta: + model = ListModel + exclude = ['openid'] + read_only_fields = ['id', ] + + def get_request_time(self, obj): + return time.time() + + +class SannerDnDetailPickingListGetSerializer(serializers.ModelSerializer): + dn_code = serializers.CharField(read_only=True, required=False) + dn_status = serializers.IntegerField(read_only=True, required=False) + customer = serializers.CharField(read_only=True, required=False) + goods_code = serializers.CharField(read_only=True, required=False) + goods_qty = serializers.IntegerField(read_only=True, required=False) + pick_qty = serializers.IntegerField(read_only=True, required=False) + picked_qty = serializers.IntegerField(read_only=True, required=False) + intransit_qty = serializers.IntegerField(read_only=True, required=False) + delivery_actual_qty = serializers.IntegerField(read_only=True, required=False) + delivery_shortage_qty = serializers.IntegerField(read_only=True, required=False) + delivery_more_qty = serializers.IntegerField(read_only=True, required=False) + delivery_damage_qty = serializers.IntegerField(read_only=True, required=False) + goods_weight = serializers.FloatField(read_only=True, required=False) + goods_volume = serializers.FloatField(read_only=True, required=False) + goods_cost = serializers.FloatField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + back_order_label = serializers.BooleanField(read_only=True, required=False) + + class Meta: + model = DnDetailModel + fields=['dn_code','dn_status','customer','goods_code','goods_qty','goods_qty','pick_qty','picked_qty','intransit_qty','delivery_actual_qty','delivery_shortage_qty','delivery_more_qty','delivery_damage_qty','goods_weight','goods_volume','goods_cost','creater','create_time','update_time','back_order_label'] + read_only_fields = ['id', 'openid'] + + + diff --git a/scanner/tests.py b/scanner/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/scanner/urls.py b/scanner/urls.py new file mode 100644 index 00000000..9a0e4a3c --- /dev/null +++ b/scanner/urls.py @@ -0,0 +1,8 @@ +from django.urls import path +from . import views + +urlpatterns = [ +path(r'', views.ListViewSet.as_view({"get": "list"}), name="scanner"), +path(r'list//', views.SannerView.as_view({"get": "retrieve"})), +path(r'sanerpicking/' , views.SannerDnDetailPickingListView.as_view({"get":"list"}),name="sanerpicking"), +] diff --git a/scanner/views.py b/scanner/views.py new file mode 100644 index 00000000..51fecef6 --- /dev/null +++ b/scanner/views.py @@ -0,0 +1,125 @@ +from dateutil.relativedelta import relativedelta +from django.http import StreamingHttpResponse +from django.utils import timezone +from .models import ListModel +from rest_framework import viewsets +from . import serializers +from utils.page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from .filter import Filter +from rest_framework.generics import RetrieveAPIView,GenericAPIView +from rest_framework.viewsets import ViewSetMixin +from rest_framework.response import Response +from rest_framework.exceptions import APIException + +from stock.models import StockBinModel +from dn.models import DnDetailModel +from dn.filter import DnDetailFilter + +class SannerDnDetailPickingListView(viewsets.ModelViewSet): + """ + list: + Response a data list(all) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = DnDetailFilter + + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return DnDetailModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return DnDetailModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return DnDetailModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve', 'destroy']: + return serializers.SannerDnDetailPickingListGetSerializer + else: + return self.http_method_not_allowed(request=self.request) + +class ListViewSet(viewsets.ModelViewSet): + """ + list: + Response a data list(all) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return serializers.ListGetSerializer + else: + return self.http_method_not_allowed(request=self.request) + + + +class SannerView(viewsets.ModelViewSet): + """ + Retrieve: + Response a data retrieve + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + lookup_field = 'bar_code' + def get_project(self): + try: + bar_code = self.kwargs['bar_code'] + return bar_code + except: + return None + + def get_queryset(self): + bar_code = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, bar_code=bar_code) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['retrieve']: + return serializers.ListGetSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def retrieve(self, request, *args, **kwargs): + instance = self.get_object() + serializer = self.get_serializer(instance) + return Response(serializer.data) \ No newline at end of file diff --git a/shopid/__init__.py b/shopid/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/shopid/admin.py b/shopid/admin.py new file mode 100644 index 00000000..9be7ee8e --- /dev/null +++ b/shopid/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from shopid.models.douyinmodels import ListModel as douyin + +admin.site.register(douyin) diff --git a/shopid/apps.py b/shopid/apps.py new file mode 100644 index 00000000..7b780049 --- /dev/null +++ b/shopid/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class ShopidConfig(AppConfig): + name = 'shopid' diff --git a/shopid/files/douyinfiles.py b/shopid/files/douyinfiles.py new file mode 100644 index 00000000..fb778a84 --- /dev/null +++ b/shopid/files/douyinfiles.py @@ -0,0 +1,33 @@ +from rest_framework_csv.renderers import CSVStreamingRenderer + +def file_headers(): + return [ + 'shop_name', + 'shop_mode', + 'shop_appid', + 'shop_app_secret', + 'shop_id', + 'sandbox', + 'proxy', + 'proxy_ip', + 'create_time', + 'update_time' + ] + +def cn_data_header(): + return dict([ + ('shop_name', u'店铺名称'), + ('shop_mode', u'所属平台'), + ('shop_appid', u'Appid'), + ('shop_app_secret', u'App Secret'), + ('shop_id', u'店铺ID'), + ('sandbox', u'沙箱环境'), + ('proxy', u'代理IP'), + ('proxy_ip', u'代理IP地址'), + ('create_time', u'创建时间'), + ('update_time', u'更新时间') + ]) + +class DouYinfileRenderCN(CSVStreamingRenderer): + header = file_headers() + labels = cn_data_header() diff --git a/shopid/filter/__init__.py b/shopid/filter/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/shopid/filter/douyinfilter.py b/shopid/filter/douyinfilter.py new file mode 100644 index 00000000..26ebd0e7 --- /dev/null +++ b/shopid/filter/douyinfilter.py @@ -0,0 +1,20 @@ +from django_filters import FilterSet +from shopid.models.douyinmodels import ListModel + +class Filter(FilterSet): + class Meta: + model = ListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "openid": ['exact', 'iexact', 'contains', 'icontains'], + "appid": ['exact', 'iexact', 'contains', 'icontains'], + "shop_mode": ['exact', 'iexact', 'contains', 'icontains'], + "shop_appid": ['exact', 'iexact', 'contains', 'icontains'], + "shop_app_secret": ['exact', 'iexact', 'contains', 'icontains'], + "shop_id": ['exact', 'iexact', 'contains', 'icontains'], + "sandbox": ['exact', 'iexact'], + "proxy": ['exact', 'iexact'], + "t_code": ['exact', 'iexact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } \ No newline at end of file diff --git a/shopid/migrations/__init__.py b/shopid/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/shopid/models/__init__.py b/shopid/models/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/shopid/models/douyinmodels.py b/shopid/models/douyinmodels.py new file mode 100644 index 00000000..3e77217b --- /dev/null +++ b/shopid/models/douyinmodels.py @@ -0,0 +1,25 @@ +from django.db import models + +class ListModel(models.Model): + openid = models.CharField(max_length=255, verbose_name="user appid") + appid = models.CharField(max_length=255, verbose_name="user appid") + shop_name = models.CharField(max_length=32, verbose_name="店铺名称") + shop_mode = models.CharField(max_length=32, verbose_name="店铺平台") + shop_appid = models.CharField(max_length=255, verbose_name="店铺appid") + shop_app_secret = models.CharField(max_length=255, verbose_name="店铺app secret") + shop_id = models.CharField(max_length=255, verbose_name='店铺id') + sandbox = models.IntegerField(default=1, verbose_name='沙箱') + proxy = models.IntegerField(default=0, verbose_name='是否代理ip') + proxy_ip = models.JSONField(default=dict, verbose_name='代理ip') + t_code = models.CharField(max_length=255, verbose_name="唯一值") + create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="更新时间") + + class Meta: + db_table = 'douyinshop' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['id'] + + def __str__(self): + return self.pk diff --git a/shopid/serializers/__init__.py b/shopid/serializers/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/shopid/serializers/douyinserializers.py b/shopid/serializers/douyinserializers.py new file mode 100644 index 00000000..191eeb5f --- /dev/null +++ b/shopid/serializers/douyinserializers.py @@ -0,0 +1,36 @@ +from rest_framework import serializers +from shopid.models.douyinmodels import ListModel + +class DouYinGetSerializer(serializers.ModelSerializer): + shop_name = serializers.CharField(read_only=True, required=False) + shop_mode = serializers.CharField(read_only=True, required=False) + shop_appid = serializers.CharField(read_only=True, required=False) + shop_app_secret = serializers.CharField(read_only=True, required=False) + shop_id = serializers.CharField(read_only=True, required=False) + sandbox = serializers.IntegerField(read_only=True, required=False) + proxy = serializers.IntegerField(read_only=True, required=False) + proxy_ip = serializers.JSONField(read_only=True, required=False) + t_code = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = ListModel + exclude = ['openid', 'appid', ] + read_only_fields = ['id'] + +class DouYinfileRenderSerializer(serializers.ModelSerializer): + shop_name = serializers.CharField(read_only=True, required=False) + shop_mode = serializers.CharField(read_only=True, required=False) + shop_appid = serializers.CharField(read_only=True, required=False) + shop_app_secret = serializers.CharField(read_only=True, required=False) + shop_id = serializers.CharField(read_only=True, required=False) + sandbox = serializers.IntegerField(read_only=True, required=False) + proxy = serializers.IntegerField(read_only=True, required=False) + proxy_ip = serializers.JSONField(read_only=True, required=False) + t_code = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = ListModel + exclude = ['openid', 'appid', ] + read_only_fields = ['id'] diff --git a/shopid/tests.py b/shopid/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/shopid/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/shopid/urls.py b/shopid/urls.py new file mode 100644 index 00000000..ce282fde --- /dev/null +++ b/shopid/urls.py @@ -0,0 +1,14 @@ +from django.urls import path, re_path +from .views.doudian.doudian import DouYinInitAPI, DouYinfileDownloadView +from .views.doudian.sandbox import DouYinSandBoxAPI +from .views.doudian.proxy import DouYinProxyAPI + +urlpatterns = [ +path(r'douyin/', DouYinInitAPI.as_view({"get": "list", "post": "create"}), name="douyin_init"), +re_path(r'^douyin/(?P\d+)/$', DouYinInitAPI.as_view({ + 'delete': 'destroy' +}), name="douyin_init_1"), +path(r'douyin/sandbox/', DouYinSandBoxAPI.as_view({"post": "create"}), name="douyin_sandbox"), +path(r'douyin/proxy/', DouYinProxyAPI.as_view({"post": "create"}), name="douyin_proxy"), +path(r'douyin/file/', DouYinfileDownloadView.as_view({"get": "list"}), name="DouYinfileDownload"), +] diff --git a/shopid/views/__init__.py b/shopid/views/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/shopid/views/doudian/__init__.py b/shopid/views/doudian/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/shopid/views/doudian/doudian.py b/shopid/views/doudian/doudian.py new file mode 100644 index 00000000..6a99e194 --- /dev/null +++ b/shopid/views/doudian/doudian.py @@ -0,0 +1,144 @@ +from rest_framework import viewsets +from shopid.models.douyinmodels import ListModel +from utils.page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from shopid.filter.douyinfilter import Filter +from rest_framework.exceptions import APIException +from utils.md5 import Md5 +from shopid.files.douyinfiles import DouYinfileRenderCN +from rest_framework.settings import api_settings +from shopid.serializers.douyinserializers import DouYinfileRenderSerializer +from django.http import StreamingHttpResponse + +class DouYinInitAPI(viewsets.ModelViewSet): + """ + list: + 获得该企业的所有抖音店铺列表 + create: + 创建一个店铺 + delete: + 删除一个店铺 + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(shop_mode="douyin") + else: + return ListModel.objects.filter(shop_mode="douyin", id=id) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'create', 'destroy']: + return DouYinfileRenderSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, *args, **kwargs): + data = self.request.data + if 'shop_name' not in data: + raise APIException({'detail': '请提交该店铺的店铺名称'}) + if 'shop_appid' not in data: + raise APIException({'detail': '请提交该店铺的appid'}) + if 'shop_app_secret' not in data: + raise APIException({'detail': '请提交该店铺的shop_app_secret'}) + if 'shop_id' not in data: + raise APIException({'detail': '请提交该店铺的shop_id'}) + if ListModel.objects.filter(openid=self.request.auth.openid, + appid=self.request.auth.appid, + shop_name=data['shop_name'], + shop_mode='douyin', + shop_appid=data['shop_appid'], + shop_app_secret=data['shop_app_secret'], + shop_id=data['shop_id']).exists(): + raise APIException({"detail": "数据已经存在"}) + else: + t_code = Md5.md5(data['shop_appid']) + ListModel.objects.create(openid=self.request.auth.openid, + appid=self.request.auth.appid, + shop_name=data['shop_name'], + shop_mode='douyin', + shop_appid=str(data['shop_appid']), + shop_app_secret=str(data['shop_app_secret']), + shop_id=str(data['shop_id']), + t_code=t_code) + data['result'] = 'success' + data['t_code'] = t_code + return Response(data, status=200) + + def destroy(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "不可以删除别人的数据"}) + else: + qs.delete() + return Response({"result": "该商店已经删除"}) + +class DouYinfileDownloadView(viewsets.ModelViewSet): + renderer_classes = (DouYinfileRenderCN, ) + tuple(api_settings.DEFAULT_RENDERER_CLASSES) + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return DouYinfileRenderSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def get_lang(self, data): + lang = self.request.META.get('HTTP_LANGUAGE') + if lang: + if lang == 'zh-hans': + return DouYinfileRenderCN().render(data) + else: + return DouYinfileRenderCN().render(data) + else: + return DouYinfileRenderCN().render(data) + + def list(self, request, *args, **kwargs): + from datetime import datetime + dt = datetime.now() + data = ( + DouYinfileRenderSerializer(instance).data + for instance in self.filter_queryset(self.get_queryset()) + ) + renderer = self.get_lang(data) + response = StreamingHttpResponse( + renderer, + content_type="text/csv" + ) + response['Content-Disposition'] = "attachment; filename='freight_{}.csv'".format(str(dt.strftime('%Y%m%d%H%M%S%f'))) + return response \ No newline at end of file diff --git a/shopid/views/doudian/proxy.py b/shopid/views/doudian/proxy.py new file mode 100644 index 00000000..a43bbfb0 --- /dev/null +++ b/shopid/views/doudian/proxy.py @@ -0,0 +1,46 @@ +from rest_framework import viewsets +from shopid.models.douyinmodels import ListModel +from utils.page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from shopid.filter.douyinfilter import Filter +from rest_framework.exceptions import APIException + +class DouYinProxyAPI(viewsets.ModelViewSet): + """ + create: + 是否开启代理IP,Int类型,1为开启代理,0为关闭代理 + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_queryset(self): + if self.request.user: + return ListModel.objects.filter(openid=self.request.auth.openid) + else: + return ListModel.objects.none() + + def create(self, request, *args, **kwargs): + data = self.request.data + if 't_code' not in data: + raise APIException({'detail': '请提交该店铺的唯一值'}) + if 'proxy' not in data: + raise APIException({'detail': '代理开启还是关闭,开启是1,关闭是0'}) + if 'proxy' in data: + qs = ListModel.objects.filter(t_code=data['t_code']) + if int(data['proxy']) == 0: + qs.update(proxy=0, proxy_ip={}) + data['result'] = 'success' + return Response(data, status=200) + elif int(data['proxy']) == 1: + if 'proxy_ip' not in data: + raise APIException({'detail': '请输入代理ip,是个json格式{}'}) + else: + qs.update(proxy=1, proxy_ip=data['proxy_ip']) + data['result'] = 'success' + return Response(data, status=200) + else: + raise APIException({'detail': '请proxy调整成开启还是关闭,开启是1,关闭是0'}) \ No newline at end of file diff --git a/shopid/views/doudian/sandbox.py b/shopid/views/doudian/sandbox.py new file mode 100644 index 00000000..923a31b8 --- /dev/null +++ b/shopid/views/doudian/sandbox.py @@ -0,0 +1,41 @@ +from rest_framework import viewsets +from shopid.models.douyinmodels import ListModel +from utils.page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from shopid.filter.douyinfilter import Filter +from rest_framework.exceptions import APIException + +class DouYinSandBoxAPI(viewsets.ModelViewSet): + """ + create: + 沙箱环境,Int类型,1为沙箱环境,0为正式环境 + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_queryset(self): + if self.request.user: + return ListModel.objects.filter(openid=self.request.auth.openid) + else: + return ListModel.objects.none() + + def create(self, request, *args, **kwargs): + data = self.request.data + if 't_code' not in data: + raise APIException({'detail': '请提交该店铺的唯一值'}) + if 'sandbox' not in data: + raise APIException({'detail': '请sandbox调整成开启还是关闭,开始是1,关闭是0'}) + if 'sandbox' in data: + if int(data['sandbox']) != 0 or int(data['sandbox']) != 1: + raise APIException({'detail': '沙箱环境只接受1,或者0'}) + qs = ListModel.objects.filter(t_code=data['t_code']) + if qs.exists(): + qs.update(sandbox=int(data['sandbox'])) + data['result'] = 'success' + return Response(data, status=200) + else: + raise APIException({"detail": "店铺不存在"}) \ No newline at end of file diff --git a/staff/__init__.py b/staff/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/staff/admin.py b/staff/admin.py new file mode 100644 index 00000000..c9f86026 --- /dev/null +++ b/staff/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from . models import ListModel + +admin.site.register(ListModel) diff --git a/staff/apps.py b/staff/apps.py new file mode 100644 index 00000000..ce0c02ce --- /dev/null +++ b/staff/apps.py @@ -0,0 +1,43 @@ +from django.apps import AppConfig +from django.db.models.signals import post_migrate + +class StaffConfig(AppConfig): + name = 'staff' + def ready(self): + post_migrate.connect(do_init_data, sender=self) + +def do_init_data(sender, **kwargs): + init_category() + +def init_category(): + """ + :return:None + """ + try: + from .models import TypeListModel as ls + if ls.objects.filter(openid__iexact='init_data').exists(): + if ls.objects.filter(openid__iexact='init_data').count() != 7: + ls.objects.filter(openid__iexact='init_data').delete() + init_data = [ + ls(id=1, openid='init_data', staff_type='Manager', creater='GreaterWMS'), + ls(id=2, openid='init_data', staff_type='Supplier', creater='GreaterWMS'), + ls(id=3, openid='init_data', staff_type='Customer', creater='GreaterWMS'), + ls(id=4, openid='init_data', staff_type='Supervisor', creater='GreaterWMS'), + ls(id=5, openid='init_data', staff_type='Inbound', creater='GreaterWMS'), + ls(id=6, openid='init_data', staff_type='Outbound', creater='GreaterWMS'), + ls(id=7, openid='init_data', staff_type='StockControl', creater='GreaterWMS') + ] + ls.objects.bulk_create(init_data, batch_size=100) + else: + init_data = [ + ls(id=1, openid='init_data', staff_type='Manager', creater='GreaterWMS'), + ls(id=2, openid='init_data', staff_type='Supplier', creater='GreaterWMS'), + ls(id=3, openid='init_data', staff_type='Customer', creater='GreaterWMS'), + ls(id=4, openid='init_data', staff_type='Supervisor', creater='GreaterWMS'), + ls(id=5, openid='init_data', staff_type='Inbound', creater='GreaterWMS'), + ls(id=6, openid='init_data', staff_type='Outbound', creater='GreaterWMS'), + ls(id=7, openid='init_data', staff_type='StockControl', creater='GreaterWMS') + ] + ls.objects.bulk_create(init_data, batch_size=100) + except: + pass diff --git a/staff/files.py b/staff/files.py new file mode 100644 index 00000000..a51d4239 --- /dev/null +++ b/staff/files.py @@ -0,0 +1,33 @@ +from rest_framework_csv.renderers import CSVStreamingRenderer + +def file_headers(): + return [ + 'staff_name', + 'staff_type', + 'create_time', + 'update_time' + ] + +def cn_data_header(): + return dict([ + ('staff_name', u'员工用户名'), + ('staff_type', u'员工类型'), + ('create_time', u'创建时间'), + ('update_time', u'更新时间') + ]) + +def en_data_header(): + return dict([ + ('staff_name', u'Staff Name'), + ('staff_type', u'Staff Type'), + ('create_time', u'Create Time'), + ('update_time', u'Update Time'), + ]) + +class FileRenderCN(CSVStreamingRenderer): + header = file_headers() + labels = cn_data_header() + +class FileRenderEN(CSVStreamingRenderer): + header = file_headers() + labels = en_data_header() diff --git a/staff/filter.py b/staff/filter.py new file mode 100644 index 00000000..697d74cf --- /dev/null +++ b/staff/filter.py @@ -0,0 +1,24 @@ +from django_filters import FilterSet +from .models import ListModel, TypeListModel + +class Filter(FilterSet): + class Meta: + model = ListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "staff_name": ['exact', 'iexact', 'contains', 'icontains'], + "staff_type": ['exact', 'iexact', 'contains', 'icontains'], + "check_code": ['exact'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } + +class TypeFilter(FilterSet): + class Meta: + model = TypeListModel + fields = { + "id": ['exact', 'iexact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], + "staff_type": ['exact', 'iexact', 'contains', 'icontains'], + "create_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'], + "update_time": ['year', 'month', 'day', 'week_day', 'gt', 'gte', 'lt', 'lte', 'range'] + } diff --git a/staff/migrations/__init__.py b/staff/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/staff/models.py b/staff/models.py new file mode 100644 index 00000000..f94b6c6d --- /dev/null +++ b/staff/models.py @@ -0,0 +1,36 @@ +from django.db import models + +class ListModel(models.Model): + staff_name = models.CharField(max_length=255, verbose_name="Staff Name") + staff_type = models.CharField(max_length=255, verbose_name="Staff Type") + check_code = models.IntegerField(default=8888, verbose_name="Check Code") + openid = models.CharField(max_length=255, verbose_name="Openid") + is_delete = models.BooleanField(default=False, verbose_name='Delete Label') + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + error_check_code_counter = models.IntegerField(default=0,verbose_name='check_code error counter') + is_lock = models.BooleanField(default=False,verbose_name='Whether the lock') + class Meta: + db_table = 'staff' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['staff_name'] + + def __str__(self): + return self.pk + +class TypeListModel(models.Model): + staff_type = models.CharField(max_length=255, verbose_name="Staff Type") + openid = models.CharField(max_length=255, verbose_name="Openid") + creater = models.CharField(max_length=255, verbose_name="Creater") + create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") + update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") + + class Meta: + db_table = 'stafftype' + verbose_name = 'data id' + verbose_name_plural = "data id" + ordering = ['staff_type'] + + def __str__(self): + return self.pk diff --git a/staff/serializers.py b/staff/serializers.py new file mode 100644 index 00000000..e4029328 --- /dev/null +++ b/staff/serializers.py @@ -0,0 +1,61 @@ +from rest_framework import serializers +from .models import ListModel, TypeListModel +from utils import datasolve + +class StaffGetSerializer(serializers.ModelSerializer): + staff_name = serializers.CharField(read_only=True, required=False) + staff_type = serializers.CharField(read_only=True, required=False) + check_code = serializers.IntegerField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', ] + +class StaffPostSerializer(serializers.ModelSerializer): + openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate]) + staff_name = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + staff_type = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + check_code = serializers.IntegerField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class StaffUpdateSerializer(serializers.ModelSerializer): + staff_name = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + staff_type = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class StaffPartialUpdateSerializer(serializers.ModelSerializer): + staff_name = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + staff_type = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate]) + class Meta: + model = ListModel + exclude = ['openid', 'is_delete', ] + read_only_fields = ['id', 'create_time', 'update_time', ] + +class FileRenderSerializer(serializers.ModelSerializer): + staff_name = serializers.CharField(read_only=False, required=False) + staff_type = serializers.CharField(read_only=False, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + + class Meta: + model = ListModel + ref_name = 'StaffFileRenderSerializer' + exclude = ['openid', 'is_delete', ] + +class StaffTypeGetSerializer(serializers.ModelSerializer): + staff_type = serializers.CharField(read_only=True, required=False) + creater = serializers.CharField(read_only=True, required=False) + create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S') + class Meta: + model = TypeListModel + exclude = ['openid'] + read_only_fields = ['id', ] diff --git a/staff/tests.py b/staff/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/staff/urls.py b/staff/urls.py new file mode 100644 index 00000000..c628e5bf --- /dev/null +++ b/staff/urls.py @@ -0,0 +1,14 @@ +from django.urls import path, re_path +from . import views + +urlpatterns = [ +path(r'', views.APIViewSet.as_view({"get": "list", "post": "create"}), name="staff"), +path(r'type/', views.TypeAPIViewSet.as_view({"get": "list"}), name="stafftype"), +path(r'file/', views.FileDownloadView.as_view({"get": "list"}), name="stafffiledownload"), +re_path(r'^(?P\d+)/$', views.APIViewSet.as_view({ + 'get': 'retrieve', + 'put': 'update', + 'patch': 'partial_update', + 'delete': 'destroy' +}), name="staff_1") +] diff --git a/staff/views.py b/staff/views.py new file mode 100644 index 00000000..3e008e6b --- /dev/null +++ b/staff/views.py @@ -0,0 +1,229 @@ +from rest_framework import viewsets +from .models import ListModel, TypeListModel +from . import serializers +from utils.page import MyPageNumberPagination +from rest_framework.filters import OrderingFilter +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.response import Response +from .filter import Filter, TypeFilter +from rest_framework.exceptions import APIException +from .serializers import FileRenderSerializer +from django.http import StreamingHttpResponse +from .files import FileRenderCN, FileRenderEN +from rest_framework.settings import api_settings + + +class APIViewSet(viewsets.ModelViewSet): + """ + retrieve: + Response a data list(get) + + list: + Response a data list(all) + + create: + Create a data line(post) + + delete: + Delete a data line(delete) + + partial_update: + Partial_update a data(patch:partial_update) + + update: + Update a data(put:update) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def list(self, request, *args, **kwargs): + staff_name = str(request.GET.get('staff_name')) + check_code = request.GET.get('check_code') + if staff_name == None and check_code == None: + return super().list(request, *args, **kwargs) + elif staff_name != None and check_code == None: + return super().list(request, *args, **kwargs) + else: + staff_name_obj = ListModel.objects.filter(openid=self.request.auth.openid, staff_name=staff_name, + is_delete=False).first() + if staff_name_obj is None: + raise APIException({"detail": "The user name does not exist"}) + elif staff_name_obj.is_lock is True: + raise APIException({"detail": "The user has been locked. Please contact the administrator"}) + elif staff_name_obj.error_check_code_counter == 3: + staff_name_obj.is_lock = True + staff_name_obj.error_check_code_counter = 0 + staff_name_obj.save() + raise APIException({"detail": "The user has been locked. Please contact the administrator"}) + + if type(check_code) == str: + check_code = int(check_code) + if check_code != None: + if staff_name_obj.check_code != check_code: + staff_name_obj.error_check_code_counter = int(staff_name_obj.error_check_code_counter) + 1 + staff_name_obj.save() + raise APIException({"detail": "The verification code is incorrect"}) + else: + staff_name_obj.error_check_code_counter = 0 + staff_name_obj.save() + return super().list(request, *args, **kwargs) + else: + return super().list(request, *args, **kwargs) + + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list', 'retrieve', 'destroy']: + return serializers.StaffGetSerializer + elif self.action in ['create']: + return serializers.StaffPostSerializer + elif self.action in ['update']: + return serializers.StaffUpdateSerializer + elif self.action in ['partial_update']: + return serializers.StaffPartialUpdateSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def create(self, request, *args, **kwargs): + data = self.request.data + data['openid'] = self.request.auth.openid + if ListModel.objects.filter(openid=data['openid'], staff_name=data['staff_name'], is_delete=False).exists(): + raise APIException({"detail": "Data exists"}) + else: + serializer = self.get_serializer(data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot Update Data Which Not Yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def partial_update(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot Partial Update Data Which Not Yours"}) + else: + data = self.request.data + serializer = self.get_serializer(qs, data=data, partial=True) + serializer.is_valid(raise_exception=True) + serializer.save() + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + def destroy(self, request, pk): + qs = self.get_object() + if qs.openid != self.request.auth.openid: + raise APIException({"detail": "Cannot Delete Data Which Not Yours"}) + else: + qs.is_delete = True + qs.save() + serializer = self.get_serializer(qs, many=False) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=200, headers=headers) + + +class TypeAPIViewSet(viewsets.ModelViewSet): + """ + list: + Response a data list(all) + """ + pagination_class = MyPageNumberPagination + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = TypeFilter + + def get_queryset(self): + if self.request.user: + return TypeListModel.objects.filter(openid='init_data') + else: + return TypeListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return serializers.StaffTypeGetSerializer + else: + return self.http_method_not_allowed(request=self.request) + + +class FileDownloadView(viewsets.ModelViewSet): + renderer_classes = (FileRenderCN,) + tuple(api_settings.DEFAULT_RENDERER_CLASSES) + filter_backends = [DjangoFilterBackend, OrderingFilter, ] + ordering_fields = ['id', "create_time", "update_time", ] + filter_class = Filter + + def get_project(self): + try: + id = self.kwargs.get('pk') + return id + except: + return None + + def get_queryset(self): + id = self.get_project() + if self.request.user: + if id is None: + return ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False) + else: + return ListModel.objects.filter(openid=self.request.auth.openid, id=id, is_delete=False) + else: + return ListModel.objects.none() + + def get_serializer_class(self): + if self.action in ['list']: + return serializers.FileRenderSerializer + else: + return self.http_method_not_allowed(request=self.request) + + def get_lang(self, data): + lang = self.request.META.get('HTTP_LANGUAGE') + if lang: + if lang == 'zh-hans': + return FileRenderCN().render(data) + else: + return FileRenderEN().render(data) + else: + return FileRenderEN().render(data) + + def list(self, request, *args, **kwargs): + from datetime import datetime + dt = datetime.now() + data = ( + FileRenderSerializer(instance).data + for instance in self.filter_queryset(self.get_queryset()) + ) + renderer = self.get_lang(data) + response = StreamingHttpResponse( + renderer, + content_type="text/csv" + ) + response['Content-Disposition'] = "attachment; filename='staff_{}.csv'".format( + str(dt.strftime('%Y%m%d%H%M%S%f'))) + return response diff --git a/static/__init__.py b/static/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/static/img/contact.png b/static/img/contact.png new file mode 100644 index 0000000000000000000000000000000000000000..2cf28c77ed729915a22ae50e13587ae185a48477 GIT binary patch literal 7043 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 literal 0 HcmV?d00001 diff --git a/static/img/dongtai.png b/static/img/dongtai.png new file mode 100644 index 0000000000000000000000000000000000000000..d806b34943807343050b8237941e05a1282fa3ec GIT binary patch literal 4694 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 literal 0 HcmV?d00001 diff --git a/static/img/dongtai1.png b/static/img/dongtai1.png new file mode 100644 index 0000000000000000000000000000000000000000..ef047dec18e0b255092728b152b3ba05d403512e GIT binary patch literal 11517 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 literal 0 HcmV?d00001 diff --git a/static/img/github.png b/static/img/github.png new file mode 100644 index 0000000000000000000000000000000000000000..6409563649bc0ca40983c39551408b94613e9aff GIT binary patch literal 7195 zcmW+*c|26#|DG9ZktIvnw=uGdu}iYfV5n@_38N9&cQF!?EOW<_L5e{k`@Vl#FxHGM z6v{+o9U}YB_xH!S=bv-mulqdr{eGVJIVb71nbD<-ycaCc}g z{vIQer*+2*UqdFEJ2x#-_4=-x^B5PJa`_kDTC#oKS3ykW3?^C{A^JHl znE~_`8E=C0FXRJnZu46}p@A1AasoC2zn|G|E}wLs3G7AB-_VNe`qNUmAJKJoHfc9f zx6!fbyWTOW#AfSdq(gQDe-nGW0a}2$X{$PJpG`roMxA>8UjA{mKXQ{{>jr3EB0PMZ z!_JS+Ve7y~?AEylA!%%-t-kXDIo?H{%d!mMTlXGr7`~@WkdWxdW`l*}b$<=k#ACF4qyq7zD=3 zqc3x{S?0hOZ7$!u>%+8wOM>o8(PK*OA2W4lgYsw=;6TjkuD6$>HXcn^4YUI`19@He!ECc}sxxwk$djmwUFeYE5(EEEY(~adkIe0jEwQg(k788mW8OQZ`evW=v zQ6N_7a%?-qQMn`h%ua?M1AR}o5D#(!xh$SKl6%m*OrTyGwOEQr3g*)52d)UQmByrN zuoq3qb(V2hR!4J%SVVLOLBuVM97#slg+B1u#zbXBuzmT`zbLylXY7jYk`A%3Pr6fKm5gpub?>4s!HT~ExMT3{8b&QA$D%!oa)LR3) zk;K=ccEc**zFn}~`s%TU2`_S1{Dao(@&)( zka)q~_ExP@x~STIG`pJ8dyO}$7j*Hko2kl?z4W7dANBcrsZTSiiKH|)kRpD%X_Wgk3eg>)HEEL=Q$jB1YWoS5)`^X^foDHR2x53hsMm5 zaq0DcJcphS{wF`ceW#lg^7Ph18z@BhAcc`TUO0t#$wKPQtN}=TmhCdQU|B1k(&A%3 zrGWwJer3P|*P)V<}xq`(2EiwlX?=={t* zaI6gw<;KT>iH8GwV845O9K#xs@!fOK`I+4pyb`GAl~Fch97Bf@$=J{dGfY583SdaK z07nr?7toGOvE4;Tm8?%i*U5;0)~P&>Fp-TP*06)>lExxF5tMOhkRZ0fK2}NEk&{+X zm&z1u-WWngw7N-s_Zw-I!1p?b(K;B9N)Owt>K9s*iJz_%Z0WD&=?iL#DLloRNIY^b z9YB32*6et&2oCHAjWMc~?uxCJdEMs21ZbI#?IS0fAhC;x&bKUmXVE@3|v zq$a%$EE6ax-hY`4{wlkysrOb*+fxj58p5-qEUhQQYDo+3N<3<9)-IJcWW8LV>EuNN zV&LK-eo(2B2-mS%v@#@c&%1?4gzu{9Kywse!wVKG&iQ3>`n|m^j96AKfh)l*Bxmzx z!6y2J`g&9{%~yv*w@2@u!ezU9zr8i>II^T3=YWn|etlz<+XIDUXyv%S3o-%ZzbgUs^-cNiy4JJ6l?8diW?eyi@eU^A3|HbBI73WKxjT_6Xl-suBQZgYSnFo0WcA3h89ohj^udMb5iAY=bVc#0a zv^}B~(2*4-alJWVaNV@y1lfT9T{u0PwXYo(UD^CGk^*LqaX1({>*T@)lS2iTTI{A> zq4~ZQ+_-uPY}16|zujABKaV4z@_BPXf4O(km)wT+l#|KN57!V>%JUvx%@;%?klNMm zIOEmBhZ>sH%9NY1#G5w%aw*>o?8S3*U}+q(hqFS@T>i;?5<2UAaoiUJB_MF)KiNNn z(#8;v?CJAv&E_CDpu;gVzE@{Ix7Mk*Z_5>dH7@rbiJZnBG7B)8%-Z|M+f(~ zOgy7htLl!SGs)SFGfk$n0T*3_P9r8>VUC(Js9Y)H2e{pWB_6lo&g|0O`n#U0b?H4V z{dsj2sDn$$n^T@E3J}1deML~#{09Pv%&2+8iGhZzk_3y24>Pa7b(tMNR@zkiJmTgA zBMbH<9}g^D=!QYpi*F;0zaImskS#!0Y-;xReIVL!gzQQS?cnSFCb7$<;|C{wPfoRX z374$vvdQ7&7HIDYX~-WPe-J1bK?eb%tjYDgJ8%DNE!WR{m5waS5J?$}>5N)U9D?@| zG4#uJ4YZ;u%i(IIj_0P$Z082Ux=;>!Was{ce#V^)2L*hWdV=eDWSa{FspKZz&4AB+ zjQLgnAMf#F7%I+Xs#xkOMhg{rYfaOq)8gDs~@oRIVSrnOIs(IYjGKjG=m;A1K(F4ooWCa`RNjXA;8M!$UhFY zAEi8ku1jYY7cn9ZMX+u3O7k_k`}v#!iYahS@PqfJvz!V-=F~wKtY_dwQDKZMXt;y_ zP6%v8iHJL2BE+!uDX|Vx%}P?GYmm)VrUN5cX%+AfqiGgi-J&9kk$4uR{Ah`?JVb3u zJMEqA-x-d;E7pal-G;vU0TkEeubGDAa!|YW7O@ja)s9^sC_(Ay07be?ZI$()rBf&? zPjTpFOx{PS!^VvW==xlKu^S^IK;hNmYcDQlT7&`P_2}! z_7qD@!8b((IW&s2*pUYOiT-PiZp}p|d(4T^@rGZoeBp56f9@-BP@CE1aIXFQ$mORO z_h=JkrhpeenXd4ZrZ*xFuVHiU@ABoP-=NuOQH=X@jjZ)?nu8DSZEclewUa;5{moYq z0^}KqL@4}FLPqFy(`Gna1;qbF*e z_*j?O?jZ?%o#tKiq>6eMKHlHbh^mWlMQ221} zHozu-`qGf{WL91_p@xMBojqvRyYC z=+A?TeWk<9@FQ&?&2D2662Fi5NXn8VI?oukK84)cdI`b7N^i3`MuY}UHwUk!t^Py= zEXBF;n9PNg6Ipp7Zp(cYjI1Pf1S&8Jx{;gj?%b`=VWY`*;C}KIKlA_$Mpn`I=`fW^ zy!-Z%=+FJ%$rGME72u9B7kwPse-KAu&Kv&3gPe0Ahh=ViaUl1^R#qSWf5;HwMlpY= zI+>Vs^?eH;DN*nuPR?o52e*40w9JtE`vPo867-6DuzDf@MOP=EI|hOP8!RqfKfcnN z@>u(qAs0U&(tPf1!-Lbrd3=m~2}1|_Tw=l`aZ$%$bs&mNRA=qx##KPJ5Ww>Plw<5% zPbX=&rV=L1EJ8bxJIbKZVf|P7WCr{H|C-^6lOq>42XFGfoY9d~oI3*$J=I^^&4_5d zgmtEmTTsOJOnCcV8LVE$Ye~LDP3I-Br&Id5My0~eJ`lH)vz(hnNo6ht2zn2Df{_kz zV{<)L2wAC&;UpEh58Q3d!!~;0d3ANjCt!zf>8&5UObIt3ej=p^subXx=zhDgIGh%G z!i1HFSA`e$+{}S@(N%{id}I;l84{Aas(+#?@s{Cq)0E&0YWAr%@lzxT#7$=mVXnr$ zPNIpyko8R?qQS@`0S{Z3bEy~XE`M^%FCG~viH)RHS~CW44+k0I$_thd5%O41hTQM_ zrUYM5v$?`Y?_pl(nd)oDX<`B! z6s4Aa=VM8QIkon6qeq>Wz79DQ?0viFx$U#LIbt{nn~WBCvlOjvqca3D;@5sKIR&<4 zg<~FFTCidNFK}2IV4rV#@?nCt4tk(7#*oYYOC^r>cMQmH5zBp;ho%8We}1CToe;u9 zx<(v~0^Wl$otGAzZn?%tk<$LB{8rb`eMr2!(s8uxb$H3VNQ*0_&@67iUyGD4)u|HR z{F)K*+^(OTC@a0{Zhkj1!;rJf_kexK|E6t3s?HZGFU|PAM0lS|@icw6C&W3;flGGl z^SgdHG8gjC*lKY?VfZ65Iz)%p7ZRoZaj1bk zqE}I?Qi+uxZZ8RT$vmJZ9fiO8NK6{0w$BVkdeU#q$677j1LlbL3<*~tVWBP#K6Xw% zPn=)d4*uzuTEwjDlRYq5IJ6#Up5Q^gv{xfE!wt=6hMJhOG1_f-h_~|LcEgwEk@&fX zl@Pyyg(=atN!l(Qk3sw{1XOgdl}066X=ZGuFAHc56zVA_ZF$z-Ge-Rcga(~}?5PJ6)qo~gDz zca+YpE@gl{eLOy;G}?Ccl}{k1UoH$m|f=;G$T(FvPf!VZ@PtVS3|NJ z?}q|L*&CUf<4>@}UT|38Lf-;%XO2LL;Sxnf=pTt<8K$1NpTtF&f1enSw(BaZaOH;p zPL~#5r;6^11C^f|2`?Nlmoa;EUw&PV9?oqLLY96XA`3$R6?#7fP?e%1*SzMlEb$Z$ zpNfFnf11Bmt)xKnD@06E{?|MdrOE7FAbfv2xYqkfCdCm$_S*3WnadPOKCq8eZ%=a1 z9xiyIt3D%x96`8mON|Aq$5HS-sQbK_Ji4XkN-+iZt|qPZjEMW%Q}33_j3YEaky1BH z2<&<lbrIBsg}VhXj6ekEybj>H%BJKG{v8LA&s z6Prv-3neH=ffUY7{f!n1*ep`cQ)-CE4Dv4ba0s}1wZX9ZtRhkXVPQ^Oi0+fvcE&{LT49dff- zqD`(8^^e)$kPK;}%7N~oNf*0oW=A&~)sG+o}!Y!WcI{oQANwgg^6}IjR5T8`qtx3#C z+PmmfH}o*-nI}#uRy&`ls;Qeq>=Y2NOsR6FY3~m!4J+e>q3nE8{Wogf6>B+Ft-OmCZn3j4ZCqlEpeNATKs&@C&B0Z z^r5ei2;|L9P2ZF)FNBY+?2rs3rghpLBLye1uUae-)X~^9w%TI>@Y#=O1(Gi}T`}i* z7A^w(azl3-!g8nDRLYUYuu#u}d1k?7NcfjlrFo1}#Y0enbC+PE6 zsjx~FzYkmN#cKr)77=W?3vL(aQ6Wg}7hZoJ{}hML--)ujZf6|e_a=_{ifyN9K#A}` zIAX^XBbQ`b1sfJ66ui9Klg6$?B@D+vwdPB%>@EMw(vka&BOE>uGZy<)9?2NxnA( zgk%Mj8W4)1uGK9_d}5#|c6s7y)H`H}OlpWnxHoDq?5j}v3n#(*tGnU{`Qw`<$)Xat zytWKeE26DLIC#om4CUxUzEvuuI;Y*IEk?5c8PC6kZg$f)q`p(yWtu4dmET)Zf5bwRKe$!OvgvmG%Hl?T{3Z^$6pmTEKshfn6hI46bscsbNb4)uJGfP z%2B`u&B8^XD>wMXgA-`*o5FpqYIWI~3l`VRO5PUspYyqxO-bWaF4S)$UzY|FzCSkQ zZTs!ebhmUw))43QR5jT5Iigs%Mw@e^+}o%&V0qjQflst}X8tt>kjdP(0BEZCvC8SF zgvFz=qttR{wb@iLi*@rx%W=Sn5giKNRokjVd=we<*>nV}-&BN@T|50FbDyu0dX#F=jYW+9E?JpeUuy}v^ zaYN#rb9`&Az5TrC{UgpjZ|d>;gzZRmcUFXw3cRzDX;SSxTk;_NxVYd%xB2zEJ4oR1 zjkveWO{sXaIj|S%ZD}Wh8j>Cc=|pO4_GTAxII?W?hvPDLS>;qmC7kP7@aP!e*TU$^D z{C$N24V!(}KcJCEO8nlhliRcRa^MZO?A;fV{wgFhEBNM4o@)Sqr2MQ>gf0JIJHEU; z28MF%Gvl8!Yt+P5NPnr>BI>5Y*gY*ko8|@y7tLR%B;>$TiZ*s@+R}r@z5iTJfG4TR zX$4uLZh2?M<|8e5G7RWz<)=-Sku8?`$Q+e7=j^#jnEQ%ZuM0TRXD9h6VWi>$W^{VN ze!6}Ag>t2mGSnkKBF|L;bqiw{3TOXtL#5&K$H9lT_sB%6UiQ~c!DTG@ub7%l2`vk` zlhY#oPL5J(&3Prwzc=;pF!tX6oI~2)iP;+6$;)aOAm&_X6wNS)ncLbtCwR-QR#;q8^Sv_E+4&#HLzhW*HJJuI0cE67a4giyb#c7{zFd%#tHj$>nI?6NDml2s{t z@1jO10j^g*e17<9-k>Ip^`Nrlz?E*TDWshDcwr@Tu^NA$!1XBpY7L~oGmY!RM9KIK z@g$i|xd~~%MJF8WMy>kN=TFLgo4?|PW=#c+oQGv|;9?^D>A&s)kIl+b z=kVx6EmafB^;rHV3gr%ZWD+@21c=51T_YL=@gf7D*YP4lY~hd8^k1RS%@!q-pnTWC z$yP)_{L>+{g3FJ-+G-+Cr#jS!sr%LVsgo_c&$q|*d?Yt?Gf6iDM^S{z8QryXXd;tt z4?|b1yneXnd)GSHau5}(naGoc%c6iWlws88pYejucQ LnSQ0N%ai{D1#qkm literal 0 HcmV?d00001 diff --git a/static/img/logo.png b/static/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..aa8f06472d7b20b3758df0731e14ba773b2981ca GIT binary patch literal 9411 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 literal 0 HcmV?d00001 diff --git a/static/img/photo.png b/static/img/photo.png new file mode 100644 index 0000000000000000000000000000000000000000..ebb47d3d7c94d5e5cfaf5ba61b0bd0e20eb635cb GIT binary patch literal 6440 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 literal 0 HcmV?d00001 diff --git a/static/img/profile.png b/static/img/profile.png new file mode 100644 index 0000000000000000000000000000000000000000..12ea18b96f90cc9ed459cbcfce959b83f7a47897 GIT binary patch literal 11026 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 ZMi-|b+0W%9J$lt1z}_^}D!pz?_#YGkc7Ol? literal 0 HcmV?d00001 diff --git a/static/img/user.jpg b/static/img/user.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5f32403b778ba3af9d72ebb0cfb05348adac36f0 GIT binary patch literal 29379 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 literal 0 HcmV?d00001 diff --git a/static/img/user.png b/static/img/user.png new file mode 100644 index 0000000000000000000000000000000000000000..40b4dc5203be203996a5d8324224ee7c7b854521 GIT binary patch literal 5197 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 literal 0 HcmV?d00001 diff --git a/static/img/video.png b/static/img/video.png new file mode 100644 index 0000000000000000000000000000000000000000..7ec5cf6a354ac3a778e788c1ab4eacb5ebfd41b0 GIT binary patch literal 4493 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 literal 0 HcmV?d00001 diff --git a/static_new/__init__.py b/static_new/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/static_new/admin/css/autocomplete.css b/static_new/admin/css/autocomplete.css new file mode 100644 index 00000000..3ef95d15 --- /dev/null +++ b/static_new/admin/css/autocomplete.css @@ -0,0 +1,260 @@ +select.admin-autocomplete { + width: 20em; +} + +.select2-container--admin-autocomplete.select2-container { + min-height: 30px; +} + +.select2-container--admin-autocomplete .select2-selection--single, +.select2-container--admin-autocomplete .select2-selection--multiple { + min-height: 30px; + padding: 0; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection, +.select2-container--admin-autocomplete.select2-container--open .select2-selection { + border-color: #999; + min-height: 30px; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--single, +.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--single { + padding: 0; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--multiple, +.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--multiple { + padding: 0; +} + +.select2-container--admin-autocomplete .select2-selection--single { + background-color: #fff; + border: 1px solid #ccc; + border-radius: 4px; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered { + color: #444; + line-height: 30px; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__placeholder { + color: #999; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow { + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__arrow { + left: 1px; + right: auto; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single { + background-color: #eee; + cursor: default; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single .select2-selection__clear { + display: none; +} + +.select2-container--admin-autocomplete.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; +} + +.select2-container--admin-autocomplete .select2-selection--multiple { + background-color: white; + border: 1px solid #ccc; + border-radius: 4px; + cursor: text; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered { + box-sizing: border-box; + list-style: none; + margin: 0; + padding: 0 5px; + width: 100%; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered li { + list-style: none; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__placeholder { + color: #999; + margin-top: 5px; + float: left; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin: 5px; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice { + background-color: #e4e4e4; + border: 1px solid #ccc; + border-radius: 4px; + cursor: default; + float: left; + margin-right: 5px; + margin-top: 5px; + padding: 0 5px; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove { + color: #999; + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove:hover { + color: #333; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-search--inline { + float: right; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + margin-left: 5px; + margin-right: auto; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection--multiple { + border: solid #999 1px; + outline: 0; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--multiple { + background-color: #eee; + cursor: default; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection__choice__remove { + display: none; +} + +.select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--multiple { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field { + border: 1px solid #ccc; +} + +.select2-container--admin-autocomplete .select2-search--inline .select2-search__field { + background: transparent; + border: none; + outline: 0; + box-shadow: none; + -webkit-appearance: textfield; +} + +.select2-container--admin-autocomplete .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; +} + +.select2-container--admin-autocomplete .select2-results__option[role=group] { + padding: 0; +} + +.select2-container--admin-autocomplete .select2-results__option[aria-disabled=true] { + color: #999; +} + +.select2-container--admin-autocomplete .select2-results__option[aria-selected=true] { + background-color: #ddd; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option { + padding-left: 1em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__group { + padding-left: 0; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option { + margin-left: -1em; + padding-left: 2em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -2em; + padding-left: 3em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -3em; + padding-left: 4em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -4em; + padding-left: 5em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -5em; + padding-left: 6em; +} + +.select2-container--admin-autocomplete .select2-results__option--highlighted[aria-selected] { + background-color: #79aec8; + color: white; +} + +.select2-container--admin-autocomplete .select2-results__group { + cursor: default; + display: block; + padding: 6px; +} diff --git a/static_new/admin/css/base.css b/static_new/admin/css/base.css new file mode 100644 index 00000000..c4285195 --- /dev/null +++ b/static_new/admin/css/base.css @@ -0,0 +1,966 @@ +/* + DJANGO Admin styles +*/ + +@import url(fonts.css); + +html, body { + height: 100%; +} + +body { + margin: 0; + padding: 0; + font-size: 14px; + font-family: "Roboto","Lucida Grande","DejaVu Sans","Bitstream Vera Sans",Verdana,Arial,sans-serif; + color: #333; + background: #fff; +} + +/* LINKS */ + +a:link, a:visited { + color: #447e9b; + text-decoration: none; +} + +a:focus, a:hover { + color: #036; +} + +a:focus { + text-decoration: underline; +} + +a img { + border: none; +} + +a.section:link, a.section:visited { + color: #fff; + text-decoration: none; +} + +a.section:focus, a.section:hover { + text-decoration: underline; +} + +/* GLOBAL DEFAULTS */ + +p, ol, ul, dl { + margin: .2em 0 .8em 0; +} + +p { + padding: 0; + line-height: 140%; +} + +h1,h2,h3,h4,h5 { + font-weight: bold; +} + +h1 { + margin: 0 0 20px; + font-weight: 300; + font-size: 20px; + color: #666; +} + +h2 { + font-size: 16px; + margin: 1em 0 .5em 0; +} + +h2.subhead { + font-weight: normal; + margin-top: 0; +} + +h3 { + font-size: 14px; + margin: .8em 0 .3em 0; + color: #666; + font-weight: bold; +} + +h4 { + font-size: 12px; + margin: 1em 0 .8em 0; + padding-bottom: 3px; +} + +h5 { + font-size: 10px; + margin: 1.5em 0 .5em 0; + color: #666; + text-transform: uppercase; + letter-spacing: 1px; +} + +ul > li { + list-style-type: square; + padding: 1px 0; +} + +li ul { + margin-bottom: 0; +} + +li, dt, dd { + font-size: 13px; + line-height: 20px; +} + +dt { + font-weight: bold; + margin-top: 4px; +} + +dd { + margin-left: 0; +} + +form { + margin: 0; + padding: 0; +} + +fieldset { + margin: 0; + min-width: 0; + padding: 0; + border: none; + border-top: 1px solid #eee; +} + +blockquote { + font-size: 11px; + color: #777; + margin-left: 2px; + padding-left: 10px; + border-left: 5px solid #ddd; +} + +code, pre { + font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace; + color: #666; + font-size: 12px; + overflow-x: auto; +} + +pre.literal-block { + margin: 10px; + background: #eee; + padding: 6px 8px; +} + +code strong { + color: #930; +} + +hr { + clear: both; + color: #eee; + background-color: #eee; + height: 1px; + border: none; + margin: 0; + padding: 0; + font-size: 1px; + line-height: 1px; +} + +/* TEXT STYLES & MODIFIERS */ + +.small { + font-size: 11px; +} + +.mini { + font-size: 10px; +} + +.help, p.help, form p.help, div.help, form div.help, div.help li { + font-size: 11px; + color: #999; +} + +div.help ul { + margin-bottom: 0; +} + +.help-tooltip { + cursor: help; +} + +p img, h1 img, h2 img, h3 img, h4 img, td img { + vertical-align: middle; +} + +.quiet, a.quiet:link, a.quiet:visited { + color: #999; + font-weight: normal; +} + +.clear { + clear: both; +} + +.nowrap { + white-space: nowrap; +} + +/* TABLES */ + +table { + border-collapse: collapse; + border-color: #ccc; +} + +td, th { + font-size: 13px; + line-height: 16px; + border-bottom: 1px solid #eee; + vertical-align: top; + padding: 8px; + font-family: "Roboto", "Lucida Grande", Verdana, Arial, sans-serif; +} + +th { + font-weight: 600; + text-align: left; +} + +thead th, +tfoot td { + color: #666; + padding: 5px 10px; + font-size: 11px; + background: #fff; + border: none; + border-top: 1px solid #eee; + border-bottom: 1px solid #eee; +} + +tfoot td { + border-bottom: none; + border-top: 1px solid #eee; +} + +thead th.required { + color: #000; +} + +tr.alt { + background: #f6f6f6; +} + +tr:nth-child(odd), .row-form-errors { + background: #fff; +} + +tr:nth-child(even), +tr:nth-child(even) .errorlist, +tr:nth-child(odd) + .row-form-errors, +tr:nth-child(odd) + .row-form-errors .errorlist { + background: #f9f9f9; +} + +/* SORTABLE TABLES */ + +thead th { + padding: 5px 10px; + line-height: normal; + text-transform: uppercase; + background: #f6f6f6; +} + +thead th a:link, thead th a:visited { + color: #666; +} + +thead th.sorted { + background: #eee; +} + +thead th.sorted .text { + padding-right: 42px; +} + +table thead th .text span { + padding: 8px 10px; + display: block; +} + +table thead th .text a { + display: block; + cursor: pointer; + padding: 8px 10px; +} + +table thead th .text a:focus, table thead th .text a:hover { + background: #eee; +} + +thead th.sorted a.sortremove { + visibility: hidden; +} + +table thead th.sorted:hover a.sortremove { + visibility: visible; +} + +table thead th.sorted .sortoptions { + display: block; + padding: 9px 5px 0 5px; + float: right; + text-align: right; +} + +table thead th.sorted .sortpriority { + font-size: .8em; + min-width: 12px; + text-align: center; + vertical-align: 3px; + margin-left: 2px; + margin-right: 2px; +} + +table thead th.sorted .sortoptions a { + position: relative; + width: 14px; + height: 14px; + display: inline-block; + background: url(../img/sorting-icons.svg) 0 0 no-repeat; + background-size: 14px auto; +} + +table thead th.sorted .sortoptions a.sortremove { + background-position: 0 0; +} + +table thead th.sorted .sortoptions a.sortremove:after { + content: '\\'; + position: absolute; + top: -6px; + left: 3px; + font-weight: 200; + font-size: 18px; + color: #999; +} + +table thead th.sorted .sortoptions a.sortremove:focus:after, +table thead th.sorted .sortoptions a.sortremove:hover:after { + color: #447e9b; +} + +table thead th.sorted .sortoptions a.sortremove:focus, +table thead th.sorted .sortoptions a.sortremove:hover { + background-position: 0 -14px; +} + +table thead th.sorted .sortoptions a.ascending { + background-position: 0 -28px; +} + +table thead th.sorted .sortoptions a.ascending:focus, +table thead th.sorted .sortoptions a.ascending:hover { + background-position: 0 -42px; +} + +table thead th.sorted .sortoptions a.descending { + top: 1px; + background-position: 0 -56px; +} + +table thead th.sorted .sortoptions a.descending:focus, +table thead th.sorted .sortoptions a.descending:hover { + background-position: 0 -70px; +} + +/* FORM DEFAULTS */ + +input, textarea, select, .form-row p, form .button { + margin: 2px 0; + padding: 2px 3px; + vertical-align: middle; + font-family: "Roboto", "Lucida Grande", Verdana, Arial, sans-serif; + font-weight: normal; + font-size: 13px; +} +.form-row div.help { + padding: 2px 3px; +} + +textarea { + vertical-align: top; +} + +input[type=text], input[type=password], input[type=email], input[type=url], +input[type=number], input[type=tel], textarea, select, .vTextField { + border: 1px solid #ccc; + border-radius: 4px; + padding: 5px 6px; + margin-top: 0; +} + +input[type=text]:focus, input[type=password]:focus, input[type=email]:focus, +input[type=url]:focus, input[type=number]:focus, input[type=tel]:focus, +textarea:focus, select:focus, .vTextField:focus { + border-color: #999; +} + +select { + height: 30px; +} + +select[multiple] { + /* Allow HTML size attribute to override the height in the rule above. */ + height: auto; + min-height: 150px; +} + +/* FORM BUTTONS */ + +.button, input[type=submit], input[type=button], .submit-row input, a.button { + background: #79aec8; + padding: 10px 15px; + border: none; + border-radius: 4px; + color: #fff; + cursor: pointer; +} + +a.button { + padding: 4px 5px; +} + +.button:active, input[type=submit]:active, input[type=button]:active, +.button:focus, input[type=submit]:focus, input[type=button]:focus, +.button:hover, input[type=submit]:hover, input[type=button]:hover { + background: #609ab6; +} + +.button[disabled], input[type=submit][disabled], input[type=button][disabled] { + opacity: 0.4; +} + +.button.default, input[type=submit].default, .submit-row input.default { + float: right; + border: none; + font-weight: 400; + background: #417690; +} + +.button.default:active, input[type=submit].default:active, +.button.default:focus, input[type=submit].default:focus, +.button.default:hover, input[type=submit].default:hover { + background: #205067; +} + +.button[disabled].default, +input[type=submit][disabled].default, +input[type=button][disabled].default { + opacity: 0.4; +} + + +/* MODULES */ + +.module { + border: none; + margin-bottom: 30px; + background: #fff; +} + +.module p, .module ul, .module h3, .module h4, .module dl, .module pre { + padding-left: 10px; + padding-right: 10px; +} + +.module blockquote { + margin-left: 12px; +} + +.module ul, .module ol { + margin-left: 1.5em; +} + +.module h3 { + margin-top: .6em; +} + +.module h2, .module caption, .inline-group h2 { + margin: 0; + padding: 8px; + font-weight: 400; + font-size: 13px; + text-align: left; + background: #79aec8; + color: #fff; +} + +.module caption, +.inline-group h2 { + font-size: 12px; + letter-spacing: 0.5px; + text-transform: uppercase; +} + +.module table { + border-collapse: collapse; +} + +/* MESSAGES & ERRORS */ + +ul.messagelist { + padding: 0; + margin: 0; +} + +ul.messagelist li { + display: block; + font-weight: 400; + font-size: 13px; + padding: 10px 10px 10px 65px; + margin: 0 0 10px 0; + background: #dfd url(../img/icon-yes.svg) 40px 12px no-repeat; + background-size: 16px auto; + color: #333; +} + +ul.messagelist li.warning { + background: #ffc url(../img/icon-alert.svg) 40px 14px no-repeat; + background-size: 14px auto; +} + +ul.messagelist li.error { + background: #ffefef url(../img/icon-no.svg) 40px 12px no-repeat; + background-size: 16px auto; +} + +.errornote { + font-size: 14px; + font-weight: 700; + display: block; + padding: 10px 12px; + margin: 0 0 10px 0; + color: #ba2121; + border: 1px solid #ba2121; + border-radius: 4px; + background-color: #fff; + background-position: 5px 12px; +} + +ul.errorlist { + margin: 0 0 4px; + padding: 0; + color: #ba2121; + background: #fff; +} + +ul.errorlist li { + font-size: 13px; + display: block; + margin-bottom: 4px; +} + +ul.errorlist li:first-child { + margin-top: 0; +} + +ul.errorlist li a { + color: inherit; + text-decoration: underline; +} + +td ul.errorlist { + margin: 0; + padding: 0; +} + +td ul.errorlist li { + margin: 0; +} + +.form-row.errors { + margin: 0; + border: none; + border-bottom: 1px solid #eee; + background: none; +} + +.form-row.errors ul.errorlist li { + padding-left: 0; +} + +.errors input, .errors select, .errors textarea, +td ul.errorlist + input, td ul.errorlist + select, td ul.errorlist + textarea { + border: 1px solid #ba2121; +} + +.description { + font-size: 12px; + padding: 5px 0 0 12px; +} + +/* BREADCRUMBS */ + +div.breadcrumbs { + background: #79aec8; + padding: 10px 40px; + border: none; + font-size: 14px; + color: #c4dce8; + text-align: left; +} + +div.breadcrumbs a { + color: #fff; +} + +div.breadcrumbs a:focus, div.breadcrumbs a:hover { + color: #c4dce8; +} + +/* ACTION ICONS */ + +.viewlink, .inlineviewlink { + padding-left: 16px; + background: url(../img/icon-viewlink.svg) 0 1px no-repeat; +} + +.addlink { + padding-left: 16px; + background: url(../img/icon-addlink.svg) 0 1px no-repeat; +} + +.changelink, .inlinechangelink { + padding-left: 16px; + background: url(../img/icon-changelink.svg) 0 1px no-repeat; +} + +.deletelink { + padding-left: 16px; + background: url(../img/icon-deletelink.svg) 0 1px no-repeat; +} + +a.deletelink:link, a.deletelink:visited { + color: #CC3434; +} + +a.deletelink:focus, a.deletelink:hover { + color: #993333; + text-decoration: none; +} + +/* OBJECT TOOLS */ + +.object-tools { + font-size: 10px; + font-weight: bold; + padding-left: 0; + float: right; + position: relative; + margin-top: -48px; +} + +.form-row .object-tools { + margin-top: 5px; + margin-bottom: 5px; + float: none; + height: 2em; + padding-left: 3.5em; +} + +.object-tools li { + display: block; + float: left; + margin-left: 5px; + height: 16px; +} + +.object-tools a { + border-radius: 15px; +} + +.object-tools a:link, .object-tools a:visited { + display: block; + float: left; + padding: 3px 12px; + background: #999; + font-weight: 400; + font-size: 11px; + text-transform: uppercase; + letter-spacing: 0.5px; + color: #fff; +} + +.object-tools a:focus, .object-tools a:hover { + background-color: #417690; +} + +.object-tools a:focus{ + text-decoration: none; +} + +.object-tools a.viewsitelink, .object-tools a.golink,.object-tools a.addlink { + background-repeat: no-repeat; + background-position: right 7px center; + padding-right: 26px; +} + +.object-tools a.viewsitelink, .object-tools a.golink { + background-image: url(../img/tooltag-arrowright.svg); +} + +.object-tools a.addlink { + background-image: url(../img/tooltag-add.svg); +} + +/* OBJECT HISTORY */ + +table#change-history { + width: 100%; +} + +table#change-history tbody th { + width: 16em; +} + +/* PAGE STRUCTURE */ + +#container { + position: relative; + width: 100%; + min-width: 980px; + padding: 0; + display: flex; + flex-direction: column; + height: 100%; +} + +#container > div { + flex-shrink: 0; +} + +#container > .main { + display: flex; + flex: 1 0 auto; +} + +.main > .content { + flex: 1 0; + max-width: 100%; +} + +#content { + padding: 20px 40px; +} + +.dashboard #content { + width: 600px; +} + +#content-main { + float: left; + width: 100%; +} + +#content-related { + float: right; + width: 260px; + position: relative; + margin-right: -300px; +} + +#footer { + clear: both; + padding: 10px; +} + +/* COLUMN TYPES */ + +.colMS { + margin-right: 300px; +} + +.colSM { + margin-left: 300px; +} + +.colSM #content-related { + float: left; + margin-right: 0; + margin-left: -300px; +} + +.colSM #content-main { + float: right; +} + +.popup .colM { + width: auto; +} + +/* HEADER */ + +#header { + width: auto; + height: auto; + display: flex; + justify-content: space-between; + align-items: center; + padding: 10px 40px; + background: #417690; + color: #ffc; + overflow: hidden; +} + +#header a:link, #header a:visited { + color: #fff; +} + +#header a:focus , #header a:hover { + text-decoration: underline; +} + +#branding { + float: left; +} + +#branding h1 { + padding: 0; + margin: 0 20px 0 0; + font-weight: 300; + font-size: 24px; + color: #f5dd5d; +} + +#branding h1, #branding h1 a:link, #branding h1 a:visited { + color: #f5dd5d; +} + +#branding h2 { + padding: 0 10px; + font-size: 14px; + margin: -8px 0 8px 0; + font-weight: normal; + color: #ffc; +} + +#branding a:hover { + text-decoration: none; +} + +#user-tools { + float: right; + padding: 0; + margin: 0 0 0 20px; + font-weight: 300; + font-size: 11px; + letter-spacing: 0.5px; + text-transform: uppercase; + text-align: right; +} + +#user-tools a { + border-bottom: 1px solid rgba(255, 255, 255, 0.25); +} + +#user-tools a:focus, #user-tools a:hover { + text-decoration: none; + border-bottom-color: #79aec8; + color: #79aec8; +} + +/* SIDEBAR */ + +#content-related { + background: #f8f8f8; +} + +#content-related .module { + background: none; +} + +#content-related h3 { + font-size: 14px; + color: #666; + padding: 0 16px; + margin: 0 0 16px; +} + +#content-related h4 { + font-size: 13px; +} + +#content-related p { + padding-left: 16px; + padding-right: 16px; +} + +#content-related .actionlist { + padding: 0; + margin: 16px; +} + +#content-related .actionlist li { + line-height: 1.2; + margin-bottom: 10px; + padding-left: 18px; +} + +#content-related .module h2 { + background: none; + padding: 16px; + margin-bottom: 16px; + border-bottom: 1px solid #eaeaea; + font-size: 18px; + color: #333; +} + +.delete-confirmation form input[type="submit"] { + background: #ba2121; + border-radius: 4px; + padding: 10px 15px; + color: #fff; +} + +.delete-confirmation form input[type="submit"]:active, +.delete-confirmation form input[type="submit"]:focus, +.delete-confirmation form input[type="submit"]:hover { + background: #a41515; +} + +.delete-confirmation form .cancel-link { + display: inline-block; + vertical-align: middle; + height: 15px; + line-height: 15px; + background: #ddd; + border-radius: 4px; + padding: 10px 15px; + color: #333; + margin: 0 0 0 10px; +} + +.delete-confirmation form .cancel-link:active, +.delete-confirmation form .cancel-link:focus, +.delete-confirmation form .cancel-link:hover { + background: #ccc; +} + +/* POPUP */ +.popup #content { + padding: 20px; +} + +.popup #container { + min-width: 0; +} + +.popup #header { + padding: 10px 20px; +} diff --git a/static_new/admin/css/changelists.css b/static_new/admin/css/changelists.css new file mode 100644 index 00000000..a1642540 --- /dev/null +++ b/static_new/admin/css/changelists.css @@ -0,0 +1,355 @@ +/* CHANGELISTS */ + +#changelist { + display: flex; + align-items: flex-start; + justify-content: space-between; +} + +#changelist .changelist-form-container { + flex: 1 1 auto; + min-width: 0; +} + +#changelist table { + width: 100%; +} + +.change-list .hiddenfields { display:none; } + +.change-list .filtered table { + border-right: none; +} + +.change-list .filtered { + min-height: 400px; +} + +.change-list .filtered .results, .change-list .filtered .paginator, +.filtered #toolbar, .filtered div.xfull { + width: auto; +} + +.change-list .filtered table tbody th { + padding-right: 1em; +} + +#changelist-form .results { + overflow-x: auto; + width: 100%; +} + +#changelist .toplinks { + border-bottom: 1px solid #ddd; +} + +#changelist .paginator { + color: #666; + border-bottom: 1px solid #eee; + background: #fff; + overflow: hidden; +} + +/* CHANGELIST TABLES */ + +#changelist table thead th { + padding: 0; + white-space: nowrap; + vertical-align: middle; +} + +#changelist table thead th.action-checkbox-column { + width: 1.5em; + text-align: center; +} + +#changelist table tbody td.action-checkbox { + text-align: center; +} + +#changelist table tfoot { + color: #666; +} + +/* TOOLBAR */ + +#toolbar { + padding: 8px 10px; + margin-bottom: 15px; + border-top: 1px solid #eee; + border-bottom: 1px solid #eee; + background: #f8f8f8; + color: #666; +} + +#toolbar form input { + border-radius: 4px; + font-size: 14px; + padding: 5px; + color: #333; +} + +#toolbar #searchbar { + height: 19px; + border: 1px solid #ccc; + padding: 2px 5px; + margin: 0; + vertical-align: top; + font-size: 13px; + max-width: 100%; +} + +#toolbar #searchbar:focus { + border-color: #999; +} + +#toolbar form input[type="submit"] { + border: 1px solid #ccc; + font-size: 13px; + padding: 4px 8px; + margin: 0; + vertical-align: middle; + background: #fff; + box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; + cursor: pointer; + color: #333; +} + +#toolbar form input[type="submit"]:focus, +#toolbar form input[type="submit"]:hover { + border-color: #999; +} + +#changelist-search img { + vertical-align: middle; + margin-right: 4px; +} + +/* FILTER COLUMN */ + +#changelist-filter { + flex: 0 0 240px; + order: 1; + width: 240px; + background: #f8f8f8; + border-left: none; + margin: 0 0 0 30px; +} + +#changelist-filter h2 { + font-size: 14px; + text-transform: uppercase; + letter-spacing: 0.5px; + padding: 5px 15px; + margin-bottom: 12px; + border-bottom: none; +} + +#changelist-filter h3 { + font-weight: 400; + font-size: 14px; + padding: 0 15px; + margin-bottom: 10px; +} + +#changelist-filter ul { + margin: 5px 0; + padding: 0 15px 15px; + border-bottom: 1px solid #eaeaea; +} + +#changelist-filter ul:last-child { + border-bottom: none; +} + +#changelist-filter li { + list-style-type: none; + margin-left: 0; + padding-left: 0; +} + +#changelist-filter a { + display: block; + color: #999; + text-overflow: ellipsis; + overflow-x: hidden; +} + +#changelist-filter li.selected { + border-left: 5px solid #eaeaea; + padding-left: 10px; + margin-left: -15px; +} + +#changelist-filter li.selected a { + color: #5b80b2; +} + +#changelist-filter a:focus, #changelist-filter a:hover, +#changelist-filter li.selected a:focus, +#changelist-filter li.selected a:hover { + color: #036; +} + +#changelist-filter #changelist-filter-clear a { + font-size: 13px; + padding-bottom: 10px; + border-bottom: 1px solid #eaeaea; +} + +/* DATE DRILLDOWN */ + +.change-list ul.toplinks { + display: block; + float: left; + padding: 0; + margin: 0; + width: 100%; +} + +.change-list ul.toplinks li { + padding: 3px 6px; + font-weight: bold; + list-style-type: none; + display: inline-block; +} + +.change-list ul.toplinks .date-back a { + color: #999; +} + +.change-list ul.toplinks .date-back a:focus, +.change-list ul.toplinks .date-back a:hover { + color: #036; +} + +/* PAGINATOR */ + +.paginator { + font-size: 13px; + padding-top: 10px; + padding-bottom: 10px; + line-height: 22px; + margin: 0; + border-top: 1px solid #ddd; + width: 100%; +} + +.paginator a:link, .paginator a:visited { + padding: 2px 6px; + background: #79aec8; + text-decoration: none; + color: #fff; +} + +.paginator a.showall { + border: none; + background: none; + color: #5b80b2; +} + +.paginator a.showall:focus, .paginator a.showall:hover { + background: none; + color: #036; +} + +.paginator .end { + margin-right: 6px; +} + +.paginator .this-page { + padding: 2px 6px; + font-weight: bold; + font-size: 13px; + vertical-align: top; +} + +.paginator a:focus, .paginator a:hover { + color: white; + background: #036; +} + +/* ACTIONS */ + +.filtered .actions { + border-right: none; +} + +#changelist table input { + margin: 0; + vertical-align: baseline; +} + +#changelist table tbody tr.selected { + background-color: #FFFFCC; +} + +#changelist .actions { + padding: 10px; + background: #fff; + border-top: none; + border-bottom: none; + line-height: 24px; + color: #999; + width: 100%; +} + +#changelist .actions.selected { + background: #fffccf; + border-top: 1px solid #fffee8; + border-bottom: 1px solid #edecd6; +} + +#changelist .actions span.all, +#changelist .actions span.action-counter, +#changelist .actions span.clear, +#changelist .actions span.question { + font-size: 13px; + margin: 0 0.5em; + display: none; +} + +#changelist .actions:last-child { + border-bottom: none; +} + +#changelist .actions select { + vertical-align: top; + height: 24px; + background: none; + color: #000; + border: 1px solid #ccc; + border-radius: 4px; + font-size: 14px; + padding: 0 0 0 4px; + margin: 0; + margin-left: 10px; +} + +#changelist .actions select:focus { + border-color: #999; +} + +#changelist .actions label { + display: inline-block; + vertical-align: middle; + font-size: 13px; +} + +#changelist .actions .button { + font-size: 13px; + border: 1px solid #ccc; + border-radius: 4px; + background: #fff; + box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; + cursor: pointer; + height: 24px; + line-height: 1; + padding: 4px 8px; + margin: 0; + color: #333; +} + +#changelist .actions .button:focus, #changelist .actions .button:hover { + border-color: #999; +} diff --git a/static_new/admin/css/dashboard.css b/static_new/admin/css/dashboard.css new file mode 100644 index 00000000..91d6efde --- /dev/null +++ b/static_new/admin/css/dashboard.css @@ -0,0 +1,26 @@ +/* DASHBOARD */ + +.dashboard .module table th { + width: 100%; +} + +.dashboard .module table td { + white-space: nowrap; +} + +.dashboard .module table td a { + display: block; + padding-right: .6em; +} + +/* RECENT ACTIONS MODULE */ + +.module ul.actionlist { + margin-left: 0; +} + +ul.actionlist li { + list-style-type: none; + overflow: hidden; + text-overflow: ellipsis; +} diff --git a/static_new/admin/css/fonts.css b/static_new/admin/css/fonts.css new file mode 100644 index 00000000..c837e017 --- /dev/null +++ b/static_new/admin/css/fonts.css @@ -0,0 +1,20 @@ +@font-face { + font-family: 'Roboto'; + src: url('../fonts/Roboto-Bold-webfont.woff'); + font-weight: 700; + font-style: normal; +} + +@font-face { + font-family: 'Roboto'; + src: url('../fonts/Roboto-Regular-webfont.woff'); + font-weight: 400; + font-style: normal; +} + +@font-face { + font-family: 'Roboto'; + src: url('../fonts/Roboto-Light-webfont.woff'); + font-weight: 300; + font-style: normal; +} diff --git a/static_new/admin/css/forms.css b/static_new/admin/css/forms.css new file mode 100644 index 00000000..89d57482 --- /dev/null +++ b/static_new/admin/css/forms.css @@ -0,0 +1,527 @@ +@import url('widgets.css'); + +/* FORM ROWS */ + +.form-row { + overflow: hidden; + padding: 10px; + font-size: 13px; + border-bottom: 1px solid #eee; +} + +.form-row img, .form-row input { + vertical-align: middle; +} + +.form-row label input[type="checkbox"] { + margin-top: 0; + vertical-align: 0; +} + +form .form-row p { + padding-left: 0; +} + +.hidden { + display: none; +} + +/* FORM LABELS */ + +label { + font-weight: normal; + color: #666; + font-size: 13px; +} + +.required label, label.required { + font-weight: bold; + color: #333; +} + +/* RADIO BUTTONS */ + +form ul.radiolist li { + list-style-type: none; +} + +form ul.radiolist label { + float: none; + display: inline; +} + +form ul.radiolist input[type="radio"] { + margin: -2px 4px 0 0; + padding: 0; +} + +form ul.inline { + margin-left: 0; + padding: 0; +} + +form ul.inline li { + float: left; + padding-right: 7px; +} + +/* ALIGNED FIELDSETS */ + +.aligned label { + display: block; + padding: 4px 10px 0 0; + float: left; + width: 160px; + word-wrap: break-word; + line-height: 1; +} + +.aligned label:not(.vCheckboxLabel):after { + content: ''; + display: inline-block; + vertical-align: middle; + height: 26px; +} + +.aligned label + p, .aligned label + div.help, .aligned label + div.readonly { + padding: 6px 0; + margin-top: 0; + margin-bottom: 0; + margin-left: 170px; +} + +.aligned ul label { + display: inline; + float: none; + width: auto; +} + +.aligned .form-row input { + margin-bottom: 0; +} + +.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField { + width: 350px; +} + +form .aligned ul { + margin-left: 160px; + padding-left: 10px; +} + +form .aligned ul.radiolist { + display: inline-block; + margin: 0; + padding: 0; +} + +form .aligned p.help, +form .aligned div.help { + clear: left; + margin-top: 0; + margin-left: 160px; + padding-left: 10px; +} + +form .aligned label + p.help, +form .aligned label + div.help { + margin-left: 0; + padding-left: 0; +} + +form .aligned p.help:last-child, +form .aligned div.help:last-child { + margin-bottom: 0; + padding-bottom: 0; +} + +form .aligned input + p.help, +form .aligned textarea + p.help, +form .aligned select + p.help, +form .aligned input + div.help, +form .aligned textarea + div.help, +form .aligned select + div.help { + margin-left: 160px; + padding-left: 10px; +} + +form .aligned ul li { + list-style: none; +} + +form .aligned table p { + margin-left: 0; + padding-left: 0; +} + +.aligned .vCheckboxLabel { + float: none; + width: auto; + display: inline-block; + vertical-align: -3px; + padding: 0 0 5px 5px; +} + +.aligned .vCheckboxLabel + p.help, +.aligned .vCheckboxLabel + div.help { + margin-top: -4px; +} + +.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField { + width: 610px; +} + +.checkbox-row p.help, +.checkbox-row div.help { + margin-left: 0; + padding-left: 0; +} + +fieldset .fieldBox { + float: left; + margin-right: 20px; +} + +/* WIDE FIELDSETS */ + +.wide label { + width: 200px; +} + +form .wide p, +form .wide input + p.help, +form .wide input + div.help { + margin-left: 200px; +} + +form .wide p.help, +form .wide div.help { + padding-left: 38px; +} + +form div.help ul { + padding-left: 0; + margin-left: 0; +} + +.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField { + width: 450px; +} + +/* COLLAPSED FIELDSETS */ + +fieldset.collapsed * { + display: none; +} + +fieldset.collapsed h2, fieldset.collapsed { + display: block; +} + +fieldset.collapsed { + border: 1px solid #eee; + border-radius: 4px; + overflow: hidden; +} + +fieldset.collapsed h2 { + background: #f8f8f8; + color: #666; +} + +fieldset .collapse-toggle { + color: #fff; +} + +fieldset.collapsed .collapse-toggle { + background: transparent; + display: inline; + color: #447e9b; +} + +/* MONOSPACE TEXTAREAS */ + +fieldset.monospace textarea { + font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace; +} + +/* SUBMIT ROW */ + +.submit-row { + padding: 12px 14px; + margin: 0 0 20px; + background: #f8f8f8; + border: 1px solid #eee; + border-radius: 4px; + text-align: right; + overflow: hidden; +} + +body.popup .submit-row { + overflow: auto; +} + +.submit-row input { + height: 35px; + line-height: 15px; + margin: 0 0 0 5px; +} + +.submit-row input.default { + margin: 0 0 0 8px; + text-transform: uppercase; +} + +.submit-row p { + margin: 0.3em; +} + +.submit-row p.deletelink-box { + float: left; + margin: 0; +} + +.submit-row a.deletelink { + display: block; + background: #ba2121; + border-radius: 4px; + padding: 10px 15px; + height: 15px; + line-height: 15px; + color: #fff; +} + +.submit-row a.closelink { + display: inline-block; + background: #bbbbbb; + border-radius: 4px; + padding: 10px 15px; + height: 15px; + line-height: 15px; + margin: 0 0 0 5px; + color: #fff; +} + +.submit-row a.deletelink:focus, +.submit-row a.deletelink:hover, +.submit-row a.deletelink:active { + background: #a41515; +} + +.submit-row a.closelink:focus, +.submit-row a.closelink:hover, +.submit-row a.closelink:active { + background: #aaaaaa; +} + +/* CUSTOM FORM FIELDS */ + +.vSelectMultipleField { + vertical-align: top; +} + +.vCheckboxField { + border: none; +} + +.vDateField, .vTimeField { + margin-right: 2px; + margin-bottom: 4px; +} + +.vDateField { + min-width: 6.85em; +} + +.vTimeField { + min-width: 4.7em; +} + +.vURLField { + width: 30em; +} + +.vLargeTextField, .vXMLLargeTextField { + width: 48em; +} + +.flatpages-flatpage #id_content { + height: 40.2em; +} + +.module table .vPositiveSmallIntegerField { + width: 2.2em; +} + +.vTextField, .vUUIDField { + width: 20em; +} + +.vIntegerField { + width: 5em; +} + +.vBigIntegerField { + width: 10em; +} + +.vForeignKeyRawIdAdminField { + width: 5em; +} + +/* INLINES */ + +.inline-group { + padding: 0; + margin: 0 0 30px; +} + +.inline-group thead th { + padding: 8px 10px; +} + +.inline-group .aligned label { + width: 160px; +} + +.inline-related { + position: relative; +} + +.inline-related h3 { + margin: 0; + color: #666; + padding: 5px; + font-size: 13px; + background: #f8f8f8; + border-top: 1px solid #eee; + border-bottom: 1px solid #eee; +} + +.inline-related h3 span.delete { + float: right; +} + +.inline-related h3 span.delete label { + margin-left: 2px; + font-size: 11px; +} + +.inline-related fieldset { + margin: 0; + background: #fff; + border: none; + width: 100%; +} + +.inline-related fieldset.module h3 { + margin: 0; + padding: 2px 5px 3px 5px; + font-size: 11px; + text-align: left; + font-weight: bold; + background: #bcd; + color: #fff; +} + +.inline-group .tabular fieldset.module { + border: none; +} + +.inline-related.tabular fieldset.module table { + width: 100%; + overflow-x: scroll; +} + +.last-related fieldset { + border: none; +} + +.inline-group .tabular tr.has_original td { + padding-top: 2em; +} + +.inline-group .tabular tr td.original { + padding: 2px 0 0 0; + width: 0; + _position: relative; +} + +.inline-group .tabular th.original { + width: 0px; + padding: 0; +} + +.inline-group .tabular td.original p { + position: absolute; + left: 0; + height: 1.1em; + padding: 2px 9px; + overflow: hidden; + font-size: 9px; + font-weight: bold; + color: #666; + _width: 700px; +} + +.inline-group ul.tools { + padding: 0; + margin: 0; + list-style: none; +} + +.inline-group ul.tools li { + display: inline; + padding: 0 5px; +} + +.inline-group div.add-row, +.inline-group .tabular tr.add-row td { + color: #666; + background: #f8f8f8; + padding: 8px 10px; + border-bottom: 1px solid #eee; +} + +.inline-group .tabular tr.add-row td { + padding: 8px 10px; + border-bottom: 1px solid #eee; +} + +.inline-group ul.tools a.add, +.inline-group div.add-row a, +.inline-group .tabular tr.add-row td a { + background: url(../img/icon-addlink.svg) 0 1px no-repeat; + padding-left: 16px; + font-size: 12px; +} + +.empty-form { + display: none; +} + +/* RELATED FIELD ADD ONE / LOOKUP */ + +.related-lookup { + margin-left: 5px; + display: inline-block; + vertical-align: middle; + background-repeat: no-repeat; + background-size: 14px; +} + +.related-lookup { + width: 16px; + height: 16px; + background-image: url(../img/search.svg); +} + +form .related-widget-wrapper ul { + display: inline-block; + margin-left: 0; + padding-left: 0; +} + +.clearable-file-input input { + margin-top: 0; +} diff --git a/static_new/admin/css/login.css b/static_new/admin/css/login.css new file mode 100644 index 00000000..062b36e0 --- /dev/null +++ b/static_new/admin/css/login.css @@ -0,0 +1,79 @@ +/* LOGIN FORM */ + +.login { + background: #f8f8f8; + height: auto; +} + +.login #header { + height: auto; + padding: 15px 16px; + justify-content: center; +} + +.login #header h1 { + font-size: 18px; +} + +.login #header h1 a { + color: #fff; +} + +.login #content { + padding: 20px 20px 0; +} + +.login #container { + background: #fff; + border: 1px solid #eaeaea; + border-radius: 4px; + overflow: hidden; + width: 28em; + min-width: 300px; + margin: 100px auto; + height: auto; +} + +.login #content-main { + width: 100%; +} + +.login .form-row { + padding: 4px 0; + float: left; + width: 100%; + border-bottom: none; +} + +.login .form-row label { + padding-right: 0.5em; + line-height: 2em; + font-size: 1em; + clear: both; + color: #333; +} + +.login .form-row #id_username, .login .form-row #id_password { + clear: both; + padding: 8px; + width: 100%; + box-sizing: border-box; +} + +.login span.help { + font-size: 10px; + display: block; +} + +.login .submit-row { + clear: both; + padding: 1em 0 0 9.4em; + margin: 0; + border: none; + background: none; + text-align: left; +} + +.login .password-reset-link { + text-align: center; +} diff --git a/static_new/admin/css/nav_sidebar.css b/static_new/admin/css/nav_sidebar.css new file mode 100644 index 00000000..784d0874 --- /dev/null +++ b/static_new/admin/css/nav_sidebar.css @@ -0,0 +1,119 @@ +.sticky { + position: sticky; + top: 0; + max-height: 100vh; +} + +.toggle-nav-sidebar { + z-index: 20; + left: 0; + display: flex; + align-items: center; + justify-content: center; + flex: 0 0 23px; + width: 23px; + border-right: 1px solid #eaeaea; + background-color: #ffffff; + cursor: pointer; + font-size: 20px; + color: #447e9b; + padding: 0; +} + +[dir="rtl"] .toggle-nav-sidebar { + border-left: 1px solid #eaeaea; + border-right: 0; +} + +.toggle-nav-sidebar:hover, +.toggle-nav-sidebar:focus { + background-color: #f6f6f6; +} + +#nav-sidebar { + z-index: 15; + flex: 0 0 275px; + left: -276px; + margin-left: -276px; + border-top: 1px solid transparent; + border-right: 1px solid #eaeaea; + background-color: #ffffff; + overflow: auto; +} + +[dir="rtl"] #nav-sidebar { + border-left: 1px solid #eaeaea; + border-right: 0; + left: 0; + margin-left: 0; + right: -276px; + margin-right: -276px; +} + +.toggle-nav-sidebar::before { + content: '\00BB'; +} + +.main.shifted .toggle-nav-sidebar::before { + content: '\00AB'; +} + +.main.shifted > #nav-sidebar { + left: 24px; + margin-left: 0; +} + +[dir="rtl"] .main.shifted > #nav-sidebar { + left: 0; + right: 24px; + margin-right: 0; +} + +#nav-sidebar .module th { + width: 100%; + overflow-wrap: anywhere; +} + +#nav-sidebar .module th, +#nav-sidebar .module caption { + padding-left: 16px; +} + +#nav-sidebar .module td { + white-space: nowrap; +} + +[dir="rtl"] #nav-sidebar .module th, +[dir="rtl"] #nav-sidebar .module caption { + padding-left: 8px; + padding-right: 16px; +} + +#nav-sidebar .current-app .section:link, +#nav-sidebar .current-app .section:visited { + color: #ffc; + font-weight: bold; +} + +#nav-sidebar .current-model { + background: #ffc; +} + +.main > #nav-sidebar + .content { + max-width: calc(100% - 23px); +} + +.main.shifted > #nav-sidebar + .content { + max-width: calc(100% - 299px); +} + +@media (max-width: 767px) { + #nav-sidebar, #toggle-nav-sidebar { + display: none; + } + + .main > #nav-sidebar + .content, + .main.shifted > #nav-sidebar + .content { + max-width: 100%; + } +} diff --git a/static_new/admin/css/responsive.css b/static_new/admin/css/responsive.css new file mode 100644 index 00000000..053e8413 --- /dev/null +++ b/static_new/admin/css/responsive.css @@ -0,0 +1,1004 @@ +/* Tablets */ + +input[type="submit"], button { + -webkit-appearance: none; + appearance: none; +} + +@media (max-width: 1024px) { + /* Basic */ + + html { + -webkit-text-size-adjust: 100%; + } + + td, th { + padding: 10px; + font-size: 14px; + } + + .small { + font-size: 12px; + } + + /* Layout */ + + #container { + min-width: 0; + } + + #content { + padding: 20px 30px 30px; + } + + div.breadcrumbs { + padding: 10px 30px; + } + + /* Header */ + + #header { + flex-direction: column; + padding: 15px 30px; + justify-content: flex-start; + } + + #branding h1 { + margin: 0 0 8px; + font-size: 20px; + line-height: 1.2; + } + + #user-tools { + margin: 0; + font-weight: 400; + line-height: 1.85; + text-align: left; + } + + #user-tools a { + display: inline-block; + line-height: 1.4; + } + + /* Dashboard */ + + .dashboard #content { + width: auto; + } + + #content-related { + margin-right: -290px; + } + + .colSM #content-related { + margin-left: -290px; + } + + .colMS { + margin-right: 290px; + } + + .colSM { + margin-left: 290px; + } + + .dashboard .module table td a { + padding-right: 0; + } + + td .changelink, td .addlink { + font-size: 13px; + } + + /* Changelist */ + + #toolbar { + border: none; + padding: 15px; + } + + #changelist-search > div { + display: flex; + flex-wrap: nowrap; + max-width: 480px; + } + + #changelist-search label { + line-height: 22px; + } + + #toolbar form #searchbar { + flex: 1 0 auto; + width: 0; + height: 22px; + margin: 0 10px 0 6px; + } + + #toolbar form input[type=submit] { + flex: 0 1 auto; + } + + #changelist-search .quiet { + width: 0; + flex: 1 0 auto; + margin: 5px 0 0 25px; + } + + #changelist .actions { + display: flex; + flex-wrap: wrap; + padding: 15px 0; + } + + #changelist .actions.selected { + border: none; + } + + #changelist .actions label { + display: flex; + } + + #changelist .actions select { + background: #fff; + } + + #changelist .actions .button { + min-width: 48px; + margin: 0 10px; + } + + #changelist .actions span.all, + #changelist .actions span.clear, + #changelist .actions span.question, + #changelist .actions span.action-counter { + font-size: 11px; + margin: 0 10px 0 0; + } + + #changelist-filter { + flex-basis: 200px; + } + + .change-list .filtered .results, + .change-list .filtered .paginator, + .filtered #toolbar, + .filtered .actions, + + #changelist .paginator { + border-top-color: #eee; + } + + #changelist .results + .paginator { + border-top: none; + } + + /* Forms */ + + label { + font-size: 14px; + } + + .form-row input[type=text], + .form-row input[type=password], + .form-row input[type=email], + .form-row input[type=url], + .form-row input[type=tel], + .form-row input[type=number], + .form-row textarea, + .form-row select, + .form-row .vTextField { + box-sizing: border-box; + margin: 0; + padding: 6px 8px; + min-height: 36px; + font-size: 14px; + } + + .form-row select { + height: 36px; + } + + .form-row select[multiple] { + height: auto; + min-height: 0; + } + + fieldset .fieldBox { + float: none; + margin: 0 -10px; + padding: 0 10px; + } + + fieldset .fieldBox + .fieldBox { + margin-top: 10px; + padding-top: 10px; + border-top: 1px solid #eee; + } + + textarea { + max-width: 100%; + max-height: 120px; + } + + .aligned label { + padding-top: 6px; + } + + .aligned .related-lookup, + .aligned .datetimeshortcuts, + .aligned .related-lookup + strong { + align-self: center; + margin-left: 15px; + } + + form .aligned ul.radiolist { + margin-left: 2px; + } + + /* Related widget */ + + .related-widget-wrapper { + float: none; + } + + .related-widget-wrapper-link + .selector { + max-width: calc(100% - 30px); + margin-right: 15px; + } + + select + .related-widget-wrapper-link, + .related-widget-wrapper-link + .related-widget-wrapper-link { + margin-left: 10px; + } + + /* Selector */ + + .selector { + display: flex; + width: 100%; + } + + .selector .selector-filter { + display: flex; + align-items: center; + } + + .selector .selector-filter label { + margin: 0 8px 0 0; + } + + .selector .selector-filter input { + width: auto; + min-height: 0; + flex: 1 1; + } + + .selector-available, .selector-chosen { + width: auto; + flex: 1 1; + display: flex; + flex-direction: column; + } + + .selector select { + width: 100%; + flex: 1 0 auto; + margin-bottom: 5px; + } + + .selector ul.selector-chooser { + width: 26px; + height: 52px; + padding: 2px 0; + margin: auto 15px; + border-radius: 20px; + transform: translateY(-10px); + } + + .selector-add, .selector-remove { + width: 20px; + height: 20px; + background-size: 20px auto; + } + + .selector-add { + background-position: 0 -120px; + } + + .selector-remove { + background-position: 0 -80px; + } + + a.selector-chooseall, a.selector-clearall { + align-self: center; + } + + .stacked { + flex-direction: column; + max-width: 480px; + } + + .stacked > * { + flex: 0 1 auto; + } + + .stacked select { + margin-bottom: 0; + } + + .stacked .selector-available, .stacked .selector-chosen { + width: auto; + } + + .stacked ul.selector-chooser { + width: 52px; + height: 26px; + padding: 0 2px; + margin: 15px auto; + transform: none; + } + + .stacked .selector-chooser li { + padding: 3px; + } + + .stacked .selector-add, .stacked .selector-remove { + background-size: 20px auto; + } + + .stacked .selector-add { + background-position: 0 -40px; + } + + .stacked .active.selector-add { + background-position: 0 -40px; + } + + .active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -140px; + } + + .stacked .active.selector-add:focus, .stacked .active.selector-add:hover { + background-position: 0 -60px; + } + + .stacked .selector-remove { + background-position: 0 0; + } + + .stacked .active.selector-remove { + background-position: 0 0; + } + + .active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -100px; + } + + .stacked .active.selector-remove:focus, .stacked .active.selector-remove:hover { + background-position: 0 -20px; + } + + .help-tooltip, .selector .help-icon { + display: none; + } + + form .form-row p.datetime { + width: 100%; + } + + .datetime input { + width: 50%; + max-width: 120px; + } + + .datetime span { + font-size: 13px; + } + + .datetime .timezonewarning { + display: block; + font-size: 11px; + color: #999; + } + + .datetimeshortcuts { + color: #ccc; + } + + .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField { + width: 75%; + } + + .inline-group { + overflow: auto; + } + + /* Messages */ + + ul.messagelist li { + padding-left: 55px; + background-position: 30px 12px; + } + + ul.messagelist li.error { + background-position: 30px 12px; + } + + ul.messagelist li.warning { + background-position: 30px 14px; + } + + /* Login */ + + .login #header { + padding: 15px 20px; + } + + .login #branding h1 { + margin: 0; + } + + /* GIS */ + + div.olMap { + max-width: calc(100vw - 30px); + max-height: 300px; + } + + .olMap + .clear_features { + display: block; + margin-top: 10px; + } + + /* Docs */ + + .module table.xfull { + width: 100%; + } + + pre.literal-block { + overflow: auto; + } +} + +/* Mobile */ + +@media (max-width: 767px) { + /* Layout */ + + #header, #content, #footer { + padding: 15px; + } + + #footer:empty { + padding: 0; + } + + div.breadcrumbs { + padding: 10px 15px; + } + + /* Dashboard */ + + .colMS, .colSM { + margin: 0; + } + + #content-related, .colSM #content-related { + width: 100%; + margin: 0; + } + + #content-related .module { + margin-bottom: 0; + } + + #content-related .module h2 { + padding: 10px 15px; + font-size: 16px; + } + + /* Changelist */ + + #changelist { + align-items: stretch; + flex-direction: column; + } + + #toolbar { + padding: 10px; + } + + #changelist-filter { + margin-left: 0; + } + + #changelist .actions label { + flex: 1 1; + } + + #changelist .actions select { + flex: 1 0; + width: 100%; + } + + #changelist .actions span { + flex: 1 0 100%; + } + + #changelist-filter { + position: static; + width: auto; + margin-top: 30px; + } + + .object-tools { + float: none; + margin: 0 0 15px; + padding: 0; + overflow: hidden; + } + + .object-tools li { + height: auto; + margin-left: 0; + } + + .object-tools li + li { + margin-left: 15px; + } + + /* Forms */ + + .form-row { + padding: 15px 0; + } + + .aligned .form-row, + .aligned .form-row > div { + display: flex; + flex-wrap: wrap; + max-width: 100vw; + } + + .aligned .form-row > div { + width: calc(100vw - 30px); + } + + textarea { + max-width: none; + } + + .vURLField { + width: auto; + } + + fieldset .fieldBox + .fieldBox { + margin-top: 15px; + padding-top: 15px; + } + + fieldset.collapsed .form-row { + display: none; + } + + .aligned label { + width: 100%; + padding: 0 0 10px; + } + + .aligned label:after { + max-height: 0; + } + + .aligned .form-row input, + .aligned .form-row select, + .aligned .form-row textarea { + flex: 1 1 auto; + max-width: 100%; + } + + .aligned .checkbox-row { + align-items: center; + } + + .aligned .checkbox-row input { + flex: 0 1 auto; + margin: 0; + } + + .aligned .vCheckboxLabel { + flex: 1 0; + padding: 1px 0 0 5px; + } + + .aligned label + p, + .aligned label + div.help, + .aligned label + div.readonly { + padding: 0; + margin-left: 0; + } + + .aligned p.file-upload { + margin-left: 0; + font-size: 13px; + } + + span.clearable-file-input { + margin-left: 15px; + } + + span.clearable-file-input label { + font-size: 13px; + padding-bottom: 0; + } + + .aligned .timezonewarning { + flex: 1 0 100%; + margin-top: 5px; + } + + form .aligned .form-row div.help { + width: 100%; + margin: 5px 0 0; + padding: 0; + } + + form .aligned ul { + margin-left: 0; + padding-left: 0; + } + + form .aligned ul.radiolist { + margin-right: 15px; + margin-bottom: -3px; + } + + form .aligned ul.radiolist li + li { + margin-top: 5px; + } + + /* Related widget */ + + .related-widget-wrapper { + width: 100%; + display: flex; + align-items: flex-start; + } + + .related-widget-wrapper .selector { + order: 1; + } + + .related-widget-wrapper > a { + order: 2; + } + + .related-widget-wrapper .radiolist ~ a { + align-self: flex-end; + } + + .related-widget-wrapper > select ~ a { + align-self: center; + } + + select + .related-widget-wrapper-link, + .related-widget-wrapper-link + .related-widget-wrapper-link { + margin-left: 15px; + } + + /* Selector */ + + .selector { + flex-direction: column; + } + + .selector > * { + float: none; + } + + .selector-available, .selector-chosen { + margin-bottom: 0; + flex: 1 1 auto; + } + + .selector select { + max-height: 96px; + } + + .selector ul.selector-chooser { + display: block; + float: none; + width: 52px; + height: 26px; + padding: 0 2px; + margin: 15px auto 20px; + transform: none; + } + + .selector ul.selector-chooser li { + float: left; + } + + .selector-remove { + background-position: 0 0; + } + + .active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -20px; + } + + .selector-add { + background-position: 0 -40px; + } + + .active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -60px; + } + + /* Inlines */ + + .inline-group[data-inline-type="stacked"] .inline-related { + border: 2px solid #eee; + border-radius: 4px; + margin-top: 15px; + overflow: auto; + } + + .inline-group[data-inline-type="stacked"] .inline-related > * { + box-sizing: border-box; + } + + .inline-group[data-inline-type="stacked"] .inline-related + .inline-related { + margin-top: 30px; + } + + .inline-group[data-inline-type="stacked"] .inline-related .module { + padding: 0 10px; + } + + .inline-group[data-inline-type="stacked"] .inline-related .module .form-row:last-child { + border-bottom: none; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 { + padding: 10px; + border-top-width: 0; + border-bottom-width: 2px; + display: flex; + flex-wrap: wrap; + align-items: center; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 .inline_label { + margin-right: auto; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 span.delete { + float: none; + flex: 1 1 100%; + margin-top: 5px; + } + + .inline-group[data-inline-type="stacked"] .aligned .form-row > div:not([class]) { + width: 100%; + } + + .inline-group[data-inline-type="stacked"] .aligned label { + width: 100%; + } + + .inline-group[data-inline-type="stacked"] div.add-row { + margin-top: 15px; + border: 1px solid #eee; + border-radius: 4px; + } + + .inline-group div.add-row, + .inline-group .tabular tr.add-row td { + padding: 0; + } + + .inline-group div.add-row a, + .inline-group .tabular tr.add-row td a { + display: block; + padding: 8px 10px 8px 26px; + background-position: 8px 9px; + } + + /* Submit row */ + + .submit-row { + padding: 10px 10px 0; + margin: 0 0 15px; + display: flex; + flex-direction: column; + } + + .submit-row > * { + width: 100%; + } + + .submit-row input, .submit-row input.default, .submit-row a, .submit-row a.closelink { + float: none; + margin: 0 0 10px; + text-align: center; + } + + .submit-row a.closelink { + padding: 10px 0; + } + + .submit-row p.deletelink-box { + order: 4; + } + + /* Messages */ + + ul.messagelist li { + padding-left: 40px; + background-position: 15px 12px; + } + + ul.messagelist li.error { + background-position: 15px 12px; + } + + ul.messagelist li.warning { + background-position: 15px 14px; + } + + /* Paginator */ + + .paginator .this-page, .paginator a:link, .paginator a:visited { + padding: 4px 10px; + } + + /* Login */ + + body.login { + padding: 0 15px; + } + + .login #container { + width: auto; + max-width: 480px; + margin: 50px auto; + } + + .login #header, + .login #content { + padding: 15px; + } + + .login #content-main { + float: none; + } + + .login .form-row { + padding: 0; + } + + .login .form-row + .form-row { + margin-top: 15px; + } + + .login .form-row label { + display: block; + margin: 0 0 5px; + padding: 0; + line-height: 1.2; + } + + .login .submit-row { + padding: 15px 0 0; + } + + .login br, .login .submit-row label { + display: none; + } + + .login .submit-row input { + margin: 0; + text-transform: uppercase; + } + + .errornote { + margin: 0 0 20px; + padding: 8px 12px; + font-size: 13px; + } + + /* Calendar and clock */ + + .calendarbox, .clockbox { + position: fixed !important; + top: 50% !important; + left: 50% !important; + transform: translate(-50%, -50%); + margin: 0; + border: none; + overflow: visible; + } + + .calendarbox:before, .clockbox:before { + content: ''; + position: fixed; + top: 50%; + left: 50%; + width: 100vw; + height: 100vh; + background: rgba(0, 0, 0, 0.75); + transform: translate(-50%, -50%); + } + + .calendarbox > *, .clockbox > * { + position: relative; + z-index: 1; + } + + .calendarbox > div:first-child { + z-index: 2; + } + + .calendarbox .calendar, .clockbox h2 { + border-radius: 4px 4px 0 0; + overflow: hidden; + } + + .calendarbox .calendar-cancel, .clockbox .calendar-cancel { + border-radius: 0 0 4px 4px; + overflow: hidden; + } + + .calendar-shortcuts { + padding: 10px 0; + font-size: 12px; + line-height: 12px; + } + + .calendar-shortcuts a { + margin: 0 4px; + } + + .timelist a { + background: #fff; + padding: 4px; + } + + .calendar-cancel { + padding: 8px 10px; + } + + .clockbox h2 { + padding: 8px 15px; + } + + .calendar caption { + padding: 10px; + } + + .calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { + z-index: 1; + top: 10px; + } + + /* History */ + + table#change-history tbody th, table#change-history tbody td { + font-size: 13px; + word-break: break-word; + } + + table#change-history tbody th { + width: auto; + } + + /* Docs */ + + table.model tbody th, table.model tbody td { + font-size: 13px; + word-break: break-word; + } +} diff --git a/static_new/admin/css/responsive_rtl.css b/static_new/admin/css/responsive_rtl.css new file mode 100644 index 00000000..66d3c2f9 --- /dev/null +++ b/static_new/admin/css/responsive_rtl.css @@ -0,0 +1,80 @@ +/* TABLETS */ + +@media (max-width: 1024px) { + [dir="rtl"] .colMS { + margin-right: 0; + } + + [dir="rtl"] #user-tools { + text-align: right; + } + + [dir="rtl"] #changelist .actions label { + padding-left: 10px; + padding-right: 0; + } + + [dir="rtl"] #changelist .actions select { + margin-left: 0; + margin-right: 15px; + } + + [dir="rtl"] .change-list .filtered .results, + [dir="rtl"] .change-list .filtered .paginator, + [dir="rtl"] .filtered #toolbar, + [dir="rtl"] .filtered div.xfull, + [dir="rtl"] .filtered .actions, + [dir="rtl"] #changelist-filter { + margin-left: 0; + } + + [dir="rtl"] .inline-group ul.tools a.add, + [dir="rtl"] .inline-group div.add-row a, + [dir="rtl"] .inline-group .tabular tr.add-row td a { + padding: 8px 26px 8px 10px; + background-position: calc(100% - 8px) 9px; + } + + [dir="rtl"] .related-widget-wrapper-link + .selector { + margin-right: 0; + margin-left: 15px; + } + + [dir="rtl"] .selector .selector-filter label { + margin-right: 0; + margin-left: 8px; + } + + [dir="rtl"] .object-tools li { + float: right; + } + + [dir="rtl"] .object-tools li + li { + margin-left: 0; + margin-right: 15px; + } + + [dir="rtl"] .dashboard .module table td a { + padding-left: 0; + padding-right: 16px; + } +} + +/* MOBILE */ + +@media (max-width: 767px) { + [dir="rtl"] .aligned .related-lookup, + [dir="rtl"] .aligned .datetimeshortcuts { + margin-left: 0; + margin-right: 15px; + } + + [dir="rtl"] .aligned ul { + margin-right: 0; + } + + [dir="rtl"] #changelist-filter { + margin-left: 0; + margin-right: 0; + } +} diff --git a/static_new/admin/css/rtl.css b/static_new/admin/css/rtl.css new file mode 100644 index 00000000..a40aad0c --- /dev/null +++ b/static_new/admin/css/rtl.css @@ -0,0 +1,249 @@ +body { + direction: rtl; +} + +/* LOGIN */ + +.login .form-row { + float: right; +} + +.login .form-row label { + float: right; + padding-left: 0.5em; + padding-right: 0; + text-align: left; +} + +.login .submit-row { + clear: both; + padding: 1em 9.4em 0 0; +} + +/* GLOBAL */ + +th { + text-align: right; +} + +.module h2, .module caption { + text-align: right; +} + +.module ul, .module ol { + margin-left: 0; + margin-right: 1.5em; +} + +.viewlink, .addlink, .changelink { + padding-left: 0; + padding-right: 16px; + background-position: 100% 1px; +} + +.deletelink { + padding-left: 0; + padding-right: 16px; + background-position: 100% 1px; +} + +.object-tools { + float: left; +} + +thead th:first-child, +tfoot td:first-child { + border-left: none; +} + +/* LAYOUT */ + +#user-tools { + right: auto; + left: 0; + text-align: left; +} + +div.breadcrumbs { + text-align: right; +} + +#content-main { + float: right; +} + +#content-related { + float: left; + margin-left: -300px; + margin-right: auto; +} + +.colMS { + margin-left: 300px; + margin-right: 0; +} + +/* SORTABLE TABLES */ + +table thead th.sorted .sortoptions { + float: left; +} + +thead th.sorted .text { + padding-right: 0; + padding-left: 42px; +} + +/* dashboard styles */ + +.dashboard .module table td a { + padding-left: .6em; + padding-right: 16px; +} + +/* changelists styles */ + +.change-list .filtered table { + border-left: none; + border-right: 0px none; +} + +#changelist-filter { + border-left: none; + border-right: none; + margin-left: 0; + margin-right: 30px; +} + +#changelist-filter li.selected { + border-left: none; + padding-left: 10px; + margin-left: 0; + border-right: 5px solid #eaeaea; + padding-right: 10px; + margin-right: -15px; +} + +#changelist table tbody td:first-child, #changelist table tbody th:first-child { + border-right: none; + border-left: none; +} + +/* FORMS */ + +.aligned label { + padding: 0 0 3px 1em; + float: right; +} + +.submit-row { + text-align: left +} + +.submit-row p.deletelink-box { + float: right; +} + +.submit-row input.default { + margin-left: 0; +} + +.vDateField, .vTimeField { + margin-left: 2px; +} + +.aligned .form-row input { + margin-left: 5px; +} + +form .aligned p.help, form .aligned div.help { + clear: right; +} + +form .aligned ul { + margin-right: 163px; + margin-left: 0; +} + +form ul.inline li { + float: right; + padding-right: 0; + padding-left: 7px; +} + +input[type=submit].default, .submit-row input.default { + float: left; +} + +fieldset .fieldBox { + float: right; + margin-left: 20px; + margin-right: 0; +} + +.errorlist li { + background-position: 100% 12px; + padding: 0; +} + +.errornote { + background-position: 100% 12px; + padding: 10px 12px; +} + +/* WIDGETS */ + +.calendarnav-previous { + top: 0; + left: auto; + right: 10px; +} + +.calendarnav-next { + top: 0; + right: auto; + left: 10px; +} + +.calendar caption, .calendarbox h2 { + text-align: center; +} + +.selector { + float: right; +} + +.selector .selector-filter { + text-align: right; +} + +.inline-deletelink { + float: left; +} + +form .form-row p.datetime { + overflow: hidden; +} + +.related-widget-wrapper { + float: right; +} + +/* MISC */ + +.inline-related h2, .inline-group h2 { + text-align: right +} + +.inline-related h3 span.delete { + padding-right: 20px; + padding-left: inherit; + left: 10px; + right: inherit; + float:left; +} + +.inline-related h3 span.delete label { + margin-left: inherit; + margin-right: 2px; +} diff --git a/static_new/admin/css/vendor/select2/LICENSE-SELECT2.md b/static_new/admin/css/vendor/select2/LICENSE-SELECT2.md new file mode 100644 index 00000000..8cb8a2b1 --- /dev/null +++ b/static_new/admin/css/vendor/select2/LICENSE-SELECT2.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2012-2017 Kevin Brown, Igor Vaynberg, and Select2 contributors + +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/static_new/admin/css/vendor/select2/select2.css b/static_new/admin/css/vendor/select2/select2.css new file mode 100644 index 00000000..750b3207 --- /dev/null +++ b/static_new/admin/css/vendor/select2/select2.css @@ -0,0 +1,481 @@ +.select2-container { + box-sizing: border-box; + display: inline-block; + margin: 0; + position: relative; + vertical-align: middle; } + .select2-container .select2-selection--single { + box-sizing: border-box; + cursor: pointer; + display: block; + height: 28px; + user-select: none; + -webkit-user-select: none; } + .select2-container .select2-selection--single .select2-selection__rendered { + display: block; + padding-left: 8px; + padding-right: 20px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + .select2-container .select2-selection--single .select2-selection__clear { + position: relative; } + .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { + padding-right: 8px; + padding-left: 20px; } + .select2-container .select2-selection--multiple { + box-sizing: border-box; + cursor: pointer; + display: block; + min-height: 32px; + user-select: none; + -webkit-user-select: none; } + .select2-container .select2-selection--multiple .select2-selection__rendered { + display: inline-block; + overflow: hidden; + padding-left: 8px; + text-overflow: ellipsis; + white-space: nowrap; } + .select2-container .select2-search--inline { + float: left; } + .select2-container .select2-search--inline .select2-search__field { + box-sizing: border-box; + border: none; + font-size: 100%; + margin-top: 5px; + padding: 0; } + .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button { + -webkit-appearance: none; } + +.select2-dropdown { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + box-sizing: border-box; + display: block; + position: absolute; + left: -100000px; + width: 100%; + z-index: 1051; } + +.select2-results { + display: block; } + +.select2-results__options { + list-style: none; + margin: 0; + padding: 0; } + +.select2-results__option { + padding: 6px; + user-select: none; + -webkit-user-select: none; } + .select2-results__option[aria-selected] { + cursor: pointer; } + +.select2-container--open .select2-dropdown { + left: 0; } + +.select2-container--open .select2-dropdown--above { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + +.select2-container--open .select2-dropdown--below { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.select2-search--dropdown { + display: block; + padding: 4px; } + .select2-search--dropdown .select2-search__field { + padding: 4px; + width: 100%; + box-sizing: border-box; } + .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { + -webkit-appearance: none; } + .select2-search--dropdown.select2-search--hide { + display: none; } + +.select2-close-mask { + border: 0; + margin: 0; + padding: 0; + display: block; + position: fixed; + left: 0; + top: 0; + min-height: 100%; + min-width: 100%; + height: auto; + width: auto; + opacity: 0; + z-index: 99; + background-color: #fff; + filter: alpha(opacity=0); } + +.select2-hidden-accessible { + border: 0 !important; + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(50%) !important; + clip-path: inset(50%) !important; + height: 1px !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + width: 1px !important; + white-space: nowrap !important; } + +.select2-container--default .select2-selection--single { + background-color: #fff; + border: 1px solid #aaa; + border-radius: 4px; } + .select2-container--default .select2-selection--single .select2-selection__rendered { + color: #444; + line-height: 28px; } + .select2-container--default .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; } + .select2-container--default .select2-selection--single .select2-selection__placeholder { + color: #999; } + .select2-container--default .select2-selection--single .select2-selection__arrow { + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; } + .select2-container--default .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; } + +.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; } + +.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow { + left: 1px; + right: auto; } + +.select2-container--default.select2-container--disabled .select2-selection--single { + background-color: #eee; + cursor: default; } + .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { + display: none; } + +.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; } + +.select2-container--default .select2-selection--multiple { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + cursor: text; } + .select2-container--default .select2-selection--multiple .select2-selection__rendered { + box-sizing: border-box; + list-style: none; + margin: 0; + padding: 0 5px; + width: 100%; } + .select2-container--default .select2-selection--multiple .select2-selection__rendered li { + list-style: none; } + .select2-container--default .select2-selection--multiple .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin-top: 5px; + margin-right: 10px; + padding: 1px; } + .select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #e4e4e4; + border: 1px solid #aaa; + border-radius: 4px; + cursor: default; + float: left; + margin-right: 5px; + margin-top: 5px; + padding: 0 5px; } + .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { + color: #999; + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; } + .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { + color: #333; } + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline { + float: right; } + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + margin-left: 5px; + margin-right: auto; } + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; } + +.select2-container--default.select2-container--focus .select2-selection--multiple { + border: solid black 1px; + outline: 0; } + +.select2-container--default.select2-container--disabled .select2-selection--multiple { + background-color: #eee; + cursor: default; } + +.select2-container--default.select2-container--disabled .select2-selection__choice__remove { + display: none; } + +.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + +.select2-container--default .select2-search--dropdown .select2-search__field { + border: 1px solid #aaa; } + +.select2-container--default .select2-search--inline .select2-search__field { + background: transparent; + border: none; + outline: 0; + box-shadow: none; + -webkit-appearance: textfield; } + +.select2-container--default .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; } + +.select2-container--default .select2-results__option[role=group] { + padding: 0; } + +.select2-container--default .select2-results__option[aria-disabled=true] { + color: #999; } + +.select2-container--default .select2-results__option[aria-selected=true] { + background-color: #ddd; } + +.select2-container--default .select2-results__option .select2-results__option { + padding-left: 1em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__group { + padding-left: 0; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option { + margin-left: -1em; + padding-left: 2em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -2em; + padding-left: 3em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -3em; + padding-left: 4em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -4em; + padding-left: 5em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -5em; + padding-left: 6em; } + +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: #5897fb; + color: white; } + +.select2-container--default .select2-results__group { + cursor: default; + display: block; + padding: 6px; } + +.select2-container--classic .select2-selection--single { + background-color: #f7f7f7; + border: 1px solid #aaa; + border-radius: 4px; + outline: 0; + background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%); + background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%); + background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } + .select2-container--classic .select2-selection--single:focus { + border: 1px solid #5897fb; } + .select2-container--classic .select2-selection--single .select2-selection__rendered { + color: #444; + line-height: 28px; } + .select2-container--classic .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin-right: 10px; } + .select2-container--classic .select2-selection--single .select2-selection__placeholder { + color: #999; } + .select2-container--classic .select2-selection--single .select2-selection__arrow { + background-color: #ddd; + border: none; + border-left: 1px solid #aaa; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; + background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%); + background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%); + background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); } + .select2-container--classic .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; } + +.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; } + +.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { + border: none; + border-right: 1px solid #aaa; + border-radius: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + left: 1px; + right: auto; } + +.select2-container--classic.select2-container--open .select2-selection--single { + border: 1px solid #5897fb; } + .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { + background: transparent; + border: none; } + .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; } + +.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; + background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%); + background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%); + background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } + +.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%); + background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%); + background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); } + +.select2-container--classic .select2-selection--multiple { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + cursor: text; + outline: 0; } + .select2-container--classic .select2-selection--multiple:focus { + border: 1px solid #5897fb; } + .select2-container--classic .select2-selection--multiple .select2-selection__rendered { + list-style: none; + margin: 0; + padding: 0 5px; } + .select2-container--classic .select2-selection--multiple .select2-selection__clear { + display: none; } + .select2-container--classic .select2-selection--multiple .select2-selection__choice { + background-color: #e4e4e4; + border: 1px solid #aaa; + border-radius: 4px; + cursor: default; + float: left; + margin-right: 5px; + margin-top: 5px; + padding: 0 5px; } + .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { + color: #888; + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; } + .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { + color: #555; } + +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + float: right; + margin-left: 5px; + margin-right: auto; } + +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; } + +.select2-container--classic.select2-container--open .select2-selection--multiple { + border: 1px solid #5897fb; } + +.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + +.select2-container--classic .select2-search--dropdown .select2-search__field { + border: 1px solid #aaa; + outline: 0; } + +.select2-container--classic .select2-search--inline .select2-search__field { + outline: 0; + box-shadow: none; } + +.select2-container--classic .select2-dropdown { + background-color: white; + border: 1px solid transparent; } + +.select2-container--classic .select2-dropdown--above { + border-bottom: none; } + +.select2-container--classic .select2-dropdown--below { + border-top: none; } + +.select2-container--classic .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; } + +.select2-container--classic .select2-results__option[role=group] { + padding: 0; } + +.select2-container--classic .select2-results__option[aria-disabled=true] { + color: grey; } + +.select2-container--classic .select2-results__option--highlighted[aria-selected] { + background-color: #3875d7; + color: white; } + +.select2-container--classic .select2-results__group { + cursor: default; + display: block; + padding: 6px; } + +.select2-container--classic.select2-container--open .select2-dropdown { + border-color: #5897fb; } diff --git a/static_new/admin/css/vendor/select2/select2.min.css b/static_new/admin/css/vendor/select2/select2.min.css new file mode 100644 index 00000000..7c18ad59 --- /dev/null +++ b/static_new/admin/css/vendor/select2/select2.min.css @@ -0,0 +1 @@ +.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px;padding:1px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} diff --git a/static_new/admin/css/widgets.css b/static_new/admin/css/widgets.css new file mode 100644 index 00000000..14ef12db --- /dev/null +++ b/static_new/admin/css/widgets.css @@ -0,0 +1,574 @@ +/* SELECTOR (FILTER INTERFACE) */ + +.selector { + width: 800px; + float: left; +} + +.selector select { + width: 380px; + height: 17.2em; +} + +.selector-available, .selector-chosen { + float: left; + width: 380px; + text-align: center; + margin-bottom: 5px; +} + +.selector-chosen select { + border-top: none; +} + +.selector-available h2, .selector-chosen h2 { + border: 1px solid #ccc; + border-radius: 4px 4px 0 0; +} + +.selector-chosen h2 { + background: #79aec8; + color: #fff; +} + +.selector .selector-available h2 { + background: #f8f8f8; + color: #666; +} + +.selector .selector-filter { + background: white; + border: 1px solid #ccc; + border-width: 0 1px; + padding: 8px; + color: #999; + font-size: 10px; + margin: 0; + text-align: left; +} + +.selector .selector-filter label, +.inline-group .aligned .selector .selector-filter label { + float: left; + margin: 7px 0 0; + width: 18px; + height: 18px; + padding: 0; + overflow: hidden; + line-height: 1; +} + +.selector .selector-available input { + width: 320px; + margin-left: 8px; +} + +.selector ul.selector-chooser { + float: left; + width: 22px; + background-color: #eee; + border-radius: 10px; + margin: 10em 5px 0 5px; + padding: 0; +} + +.selector-chooser li { + margin: 0; + padding: 3px; + list-style-type: none; +} + +.selector select { + padding: 0 10px; + margin: 0 0 10px; + border-radius: 0 0 4px 4px; +} + +.selector-add, .selector-remove { + width: 16px; + height: 16px; + display: block; + text-indent: -3000px; + overflow: hidden; + cursor: default; + opacity: 0.3; +} + +.active.selector-add, .active.selector-remove { + opacity: 1; +} + +.active.selector-add:hover, .active.selector-remove:hover { + cursor: pointer; +} + +.selector-add { + background: url(../img/selector-icons.svg) 0 -96px no-repeat; +} + +.active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -112px; +} + +.selector-remove { + background: url(../img/selector-icons.svg) 0 -64px no-repeat; +} + +.active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -80px; +} + +a.selector-chooseall, a.selector-clearall { + display: inline-block; + height: 16px; + text-align: left; + margin: 1px auto 3px; + overflow: hidden; + font-weight: bold; + line-height: 16px; + color: #666; + text-decoration: none; + opacity: 0.3; +} + +a.active.selector-chooseall:focus, a.active.selector-clearall:focus, +a.active.selector-chooseall:hover, a.active.selector-clearall:hover { + color: #447e9b; +} + +a.active.selector-chooseall, a.active.selector-clearall { + opacity: 1; +} + +a.active.selector-chooseall:hover, a.active.selector-clearall:hover { + cursor: pointer; +} + +a.selector-chooseall { + padding: 0 18px 0 0; + background: url(../img/selector-icons.svg) right -160px no-repeat; + cursor: default; +} + +a.active.selector-chooseall:focus, a.active.selector-chooseall:hover { + background-position: 100% -176px; +} + +a.selector-clearall { + padding: 0 0 0 18px; + background: url(../img/selector-icons.svg) 0 -128px no-repeat; + cursor: default; +} + +a.active.selector-clearall:focus, a.active.selector-clearall:hover { + background-position: 0 -144px; +} + +/* STACKED SELECTORS */ + +.stacked { + float: left; + width: 490px; +} + +.stacked select { + width: 480px; + height: 10.1em; +} + +.stacked .selector-available, .stacked .selector-chosen { + width: 480px; +} + +.stacked .selector-available { + margin-bottom: 0; +} + +.stacked .selector-available input { + width: 422px; +} + +.stacked ul.selector-chooser { + height: 22px; + width: 50px; + margin: 0 0 10px 40%; + background-color: #eee; + border-radius: 10px; +} + +.stacked .selector-chooser li { + float: left; + padding: 3px 3px 3px 5px; +} + +.stacked .selector-chooseall, .stacked .selector-clearall { + display: none; +} + +.stacked .selector-add { + background: url(../img/selector-icons.svg) 0 -32px no-repeat; + cursor: default; +} + +.stacked .active.selector-add { + background-position: 0 -32px; + cursor: pointer; +} + +.stacked .active.selector-add:focus, .stacked .active.selector-add:hover { + background-position: 0 -48px; + cursor: pointer; +} + +.stacked .selector-remove { + background: url(../img/selector-icons.svg) 0 0 no-repeat; + cursor: default; +} + +.stacked .active.selector-remove { + background-position: 0 0px; + cursor: pointer; +} + +.stacked .active.selector-remove:focus, .stacked .active.selector-remove:hover { + background-position: 0 -16px; + cursor: pointer; +} + +.selector .help-icon { + background: url(../img/icon-unknown.svg) 0 0 no-repeat; + display: inline-block; + vertical-align: middle; + margin: -2px 0 0 2px; + width: 13px; + height: 13px; +} + +.selector .selector-chosen .help-icon { + background: url(../img/icon-unknown-alt.svg) 0 0 no-repeat; +} + +.selector .search-label-icon { + background: url(../img/search.svg) 0 0 no-repeat; + display: inline-block; + height: 18px; + width: 18px; +} + +/* DATE AND TIME */ + +p.datetime { + line-height: 20px; + margin: 0; + padding: 0; + color: #666; + font-weight: bold; +} + +.datetime span { + white-space: nowrap; + font-weight: normal; + font-size: 11px; + color: #ccc; +} + +.datetime input, .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField { + margin-left: 5px; + margin-bottom: 4px; +} + +table p.datetime { + font-size: 11px; + margin-left: 0; + padding-left: 0; +} + +.datetimeshortcuts .clock-icon, .datetimeshortcuts .date-icon { + position: relative; + display: inline-block; + vertical-align: middle; + height: 16px; + width: 16px; + overflow: hidden; +} + +.datetimeshortcuts .clock-icon { + background: url(../img/icon-clock.svg) 0 0 no-repeat; +} + +.datetimeshortcuts a:focus .clock-icon, +.datetimeshortcuts a:hover .clock-icon { + background-position: 0 -16px; +} + +.datetimeshortcuts .date-icon { + background: url(../img/icon-calendar.svg) 0 0 no-repeat; + top: -1px; +} + +.datetimeshortcuts a:focus .date-icon, +.datetimeshortcuts a:hover .date-icon { + background-position: 0 -16px; +} + +.timezonewarning { + font-size: 11px; + color: #999; +} + +/* URL */ + +p.url { + line-height: 20px; + margin: 0; + padding: 0; + color: #666; + font-size: 11px; + font-weight: bold; +} + +.url a { + font-weight: normal; +} + +/* FILE UPLOADS */ + +p.file-upload { + line-height: 20px; + margin: 0; + padding: 0; + color: #666; + font-size: 11px; + font-weight: bold; +} + +.aligned p.file-upload { + margin-left: 170px; +} + +.file-upload a { + font-weight: normal; +} + +.file-upload .deletelink { + margin-left: 5px; +} + +span.clearable-file-input label { + color: #333; + font-size: 11px; + display: inline; + float: none; +} + +/* CALENDARS & CLOCKS */ + +.calendarbox, .clockbox { + margin: 5px auto; + font-size: 12px; + width: 19em; + text-align: center; + background: white; + border: 1px solid #ddd; + border-radius: 4px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); + overflow: hidden; + position: relative; +} + +.clockbox { + width: auto; +} + +.calendar { + margin: 0; + padding: 0; +} + +.calendar table { + margin: 0; + padding: 0; + border-collapse: collapse; + background: white; + width: 100%; +} + +.calendar caption, .calendarbox h2 { + margin: 0; + text-align: center; + border-top: none; + background: #f5dd5d; + font-weight: 700; + font-size: 12px; + color: #333; +} + +.calendar th { + padding: 8px 5px; + background: #f8f8f8; + border-bottom: 1px solid #ddd; + font-weight: 400; + font-size: 12px; + text-align: center; + color: #666; +} + +.calendar td { + font-weight: 400; + font-size: 12px; + text-align: center; + padding: 0; + border-top: 1px solid #eee; + border-bottom: none; +} + +.calendar td.selected a { + background: #79aec8; + color: #fff; +} + +.calendar td.nonday { + background: #f8f8f8; +} + +.calendar td.today a { + font-weight: 700; +} + +.calendar td a, .timelist a { + display: block; + font-weight: 400; + padding: 6px; + text-decoration: none; + color: #444; +} + +.calendar td a:focus, .timelist a:focus, +.calendar td a:hover, .timelist a:hover { + background: #79aec8; + color: white; +} + +.calendar td a:active, .timelist a:active { + background: #417690; + color: white; +} + +.calendarnav { + font-size: 10px; + text-align: center; + color: #ccc; + margin: 0; + padding: 1px 3px; +} + +.calendarnav a:link, #calendarnav a:visited, +#calendarnav a:focus, #calendarnav a:hover { + color: #999; +} + +.calendar-shortcuts { + background: white; + font-size: 11px; + line-height: 11px; + border-top: 1px solid #eee; + padding: 8px 0; + color: #ccc; +} + +.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { + display: block; + position: absolute; + top: 8px; + width: 15px; + height: 15px; + text-indent: -9999px; + padding: 0; +} + +.calendarnav-previous { + left: 10px; + background: url(../img/calendar-icons.svg) 0 0 no-repeat; +} + +.calendarbox .calendarnav-previous:focus, +.calendarbox .calendarnav-previous:hover { + background-position: 0 -15px; +} + +.calendarnav-next { + right: 10px; + background: url(../img/calendar-icons.svg) 0 -30px no-repeat; +} + +.calendarbox .calendarnav-next:focus, +.calendarbox .calendarnav-next:hover { + background-position: 0 -45px; +} + +.calendar-cancel { + margin: 0; + padding: 4px 0; + font-size: 12px; + background: #eee; + border-top: 1px solid #ddd; + color: #333; +} + +.calendar-cancel:focus, .calendar-cancel:hover { + background: #ddd; +} + +.calendar-cancel a { + color: black; + display: block; +} + +ul.timelist, .timelist li { + list-style-type: none; + margin: 0; + padding: 0; +} + +.timelist a { + padding: 2px; +} + +/* EDIT INLINE */ + +.inline-deletelink { + float: right; + text-indent: -9999px; + background: url(../img/inline-delete.svg) 0 0 no-repeat; + width: 16px; + height: 16px; + border: 0px none; +} + +.inline-deletelink:focus, .inline-deletelink:hover { + cursor: pointer; +} + +/* RELATED WIDGET WRAPPER */ +.related-widget-wrapper { + float: left; /* display properly in form rows with multiple fields */ + overflow: hidden; /* clear floated contents */ +} + +.related-widget-wrapper-link { + opacity: 0.3; +} + +.related-widget-wrapper-link:link { + opacity: .8; +} + +.related-widget-wrapper-link:link:focus, +.related-widget-wrapper-link:link:hover { + opacity: 1; +} + +select + .related-widget-wrapper-link, +.related-widget-wrapper-link + .related-widget-wrapper-link { + margin-left: 7px; +} diff --git a/static_new/admin/fonts/LICENSE.txt b/static_new/admin/fonts/LICENSE.txt new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/static_new/admin/fonts/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/static_new/admin/fonts/README.txt b/static_new/admin/fonts/README.txt new file mode 100644 index 00000000..b247bef3 --- /dev/null +++ b/static_new/admin/fonts/README.txt @@ -0,0 +1,3 @@ +Roboto webfont source: https://www.google.com/fonts/specimen/Roboto +WOFF files extracted using https://github.com/majodev/google-webfonts-helper +Weights used in this project: Light (300), Regular (400), Bold (700) diff --git a/static_new/admin/fonts/Roboto-Bold-webfont.woff b/static_new/admin/fonts/Roboto-Bold-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..6e0f56267035c2321ca6b590adcfc0fc93b7dc51 GIT binary patch literal 86184 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 z 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

qKeC=lP*lYeHehI6Q)MS6&+vP#n675bfQ1FhUtH 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 I3*a(Q$S^tF@Bjb+ literal 0 HcmV?d00001 diff --git a/static_new/admin/fonts/Roboto-Light-webfont.woff b/static_new/admin/fonts/Roboto-Light-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..b9e99185c8300c786fa77a0490fefdd26ab2e99e GIT binary patch literal 85692 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ŐfpB|})B55Bx+ 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

, because it just gets in the way. + from_box.parentNode.removeChild(p); + } else if (p.classList.contains("help")) { + // Move help text up to the top so it isn't below the select + // boxes or wrapped off on the side to the right of the add + // button: + from_box.parentNode.insertBefore(p, from_box.parentNode.firstChild); + } + } + + //

or
+ const selector_div = quickElement('div', from_box.parentNode); + selector_div.className = is_stacked ? 'selector stacked' : 'selector'; + + //
+ const selector_available = quickElement('div', selector_div); + selector_available.className = 'selector-available'; + const title_available = quickElement('h2', selector_available, interpolate(gettext('Available %s') + ' ', [field_name])); + quickElement( + 'span', title_available, '', + 'class', 'help help-tooltip help-icon', + 'title', interpolate( + gettext( + 'This is the list of available %s. You may choose some by ' + + 'selecting them in the box below and then clicking the ' + + '"Choose" arrow between the two boxes.' + ), + [field_name] + ) + ); + + const filter_p = quickElement('p', selector_available, '', 'id', field_id + '_filter'); + filter_p.className = 'selector-filter'; + + const search_filter_label = quickElement('label', filter_p, '', 'for', field_id + '_input'); + + quickElement( + 'span', search_filter_label, '', + 'class', 'help-tooltip search-label-icon', + 'title', interpolate(gettext("Type into this box to filter down the list of available %s."), [field_name]) + ); + + filter_p.appendChild(document.createTextNode(' ')); + + const filter_input = quickElement('input', filter_p, '', 'type', 'text', 'placeholder', gettext("Filter")); + filter_input.id = field_id + '_input'; + + selector_available.appendChild(from_box); + const choose_all = quickElement('a', selector_available, gettext('Choose all'), 'title', interpolate(gettext('Click to choose all %s at once.'), [field_name]), 'href', '#', 'id', field_id + '_add_all_link'); + choose_all.className = 'selector-chooseall'; + + //
    + const selector_chooser = quickElement('ul', selector_div); + selector_chooser.className = 'selector-chooser'; + const add_link = quickElement('a', quickElement('li', selector_chooser), gettext('Choose'), 'title', gettext('Choose'), 'href', '#', 'id', field_id + '_add_link'); + add_link.className = 'selector-add'; + const remove_link = quickElement('a', quickElement('li', selector_chooser), gettext('Remove'), 'title', gettext('Remove'), 'href', '#', 'id', field_id + '_remove_link'); + remove_link.className = 'selector-remove'; + + //
    + const selector_chosen = quickElement('div', selector_div); + selector_chosen.className = 'selector-chosen'; + const title_chosen = quickElement('h2', selector_chosen, interpolate(gettext('Chosen %s') + ' ', [field_name])); + quickElement( + 'span', title_chosen, '', + 'class', 'help help-tooltip help-icon', + 'title', interpolate( + gettext( + 'This is the list of chosen %s. You may remove some by ' + + 'selecting them in the box below and then clicking the ' + + '"Remove" arrow between the two boxes.' + ), + [field_name] + ) + ); + + const to_box = quickElement('select', selector_chosen, '', 'id', field_id + '_to', 'multiple', '', 'size', from_box.size, 'name', from_box.name); + to_box.className = 'filtered'; + const clear_all = quickElement('a', selector_chosen, gettext('Remove all'), 'title', interpolate(gettext('Click to remove all chosen %s at once.'), [field_name]), 'href', '#', 'id', field_id + '_remove_all_link'); + clear_all.className = 'selector-clearall'; + + from_box.name = from_box.name + '_old'; + + // Set up the JavaScript event handlers for the select box filter interface + const move_selection = function(e, elem, move_func, from, to) { + if (elem.classList.contains('active')) { + move_func(from, to); + SelectFilter.refresh_icons(field_id); + } + e.preventDefault(); + }; + choose_all.addEventListener('click', function(e) { + move_selection(e, this, SelectBox.move_all, field_id + '_from', field_id + '_to'); + }); + add_link.addEventListener('click', function(e) { + move_selection(e, this, SelectBox.move, field_id + '_from', field_id + '_to'); + }); + remove_link.addEventListener('click', function(e) { + move_selection(e, this, SelectBox.move, field_id + '_to', field_id + '_from'); + }); + clear_all.addEventListener('click', function(e) { + move_selection(e, this, SelectBox.move_all, field_id + '_to', field_id + '_from'); + }); + filter_input.addEventListener('keypress', function(e) { + SelectFilter.filter_key_press(e, field_id); + }); + filter_input.addEventListener('keyup', function(e) { + SelectFilter.filter_key_up(e, field_id); + }); + filter_input.addEventListener('keydown', function(e) { + SelectFilter.filter_key_down(e, field_id); + }); + selector_div.addEventListener('change', function(e) { + if (e.target.tagName === 'SELECT') { + SelectFilter.refresh_icons(field_id); + } + }); + selector_div.addEventListener('dblclick', function(e) { + if (e.target.tagName === 'OPTION') { + if (e.target.closest('select').id === field_id + '_to') { + SelectBox.move(field_id + '_to', field_id + '_from'); + } else { + SelectBox.move(field_id + '_from', field_id + '_to'); + } + SelectFilter.refresh_icons(field_id); + } + }); + from_box.closest('form').addEventListener('submit', function() { + SelectBox.select_all(field_id + '_to'); + }); + SelectBox.init(field_id + '_from'); + SelectBox.init(field_id + '_to'); + // Move selected from_box options to to_box + SelectBox.move(field_id + '_from', field_id + '_to'); + + if (!is_stacked) { + // In horizontal mode, give the same height to the two boxes. + const j_from_box = document.getElementById(field_id + '_from'); + const j_to_box = document.getElementById(field_id + '_to'); + let height = filter_p.offsetHeight + j_from_box.offsetHeight; + + const j_to_box_style = window.getComputedStyle(j_to_box); + if (j_to_box_style.getPropertyValue('box-sizing') === 'border-box') { + // Add the padding and border to the final height. + height += parseInt(j_to_box_style.getPropertyValue('padding-top'), 10) + + parseInt(j_to_box_style.getPropertyValue('padding-bottom'), 10) + + parseInt(j_to_box_style.getPropertyValue('border-top-width'), 10) + + parseInt(j_to_box_style.getPropertyValue('border-bottom-width'), 10); + } + + j_to_box.style.height = height + 'px'; + } + + // Initial icon refresh + SelectFilter.refresh_icons(field_id); + }, + any_selected: function(field) { + // Temporarily add the required attribute and check validity. + field.required = true; + const any_selected = field.checkValidity(); + field.required = false; + return any_selected; + }, + refresh_icons: function(field_id) { + const from = document.getElementById(field_id + '_from'); + const to = document.getElementById(field_id + '_to'); + // Active if at least one item is selected + document.getElementById(field_id + '_add_link').classList.toggle('active', SelectFilter.any_selected(from)); + document.getElementById(field_id + '_remove_link').classList.toggle('active', SelectFilter.any_selected(to)); + // Active if the corresponding box isn't empty + document.getElementById(field_id + '_add_all_link').classList.toggle('active', from.querySelector('option')); + document.getElementById(field_id + '_remove_all_link').classList.toggle('active', to.querySelector('option')); + }, + filter_key_press: function(event, field_id) { + const from = document.getElementById(field_id + '_from'); + // don't submit form if user pressed Enter + if ((event.which && event.which === 13) || (event.keyCode && event.keyCode === 13)) { + from.selectedIndex = 0; + SelectBox.move(field_id + '_from', field_id + '_to'); + from.selectedIndex = 0; + event.preventDefault(); + } + }, + filter_key_up: function(event, field_id) { + const from = document.getElementById(field_id + '_from'); + const temp = from.selectedIndex; + SelectBox.filter(field_id + '_from', document.getElementById(field_id + '_input').value); + from.selectedIndex = temp; + }, + filter_key_down: function(event, field_id) { + const from = document.getElementById(field_id + '_from'); + // right arrow -- move across + if ((event.which && event.which === 39) || (event.keyCode && event.keyCode === 39)) { + const old_index = from.selectedIndex; + SelectBox.move(field_id + '_from', field_id + '_to'); + from.selectedIndex = (old_index === from.length) ? from.length - 1 : old_index; + return; + } + // down arrow -- wrap around + if ((event.which && event.which === 40) || (event.keyCode && event.keyCode === 40)) { + from.selectedIndex = (from.length === from.selectedIndex + 1) ? 0 : from.selectedIndex + 1; + } + // up arrow -- wrap around + if ((event.which && event.which === 38) || (event.keyCode && event.keyCode === 38)) { + from.selectedIndex = (from.selectedIndex === 0) ? from.length - 1 : from.selectedIndex - 1; + } + } + }; + + window.addEventListener('load', function(e) { + document.querySelectorAll('select.selectfilter, select.selectfilterstacked').forEach(function(el) { + const data = el.dataset; + SelectFilter.init(el.id, data.fieldName, parseInt(data.isStacked, 10)); + }); + }); +} diff --git a/static_new/admin/js/actions.js b/static_new/admin/js/actions.js new file mode 100644 index 00000000..dae69920 --- /dev/null +++ b/static_new/admin/js/actions.js @@ -0,0 +1,154 @@ +/*global gettext, interpolate, ngettext*/ +'use strict'; +{ + const $ = django.jQuery; + let lastChecked; + + $.fn.actions = function(opts) { + const options = $.extend({}, $.fn.actions.defaults, opts); + const actionCheckboxes = $(this); + let list_editable_changed = false; + const showQuestion = function() { + $(options.acrossClears).hide(); + $(options.acrossQuestions).show(); + $(options.allContainer).hide(); + }, + showClear = function() { + $(options.acrossClears).show(); + $(options.acrossQuestions).hide(); + $(options.actionContainer).toggleClass(options.selectedClass); + $(options.allContainer).show(); + $(options.counterContainer).hide(); + }, + reset = function() { + $(options.acrossClears).hide(); + $(options.acrossQuestions).hide(); + $(options.allContainer).hide(); + $(options.counterContainer).show(); + }, + clearAcross = function() { + reset(); + $(options.acrossInput).val(0); + $(options.actionContainer).removeClass(options.selectedClass); + }, + checker = function(checked) { + if (checked) { + showQuestion(); + } else { + reset(); + } + $(actionCheckboxes).prop("checked", checked) + .parent().parent().toggleClass(options.selectedClass, checked); + }, + updateCounter = function() { + const sel = $(actionCheckboxes).filter(":checked").length; + // data-actions-icnt is defined in the generated HTML + // and contains the total amount of objects in the queryset + const actions_icnt = $('.action-counter').data('actionsIcnt'); + $(options.counterContainer).html(interpolate( + ngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), { + sel: sel, + cnt: actions_icnt + }, true)); + $(options.allToggle).prop("checked", function() { + let value; + if (sel === actionCheckboxes.length) { + value = true; + showQuestion(); + } else { + value = false; + clearAcross(); + } + return value; + }); + }; + // Show counter by default + $(options.counterContainer).show(); + // Check state of checkboxes and reinit state if needed + $(this).filter(":checked").each(function(i) { + $(this).parent().parent().toggleClass(options.selectedClass); + updateCounter(); + if ($(options.acrossInput).val() === 1) { + showClear(); + } + }); + $(options.allToggle).show().on('click', function() { + checker($(this).prop("checked")); + updateCounter(); + }); + $("a", options.acrossQuestions).on('click', function(event) { + event.preventDefault(); + $(options.acrossInput).val(1); + showClear(); + }); + $("a", options.acrossClears).on('click', function(event) { + event.preventDefault(); + $(options.allToggle).prop("checked", false); + clearAcross(); + checker(0); + updateCounter(); + }); + lastChecked = null; + $(actionCheckboxes).on('click', function(event) { + if (!event) { event = window.event; } + const target = event.target ? event.target : event.srcElement; + if (lastChecked && $.data(lastChecked) !== $.data(target) && event.shiftKey === true) { + let inrange = false; + $(lastChecked).prop("checked", target.checked) + .parent().parent().toggleClass(options.selectedClass, target.checked); + $(actionCheckboxes).each(function() { + if ($.data(this) === $.data(lastChecked) || $.data(this) === $.data(target)) { + inrange = (inrange) ? false : true; + } + if (inrange) { + $(this).prop("checked", target.checked) + .parent().parent().toggleClass(options.selectedClass, target.checked); + } + }); + } + $(target).parent().parent().toggleClass(options.selectedClass, target.checked); + lastChecked = target; + updateCounter(); + }); + $('form#changelist-form table#result_list tr').on('change', 'td:gt(0) :input', function() { + list_editable_changed = true; + }); + $('form#changelist-form button[name="index"]').on('click', function(event) { + if (list_editable_changed) { + return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost.")); + } + }); + $('form#changelist-form input[name="_save"]').on('click', function(event) { + let action_changed = false; + $('select option:selected', options.actionContainer).each(function() { + if ($(this).val()) { + action_changed = true; + } + }); + if (action_changed) { + if (list_editable_changed) { + return confirm(gettext("You have selected an action, but you haven’t saved your changes to individual fields yet. Please click OK to save. You’ll need to re-run the action.")); + } else { + return confirm(gettext("You have selected an action, and you haven’t made any changes on individual fields. You’re probably looking for the Go button rather than the Save button.")); + } + } + }); + }; + /* Setup plugin defaults */ + $.fn.actions.defaults = { + actionContainer: "div.actions", + counterContainer: "span.action-counter", + allContainer: "div.actions span.all", + acrossInput: "div.actions input.select-across", + acrossQuestions: "div.actions span.question", + acrossClears: "div.actions span.clear", + allToggle: "#action-toggle", + selectedClass: "selected" + }; + $(document).ready(function() { + const $actionsEls = $('tr input.action-select'); + if ($actionsEls.length > 0) { + $actionsEls.actions(); + } + }); +} diff --git a/static_new/admin/js/actions.min.js b/static_new/admin/js/actions.min.js new file mode 100644 index 00000000..29fd0d8c --- /dev/null +++ b/static_new/admin/js/actions.min.js @@ -0,0 +1,7 @@ +'use strict';{const a=django.jQuery;let e;a.fn.actions=function(g){const b=a.extend({},a.fn.actions.defaults,g),f=a(this);let k=!1;const l=function(){a(b.acrossClears).hide();a(b.acrossQuestions).show();a(b.allContainer).hide()},m=function(){a(b.acrossClears).show();a(b.acrossQuestions).hide();a(b.actionContainer).toggleClass(b.selectedClass);a(b.allContainer).show();a(b.counterContainer).hide()},n=function(){a(b.acrossClears).hide();a(b.acrossQuestions).hide();a(b.allContainer).hide();a(b.counterContainer).show()}, +p=function(){n();a(b.acrossInput).val(0);a(b.actionContainer).removeClass(b.selectedClass)},q=function(c){c?l():n();a(f).prop("checked",c).parent().parent().toggleClass(b.selectedClass,c)},h=function(){const c=a(f).filter(":checked").length,d=a(".action-counter").data("actionsIcnt");a(b.counterContainer).html(interpolate(ngettext("%(sel)s of %(cnt)s selected","%(sel)s of %(cnt)s selected",c),{sel:c,cnt:d},!0));a(b.allToggle).prop("checked",function(){let a;c===f.length?(a=!0,l()):(a=!1,p());return a})}; +a(b.counterContainer).show();a(this).filter(":checked").each(function(c){a(this).parent().parent().toggleClass(b.selectedClass);h();1===a(b.acrossInput).val()&&m()});a(b.allToggle).show().on("click",function(){q(a(this).prop("checked"));h()});a("a",b.acrossQuestions).on("click",function(c){c.preventDefault();a(b.acrossInput).val(1);m()});a("a",b.acrossClears).on("click",function(c){c.preventDefault();a(b.allToggle).prop("checked",!1);p();q(0);h()});e=null;a(f).on("click",function(c){c||(c=window.event); +const d=c.target?c.target:c.srcElement;if(e&&a.data(e)!==a.data(d)&&!0===c.shiftKey){let c=!1;a(e).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked);a(f).each(function(){if(a.data(this)===a.data(e)||a.data(this)===a.data(d))c=c?!1:!0;c&&a(this).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked)})}a(d).parent().parent().toggleClass(b.selectedClass,d.checked);e=d;h()});a("form#changelist-form table#result_list tr").on("change","td:gt(0) :input", +function(){k=!0});a('form#changelist-form button[name="index"]').on("click",function(a){if(k)return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost."))});a('form#changelist-form input[name="_save"]').on("click",function(c){let d=!1;a("select option:selected",b.actionContainer).each(function(){a(this).val()&&(d=!0)});if(d)return k?confirm(gettext("You have selected an action, but you haven\u2019t saved your changes to individual fields yet. Please click OK to save. You\u2019ll need to re-run the action.")): +confirm(gettext("You have selected an action, and you haven\u2019t made any changes on individual fields. You\u2019re probably looking for the Go button rather than the Save button."))})};a.fn.actions.defaults={actionContainer:"div.actions",counterContainer:"span.action-counter",allContainer:"div.actions span.all",acrossInput:"div.actions input.select-across",acrossQuestions:"div.actions span.question",acrossClears:"div.actions span.clear",allToggle:"#action-toggle",selectedClass:"selected"};a(document).ready(function(){const g= +a("tr input.action-select");0 +// +'use strict'; +{ + const DateTimeShortcuts = { + calendars: [], + calendarInputs: [], + clockInputs: [], + clockHours: { + default_: [ + [gettext_noop('Now'), -1], + [gettext_noop('Midnight'), 0], + [gettext_noop('6 a.m.'), 6], + [gettext_noop('Noon'), 12], + [gettext_noop('6 p.m.'), 18] + ] + }, + dismissClockFunc: [], + dismissCalendarFunc: [], + calendarDivName1: 'calendarbox', // name of calendar
    that gets toggled + calendarDivName2: 'calendarin', // name of
    that contains calendar + calendarLinkName: 'calendarlink', // name of the link that is used to toggle + clockDivName: 'clockbox', // name of clock
    that gets toggled + clockLinkName: 'clocklink', // name of the link that is used to toggle + shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts + timezoneWarningClass: 'timezonewarning', // class of the warning for timezone mismatch + timezoneOffset: 0, + init: function() { + const body = document.getElementsByTagName('body')[0]; + const serverOffset = body.dataset.adminUtcOffset; + if (serverOffset) { + const localOffset = new Date().getTimezoneOffset() * -60; + DateTimeShortcuts.timezoneOffset = localOffset - serverOffset; + } + + for (const inp of document.getElementsByTagName('input')) { + if (inp.type === 'text' && inp.classList.contains('vTimeField')) { + DateTimeShortcuts.addClock(inp); + DateTimeShortcuts.addTimezoneWarning(inp); + } + else if (inp.type === 'text' && inp.classList.contains('vDateField')) { + DateTimeShortcuts.addCalendar(inp); + DateTimeShortcuts.addTimezoneWarning(inp); + } + } + }, + // Return the current time while accounting for the server timezone. + now: function() { + const body = document.getElementsByTagName('body')[0]; + const serverOffset = body.dataset.adminUtcOffset; + if (serverOffset) { + const localNow = new Date(); + const localOffset = localNow.getTimezoneOffset() * -60; + localNow.setTime(localNow.getTime() + 1000 * (serverOffset - localOffset)); + return localNow; + } else { + return new Date(); + } + }, + // Add a warning when the time zone in the browser and backend do not match. + addTimezoneWarning: function(inp) { + const warningClass = DateTimeShortcuts.timezoneWarningClass; + let timezoneOffset = DateTimeShortcuts.timezoneOffset / 3600; + + // Only warn if there is a time zone mismatch. + if (!timezoneOffset) { + return; + } + + // Check if warning is already there. + if (inp.parentNode.querySelectorAll('.' + warningClass).length) { + return; + } + + let message; + if (timezoneOffset > 0) { + message = ngettext( + 'Note: You are %s hour ahead of server time.', + 'Note: You are %s hours ahead of server time.', + timezoneOffset + ); + } + else { + timezoneOffset *= -1; + message = ngettext( + 'Note: You are %s hour behind server time.', + 'Note: You are %s hours behind server time.', + timezoneOffset + ); + } + message = interpolate(message, [timezoneOffset]); + + const warning = document.createElement('span'); + warning.className = warningClass; + warning.textContent = message; + inp.parentNode.appendChild(document.createElement('br')); + inp.parentNode.appendChild(warning); + }, + // Add clock widget to a given field + addClock: function(inp) { + const num = DateTimeShortcuts.clockInputs.length; + DateTimeShortcuts.clockInputs[num] = inp; + DateTimeShortcuts.dismissClockFunc[num] = function() { DateTimeShortcuts.dismissClock(num); return true; }; + + // Shortcut links (clock icon and "Now" link) + const shortcuts_span = document.createElement('span'); + shortcuts_span.className = DateTimeShortcuts.shortCutsClass; + inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling); + const now_link = document.createElement('a'); + now_link.href = "#"; + now_link.textContent = gettext('Now'); + now_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleClockQuicklink(num, -1); + }); + const clock_link = document.createElement('a'); + clock_link.href = '#'; + clock_link.id = DateTimeShortcuts.clockLinkName + num; + clock_link.addEventListener('click', function(e) { + e.preventDefault(); + // avoid triggering the document click handler to dismiss the clock + e.stopPropagation(); + DateTimeShortcuts.openClock(num); + }); + + quickElement( + 'span', clock_link, '', + 'class', 'clock-icon', + 'title', gettext('Choose a Time') + ); + shortcuts_span.appendChild(document.createTextNode('\u00A0')); + shortcuts_span.appendChild(now_link); + shortcuts_span.appendChild(document.createTextNode('\u00A0|\u00A0')); + shortcuts_span.appendChild(clock_link); + + // Create clock link div + // + // Markup looks like: + // + + const clock_box = document.createElement('div'); + clock_box.style.display = 'none'; + clock_box.style.position = 'absolute'; + clock_box.className = 'clockbox module'; + clock_box.id = DateTimeShortcuts.clockDivName + num; + document.body.appendChild(clock_box); + clock_box.addEventListener('click', function(e) { e.stopPropagation(); }); + + quickElement('h2', clock_box, gettext('Choose a time')); + const time_list = quickElement('ul', clock_box); + time_list.className = 'timelist'; + // The list of choices can be overridden in JavaScript like this: + // DateTimeShortcuts.clockHours.name = [['3 a.m.', 3]]; + // where name is the name attribute of the . + const name = typeof DateTimeShortcuts.clockHours[inp.name] === 'undefined' ? 'default_' : inp.name; + DateTimeShortcuts.clockHours[name].forEach(function(element) { + const time_link = quickElement('a', quickElement('li', time_list), gettext(element[0]), 'href', '#'); + time_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleClockQuicklink(num, element[1]); + }); + }); + + const cancel_p = quickElement('p', clock_box); + cancel_p.className = 'calendar-cancel'; + const cancel_link = quickElement('a', cancel_p, gettext('Cancel'), 'href', '#'); + cancel_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.dismissClock(num); + }); + + document.addEventListener('keyup', function(event) { + if (event.which === 27) { + // ESC key closes popup + DateTimeShortcuts.dismissClock(num); + event.preventDefault(); + } + }); + }, + openClock: function(num) { + const clock_box = document.getElementById(DateTimeShortcuts.clockDivName + num); + const clock_link = document.getElementById(DateTimeShortcuts.clockLinkName + num); + + // Recalculate the clockbox position + // is it left-to-right or right-to-left layout ? + if (window.getComputedStyle(document.body).direction !== 'rtl') { + clock_box.style.left = findPosX(clock_link) + 17 + 'px'; + } + else { + // since style's width is in em, it'd be tough to calculate + // px value of it. let's use an estimated px for now + clock_box.style.left = findPosX(clock_link) - 110 + 'px'; + } + clock_box.style.top = Math.max(0, findPosY(clock_link) - 30) + 'px'; + + // Show the clock box + clock_box.style.display = 'block'; + document.addEventListener('click', DateTimeShortcuts.dismissClockFunc[num]); + }, + dismissClock: function(num) { + document.getElementById(DateTimeShortcuts.clockDivName + num).style.display = 'none'; + document.removeEventListener('click', DateTimeShortcuts.dismissClockFunc[num]); + }, + handleClockQuicklink: function(num, val) { + let d; + if (val === -1) { + d = DateTimeShortcuts.now(); + } + else { + d = new Date(1970, 1, 1, val, 0, 0, 0); + } + DateTimeShortcuts.clockInputs[num].value = d.strftime(get_format('TIME_INPUT_FORMATS')[0]); + DateTimeShortcuts.clockInputs[num].focus(); + DateTimeShortcuts.dismissClock(num); + }, + // Add calendar widget to a given field. + addCalendar: function(inp) { + const num = DateTimeShortcuts.calendars.length; + + DateTimeShortcuts.calendarInputs[num] = inp; + DateTimeShortcuts.dismissCalendarFunc[num] = function() { DateTimeShortcuts.dismissCalendar(num); return true; }; + + // Shortcut links (calendar icon and "Today" link) + const shortcuts_span = document.createElement('span'); + shortcuts_span.className = DateTimeShortcuts.shortCutsClass; + inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling); + const today_link = document.createElement('a'); + today_link.href = '#'; + today_link.appendChild(document.createTextNode(gettext('Today'))); + today_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleCalendarQuickLink(num, 0); + }); + const cal_link = document.createElement('a'); + cal_link.href = '#'; + cal_link.id = DateTimeShortcuts.calendarLinkName + num; + cal_link.addEventListener('click', function(e) { + e.preventDefault(); + // avoid triggering the document click handler to dismiss the calendar + e.stopPropagation(); + DateTimeShortcuts.openCalendar(num); + }); + quickElement( + 'span', cal_link, '', + 'class', 'date-icon', + 'title', gettext('Choose a Date') + ); + shortcuts_span.appendChild(document.createTextNode('\u00A0')); + shortcuts_span.appendChild(today_link); + shortcuts_span.appendChild(document.createTextNode('\u00A0|\u00A0')); + shortcuts_span.appendChild(cal_link); + + // Create calendarbox div. + // + // Markup looks like: + // + //
    + //

    + // + // February 2003 + //

    + //
    + // + //
    + //
    + // Yesterday | Today | Tomorrow + //
    + //

    Cancel

    + //
    + const cal_box = document.createElement('div'); + cal_box.style.display = 'none'; + cal_box.style.position = 'absolute'; + cal_box.className = 'calendarbox module'; + cal_box.id = DateTimeShortcuts.calendarDivName1 + num; + document.body.appendChild(cal_box); + cal_box.addEventListener('click', function(e) { e.stopPropagation(); }); + + // next-prev links + const cal_nav = quickElement('div', cal_box); + const cal_nav_prev = quickElement('a', cal_nav, '<', 'href', '#'); + cal_nav_prev.className = 'calendarnav-previous'; + cal_nav_prev.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.drawPrev(num); + }); + + const cal_nav_next = quickElement('a', cal_nav, '>', 'href', '#'); + cal_nav_next.className = 'calendarnav-next'; + cal_nav_next.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.drawNext(num); + }); + + // main box + const cal_main = quickElement('div', cal_box, '', 'id', DateTimeShortcuts.calendarDivName2 + num); + cal_main.className = 'calendar'; + DateTimeShortcuts.calendars[num] = new Calendar(DateTimeShortcuts.calendarDivName2 + num, DateTimeShortcuts.handleCalendarCallback(num)); + DateTimeShortcuts.calendars[num].drawCurrent(); + + // calendar shortcuts + const shortcuts = quickElement('div', cal_box); + shortcuts.className = 'calendar-shortcuts'; + let day_link = quickElement('a', shortcuts, gettext('Yesterday'), 'href', '#'); + day_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleCalendarQuickLink(num, -1); + }); + shortcuts.appendChild(document.createTextNode('\u00A0|\u00A0')); + day_link = quickElement('a', shortcuts, gettext('Today'), 'href', '#'); + day_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleCalendarQuickLink(num, 0); + }); + shortcuts.appendChild(document.createTextNode('\u00A0|\u00A0')); + day_link = quickElement('a', shortcuts, gettext('Tomorrow'), 'href', '#'); + day_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleCalendarQuickLink(num, +1); + }); + + // cancel bar + const cancel_p = quickElement('p', cal_box); + cancel_p.className = 'calendar-cancel'; + const cancel_link = quickElement('a', cancel_p, gettext('Cancel'), 'href', '#'); + cancel_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.dismissCalendar(num); + }); + document.addEventListener('keyup', function(event) { + if (event.which === 27) { + // ESC key closes popup + DateTimeShortcuts.dismissCalendar(num); + event.preventDefault(); + } + }); + }, + openCalendar: function(num) { + const cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1 + num); + const cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName + num); + const inp = DateTimeShortcuts.calendarInputs[num]; + + // Determine if the current value in the input has a valid date. + // If so, draw the calendar with that date's year and month. + if (inp.value) { + const format = get_format('DATE_INPUT_FORMATS')[0]; + const selected = inp.value.strptime(format); + const year = selected.getUTCFullYear(); + const month = selected.getUTCMonth() + 1; + const re = /\d{4}/; + if (re.test(year.toString()) && month >= 1 && month <= 12) { + DateTimeShortcuts.calendars[num].drawDate(month, year, selected); + } + } + + // Recalculate the clockbox position + // is it left-to-right or right-to-left layout ? + if (window.getComputedStyle(document.body).direction !== 'rtl') { + cal_box.style.left = findPosX(cal_link) + 17 + 'px'; + } + else { + // since style's width is in em, it'd be tough to calculate + // px value of it. let's use an estimated px for now + cal_box.style.left = findPosX(cal_link) - 180 + 'px'; + } + cal_box.style.top = Math.max(0, findPosY(cal_link) - 75) + 'px'; + + cal_box.style.display = 'block'; + document.addEventListener('click', DateTimeShortcuts.dismissCalendarFunc[num]); + }, + dismissCalendar: function(num) { + document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none'; + document.removeEventListener('click', DateTimeShortcuts.dismissCalendarFunc[num]); + }, + drawPrev: function(num) { + DateTimeShortcuts.calendars[num].drawPreviousMonth(); + }, + drawNext: function(num) { + DateTimeShortcuts.calendars[num].drawNextMonth(); + }, + handleCalendarCallback: function(num) { + let format = get_format('DATE_INPUT_FORMATS')[0]; + // the format needs to be escaped a little + format = format.replace('\\', '\\\\') + .replace('\r', '\\r') + .replace('\n', '\\n') + .replace('\t', '\\t') + .replace("'", "\\'"); + return function(y, m, d) { + DateTimeShortcuts.calendarInputs[num].value = new Date(y, m - 1, d).strftime(format); + DateTimeShortcuts.calendarInputs[num].focus(); + document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none'; + }; + }, + handleCalendarQuickLink: function(num, offset) { + const d = DateTimeShortcuts.now(); + d.setDate(d.getDate() + offset); + DateTimeShortcuts.calendarInputs[num].value = d.strftime(get_format('DATE_INPUT_FORMATS')[0]); + DateTimeShortcuts.calendarInputs[num].focus(); + DateTimeShortcuts.dismissCalendar(num); + } + }; + + window.addEventListener('load', DateTimeShortcuts.init); + window.DateTimeShortcuts = DateTimeShortcuts; +} diff --git a/static_new/admin/js/admin/RelatedObjectLookups.js b/static_new/admin/js/admin/RelatedObjectLookups.js new file mode 100644 index 00000000..8c95df7c --- /dev/null +++ b/static_new/admin/js/admin/RelatedObjectLookups.js @@ -0,0 +1,159 @@ +/*global SelectBox, interpolate*/ +// Handles related-objects functionality: lookup link for raw_id_fields +// and Add Another links. +'use strict'; +{ + const $ = django.jQuery; + + function showAdminPopup(triggeringLink, name_regexp, add_popup) { + const name = triggeringLink.id.replace(name_regexp, ''); + let href = triggeringLink.href; + if (add_popup) { + if (href.indexOf('?') === -1) { + href += '?_popup=1'; + } else { + href += '&_popup=1'; + } + } + const win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes'); + win.focus(); + return false; + } + + function showRelatedObjectLookupPopup(triggeringLink) { + return showAdminPopup(triggeringLink, /^lookup_/, true); + } + + function dismissRelatedLookupPopup(win, chosenId) { + const name = win.name; + const elem = document.getElementById(name); + if (elem.classList.contains('vManyToManyRawIdAdminField') && elem.value) { + elem.value += ',' + chosenId; + } else { + document.getElementById(name).value = chosenId; + } + win.close(); + } + + function showRelatedObjectPopup(triggeringLink) { + return showAdminPopup(triggeringLink, /^(change|add|delete)_/, false); + } + + function updateRelatedObjectLinks(triggeringLink) { + const $this = $(triggeringLink); + const siblings = $this.nextAll('.view-related, .change-related, .delete-related'); + if (!siblings.length) { + return; + } + const value = $this.val(); + if (value) { + siblings.each(function() { + const elm = $(this); + elm.attr('href', elm.attr('data-href-template').replace('__fk__', value)); + }); + } else { + siblings.removeAttr('href'); + } + } + + function dismissAddRelatedObjectPopup(win, newId, newRepr) { + const name = win.name; + const elem = document.getElementById(name); + if (elem) { + const elemName = elem.nodeName.toUpperCase(); + if (elemName === 'SELECT') { + elem.options[elem.options.length] = new Option(newRepr, newId, true, true); + } else if (elemName === 'INPUT') { + if (elem.classList.contains('vManyToManyRawIdAdminField') && elem.value) { + elem.value += ',' + newId; + } else { + elem.value = newId; + } + } + // Trigger a change event to update related links if required. + $(elem).trigger('change'); + } else { + const toId = name + "_to"; + const o = new Option(newRepr, newId); + SelectBox.add_to_cache(toId, o); + SelectBox.redisplay(toId); + } + win.close(); + } + + function dismissChangeRelatedObjectPopup(win, objId, newRepr, newId) { + const id = win.name.replace(/^edit_/, ''); + const selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]); + const selects = $(selectsSelector); + selects.find('option').each(function() { + if (this.value === objId) { + this.textContent = newRepr; + this.value = newId; + } + }); + selects.next().find('.select2-selection__rendered').each(function() { + // The element can have a clear button as a child. + // Use the lastChild to modify only the displayed value. + this.lastChild.textContent = newRepr; + this.title = newRepr; + }); + win.close(); + } + + function dismissDeleteRelatedObjectPopup(win, objId) { + const id = win.name.replace(/^delete_/, ''); + const selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]); + const selects = $(selectsSelector); + selects.find('option').each(function() { + if (this.value === objId) { + $(this).remove(); + } + }).trigger('change'); + win.close(); + } + + window.showRelatedObjectLookupPopup = showRelatedObjectLookupPopup; + window.dismissRelatedLookupPopup = dismissRelatedLookupPopup; + window.showRelatedObjectPopup = showRelatedObjectPopup; + window.updateRelatedObjectLinks = updateRelatedObjectLinks; + window.dismissAddRelatedObjectPopup = dismissAddRelatedObjectPopup; + window.dismissChangeRelatedObjectPopup = dismissChangeRelatedObjectPopup; + window.dismissDeleteRelatedObjectPopup = dismissDeleteRelatedObjectPopup; + + // Kept for backward compatibility + window.showAddAnotherPopup = showRelatedObjectPopup; + window.dismissAddAnotherPopup = dismissAddRelatedObjectPopup; + + $(document).ready(function() { + $("a[data-popup-opener]").on('click', function(event) { + event.preventDefault(); + opener.dismissRelatedLookupPopup(window, $(this).data("popup-opener")); + }); + $('body').on('click', '.related-widget-wrapper-link', function(e) { + e.preventDefault(); + if (this.href) { + const event = $.Event('django:show-related', {href: this.href}); + $(this).trigger(event); + if (!event.isDefaultPrevented()) { + showRelatedObjectPopup(this); + } + } + }); + $('body').on('change', '.related-widget-wrapper select', function(e) { + const event = $.Event('django:update-related'); + $(this).trigger(event); + if (!event.isDefaultPrevented()) { + updateRelatedObjectLinks(this); + } + }); + $('.related-widget-wrapper select').trigger('change'); + $('body').on('click', '.related-lookup', function(e) { + e.preventDefault(); + const event = $.Event('django:lookup-related'); + $(this).trigger(event); + if (!event.isDefaultPrevented()) { + showRelatedObjectLookupPopup(this); + } + }); + }); +} diff --git a/static_new/admin/js/autocomplete.js b/static_new/admin/js/autocomplete.js new file mode 100644 index 00000000..c922b303 --- /dev/null +++ b/static_new/admin/js/autocomplete.js @@ -0,0 +1,38 @@ +'use strict'; +{ + const $ = django.jQuery; + const init = function($element, options) { + const settings = $.extend({ + ajax: { + data: function(params) { + return { + term: params.term, + page: params.page + }; + } + } + }, options); + $element.select2(settings); + }; + + $.fn.djangoAdminSelect2 = function(options) { + const settings = $.extend({}, options); + $.each(this, function(i, element) { + const $element = $(element); + init($element, settings); + }); + return this; + }; + + $(function() { + // Initialize all autocomplete widgets except the one in the template + // form used when a new formset is added. + $('.admin-autocomplete').not('[name*=__prefix__]').djangoAdminSelect2(); + }); + + $(document).on('formset:added', (function() { + return function(event, $newFormset) { + return $newFormset.find('.admin-autocomplete').djangoAdminSelect2(); + }; + })(this)); +} diff --git a/static_new/admin/js/calendar.js b/static_new/admin/js/calendar.js new file mode 100644 index 00000000..64598bbb --- /dev/null +++ b/static_new/admin/js/calendar.js @@ -0,0 +1,207 @@ +/*global gettext, pgettext, get_format, quickElement, removeChildren*/ +/* +calendar.js - Calendar functions by Adrian Holovaty +depends on core.js for utility functions like removeChildren or quickElement +*/ +'use strict'; +{ + // CalendarNamespace -- Provides a collection of HTML calendar-related helper functions + const CalendarNamespace = { + monthsOfYear: [ + gettext('January'), + gettext('February'), + gettext('March'), + gettext('April'), + gettext('May'), + gettext('June'), + gettext('July'), + gettext('August'), + gettext('September'), + gettext('October'), + gettext('November'), + gettext('December') + ], + daysOfWeek: [ + pgettext('one letter Sunday', 'S'), + pgettext('one letter Monday', 'M'), + pgettext('one letter Tuesday', 'T'), + pgettext('one letter Wednesday', 'W'), + pgettext('one letter Thursday', 'T'), + pgettext('one letter Friday', 'F'), + pgettext('one letter Saturday', 'S') + ], + firstDayOfWeek: parseInt(get_format('FIRST_DAY_OF_WEEK')), + isLeapYear: function(year) { + return (((year % 4) === 0) && ((year % 100) !== 0 ) || ((year % 400) === 0)); + }, + getDaysInMonth: function(month, year) { + let days; + if (month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12) { + days = 31; + } + else if (month === 4 || month === 6 || month === 9 || month === 11) { + days = 30; + } + else if (month === 2 && CalendarNamespace.isLeapYear(year)) { + days = 29; + } + else { + days = 28; + } + return days; + }, + draw: function(month, year, div_id, callback, selected) { // month = 1-12, year = 1-9999 + const today = new Date(); + const todayDay = today.getDate(); + const todayMonth = today.getMonth() + 1; + const todayYear = today.getFullYear(); + let todayClass = ''; + + // Use UTC functions here because the date field does not contain time + // and using the UTC function variants prevent the local time offset + // from altering the date, specifically the day field. For example: + // + // ``` + // var x = new Date('2013-10-02'); + // var day = x.getDate(); + // ``` + // + // The day variable above will be 1 instead of 2 in, say, US Pacific time + // zone. + let isSelectedMonth = false; + if (typeof selected !== 'undefined') { + isSelectedMonth = (selected.getUTCFullYear() === year && (selected.getUTCMonth() + 1) === month); + } + + month = parseInt(month); + year = parseInt(year); + const calDiv = document.getElementById(div_id); + removeChildren(calDiv); + const calTable = document.createElement('table'); + quickElement('caption', calTable, CalendarNamespace.monthsOfYear[month - 1] + ' ' + year); + const tableBody = quickElement('tbody', calTable); + + // Draw days-of-week header + let tableRow = quickElement('tr', tableBody); + for (let i = 0; i < 7; i++) { + quickElement('th', tableRow, CalendarNamespace.daysOfWeek[(i + CalendarNamespace.firstDayOfWeek) % 7]); + } + + const startingPos = new Date(year, month - 1, 1 - CalendarNamespace.firstDayOfWeek).getDay(); + const days = CalendarNamespace.getDaysInMonth(month, year); + + let nonDayCell; + + // Draw blanks before first of month + tableRow = quickElement('tr', tableBody); + for (let i = 0; i < startingPos; i++) { + nonDayCell = quickElement('td', tableRow, ' '); + nonDayCell.className = "nonday"; + } + + function calendarMonth(y, m) { + function onClick(e) { + e.preventDefault(); + callback(y, m, this.textContent); + } + return onClick; + } + + // Draw days of month + let currentDay = 1; + for (let i = startingPos; currentDay <= days; i++) { + if (i % 7 === 0 && currentDay !== 1) { + tableRow = quickElement('tr', tableBody); + } + if ((currentDay === todayDay) && (month === todayMonth) && (year === todayYear)) { + todayClass = 'today'; + } else { + todayClass = ''; + } + + // use UTC function; see above for explanation. + if (isSelectedMonth && currentDay === selected.getUTCDate()) { + if (todayClass !== '') { + todayClass += " "; + } + todayClass += "selected"; + } + + const cell = quickElement('td', tableRow, '', 'class', todayClass); + const link = quickElement('a', cell, currentDay, 'href', '#'); + link.addEventListener('click', calendarMonth(year, month)); + currentDay++; + } + + // Draw blanks after end of month (optional, but makes for valid code) + while (tableRow.childNodes.length < 7) { + nonDayCell = quickElement('td', tableRow, ' '); + nonDayCell.className = "nonday"; + } + + calDiv.appendChild(calTable); + } + }; + + // Calendar -- A calendar instance + function Calendar(div_id, callback, selected) { + // div_id (string) is the ID of the element in which the calendar will + // be displayed + // callback (string) is the name of a JavaScript function that will be + // called with the parameters (year, month, day) when a day in the + // calendar is clicked + this.div_id = div_id; + this.callback = callback; + this.today = new Date(); + this.currentMonth = this.today.getMonth() + 1; + this.currentYear = this.today.getFullYear(); + if (typeof selected !== 'undefined') { + this.selected = selected; + } + } + Calendar.prototype = { + drawCurrent: function() { + CalendarNamespace.draw(this.currentMonth, this.currentYear, this.div_id, this.callback, this.selected); + }, + drawDate: function(month, year, selected) { + this.currentMonth = month; + this.currentYear = year; + + if(selected) { + this.selected = selected; + } + + this.drawCurrent(); + }, + drawPreviousMonth: function() { + if (this.currentMonth === 1) { + this.currentMonth = 12; + this.currentYear--; + } + else { + this.currentMonth--; + } + this.drawCurrent(); + }, + drawNextMonth: function() { + if (this.currentMonth === 12) { + this.currentMonth = 1; + this.currentYear++; + } + else { + this.currentMonth++; + } + this.drawCurrent(); + }, + drawPreviousYear: function() { + this.currentYear--; + this.drawCurrent(); + }, + drawNextYear: function() { + this.currentYear++; + this.drawCurrent(); + } + }; + window.Calendar = Calendar; + window.CalendarNamespace = CalendarNamespace; +} diff --git a/static_new/admin/js/cancel.js b/static_new/admin/js/cancel.js new file mode 100644 index 00000000..cfe06c27 --- /dev/null +++ b/static_new/admin/js/cancel.js @@ -0,0 +1,28 @@ +'use strict'; +{ + // Call function fn when the DOM is loaded and ready. If it is already + // loaded, call the function now. + // http://youmightnotneedjquery.com/#ready + function ready(fn) { + if (document.readyState !== 'loading') { + fn(); + } else { + document.addEventListener('DOMContentLoaded', fn); + } + } + + ready(function() { + function handleClick(event) { + event.preventDefault(); + if (window.location.search.indexOf('&_popup=1') === -1) { + window.history.back(); // Go back if not a popup. + } else { + window.close(); // Otherwise, close the popup. + } + } + + document.querySelectorAll('.cancel-link').forEach(function(el) { + el.addEventListener('click', handleClick); + }); + }); +} diff --git a/static_new/admin/js/change_form.js b/static_new/admin/js/change_form.js new file mode 100644 index 00000000..96a4c62e --- /dev/null +++ b/static_new/admin/js/change_form.js @@ -0,0 +1,16 @@ +'use strict'; +{ + const inputTags = ['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA']; + const modelName = document.getElementById('django-admin-form-add-constants').dataset.modelName; + if (modelName) { + const form = document.getElementById(modelName + '_form'); + for (const element of form.elements) { + // HTMLElement.offsetParent returns null when the element is not + // rendered. + if (inputTags.includes(element.tagName) && !element.disabled && element.offsetParent) { + element.focus(); + break; + } + } + } +} diff --git a/static_new/admin/js/collapse.js b/static_new/admin/js/collapse.js new file mode 100644 index 00000000..c6c7b0f6 --- /dev/null +++ b/static_new/admin/js/collapse.js @@ -0,0 +1,43 @@ +/*global gettext*/ +'use strict'; +{ + window.addEventListener('load', function() { + // Add anchor tag for Show/Hide link + const fieldsets = document.querySelectorAll('fieldset.collapse'); + for (const [i, elem] of fieldsets.entries()) { + // Don't hide if fields in this fieldset have errors + if (elem.querySelectorAll('div.errors, ul.errorlist').length === 0) { + elem.classList.add('collapsed'); + const h2 = elem.querySelector('h2'); + const link = document.createElement('a'); + link.id = 'fieldsetcollapser' + i; + link.className = 'collapse-toggle'; + link.href = '#'; + link.textContent = gettext('Show'); + h2.appendChild(document.createTextNode(' (')); + h2.appendChild(link); + h2.appendChild(document.createTextNode(')')); + } + } + // Add toggle to hide/show anchor tag + const toggleFunc = function(ev) { + if (ev.target.matches('.collapse-toggle')) { + ev.preventDefault(); + ev.stopPropagation(); + const fieldset = ev.target.closest('fieldset'); + if (fieldset.classList.contains('collapsed')) { + // Show + ev.target.textContent = gettext('Hide'); + fieldset.classList.remove('collapsed'); + } else { + // Hide + ev.target.textContent = gettext('Show'); + fieldset.classList.add('collapsed'); + } + } + }; + document.querySelectorAll('fieldset.module').forEach(function(el) { + el.addEventListener('click', toggleFunc); + }); + }); +} diff --git a/static_new/admin/js/collapse.min.js b/static_new/admin/js/collapse.min.js new file mode 100644 index 00000000..06201c59 --- /dev/null +++ b/static_new/admin/js/collapse.min.js @@ -0,0 +1,2 @@ +'use strict';window.addEventListener("load",function(){var c=document.querySelectorAll("fieldset.collapse");for(const [a,b]of c.entries())if(0===b.querySelectorAll("div.errors, ul.errorlist").length){b.classList.add("collapsed");c=b.querySelector("h2");const d=document.createElement("a");d.id="fieldsetcollapser"+a;d.className="collapse-toggle";d.href="#";d.textContent=gettext("Show");c.appendChild(document.createTextNode(" ("));c.appendChild(d);c.appendChild(document.createTextNode(")"))}const e= +function(a){if(a.target.matches(".collapse-toggle")){a.preventDefault();a.stopPropagation();const b=a.target.closest("fieldset");b.classList.contains("collapsed")?(a.target.textContent=gettext("Hide"),b.classList.remove("collapsed")):(a.target.textContent=gettext("Show"),b.classList.add("collapsed"))}};document.querySelectorAll("fieldset.module").forEach(function(a){a.addEventListener("click",e)})}); diff --git a/static_new/admin/js/core.js b/static_new/admin/js/core.js new file mode 100644 index 00000000..8ef27b34 --- /dev/null +++ b/static_new/admin/js/core.js @@ -0,0 +1,163 @@ +// Core javascript helper functions +'use strict'; + +// quickElement(tagType, parentReference [, textInChildNode, attribute, attributeValue ...]); +function quickElement() { + const obj = document.createElement(arguments[0]); + if (arguments[2]) { + const textNode = document.createTextNode(arguments[2]); + obj.appendChild(textNode); + } + const len = arguments.length; + for (let i = 3; i < len; i += 2) { + obj.setAttribute(arguments[i], arguments[i + 1]); + } + arguments[1].appendChild(obj); + return obj; +} + +// "a" is reference to an object +function removeChildren(a) { + while (a.hasChildNodes()) { + a.removeChild(a.lastChild); + } +} + +// ---------------------------------------------------------------------------- +// Find-position functions by PPK +// See https://www.quirksmode.org/js/findpos.html +// ---------------------------------------------------------------------------- +function findPosX(obj) { + let curleft = 0; + if (obj.offsetParent) { + while (obj.offsetParent) { + curleft += obj.offsetLeft - obj.scrollLeft; + obj = obj.offsetParent; + } + } else if (obj.x) { + curleft += obj.x; + } + return curleft; +} + +function findPosY(obj) { + let curtop = 0; + if (obj.offsetParent) { + while (obj.offsetParent) { + curtop += obj.offsetTop - obj.scrollTop; + obj = obj.offsetParent; + } + } else if (obj.y) { + curtop += obj.y; + } + return curtop; +} + +//----------------------------------------------------------------------------- +// Date object extensions +// ---------------------------------------------------------------------------- +{ + Date.prototype.getTwelveHours = function() { + return this.getHours() % 12 || 12; + }; + + Date.prototype.getTwoDigitMonth = function() { + return (this.getMonth() < 9) ? '0' + (this.getMonth() + 1) : (this.getMonth() + 1); + }; + + Date.prototype.getTwoDigitDate = function() { + return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate(); + }; + + Date.prototype.getTwoDigitTwelveHour = function() { + return (this.getTwelveHours() < 10) ? '0' + this.getTwelveHours() : this.getTwelveHours(); + }; + + Date.prototype.getTwoDigitHour = function() { + return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours(); + }; + + Date.prototype.getTwoDigitMinute = function() { + return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes(); + }; + + Date.prototype.getTwoDigitSecond = function() { + return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds(); + }; + + Date.prototype.getFullMonthName = function() { + return typeof window.CalendarNamespace === "undefined" + ? this.getTwoDigitMonth() + : window.CalendarNamespace.monthsOfYear[this.getMonth()]; + }; + + Date.prototype.strftime = function(format) { + const fields = { + B: this.getFullMonthName(), + c: this.toString(), + d: this.getTwoDigitDate(), + H: this.getTwoDigitHour(), + I: this.getTwoDigitTwelveHour(), + m: this.getTwoDigitMonth(), + M: this.getTwoDigitMinute(), + p: (this.getHours() >= 12) ? 'PM' : 'AM', + S: this.getTwoDigitSecond(), + w: '0' + this.getDay(), + x: this.toLocaleDateString(), + X: this.toLocaleTimeString(), + y: ('' + this.getFullYear()).substr(2, 4), + Y: '' + this.getFullYear(), + '%': '%' + }; + let result = '', i = 0; + while (i < format.length) { + if (format.charAt(i) === '%') { + result = result + fields[format.charAt(i + 1)]; + ++i; + } + else { + result = result + format.charAt(i); + } + ++i; + } + return result; + }; + + // ---------------------------------------------------------------------------- + // String object extensions + // ---------------------------------------------------------------------------- + String.prototype.strptime = function(format) { + const split_format = format.split(/[.\-/]/); + const date = this.split(/[.\-/]/); + let i = 0; + let day, month, year; + while (i < split_format.length) { + switch (split_format[i]) { + case "%d": + day = date[i]; + break; + case "%m": + month = date[i] - 1; + break; + case "%Y": + year = date[i]; + break; + case "%y": + // A %y value in the range of [00, 68] is in the current + // century, while [69, 99] is in the previous century, + // according to the Open Group Specification. + if (parseInt(date[i], 10) >= 69) { + year = date[i]; + } else { + year = (new Date(Date.UTC(date[i], 0))).getUTCFullYear() + 100; + } + break; + } + ++i; + } + // Create Date object from UTC since the parsed value is supposed to be + // in UTC, not local time. Also, the calendar uses UTC functions for + // date extraction. + return new Date(Date.UTC(year, month, day)); + }; +} diff --git a/static_new/admin/js/inlines.js b/static_new/admin/js/inlines.js new file mode 100644 index 00000000..82ec0272 --- /dev/null +++ b/static_new/admin/js/inlines.js @@ -0,0 +1,348 @@ +/*global DateTimeShortcuts, SelectFilter*/ +/** + * Django admin inlines + * + * Based on jQuery Formset 1.1 + * @author Stanislaus Madueke (stan DOT madueke AT gmail DOT com) + * @requires jQuery 1.2.6 or later + * + * Copyright (c) 2009, Stanislaus Madueke + * All rights reserved. + * + * Spiced up with Code from Zain Memon's GSoC project 2009 + * and modified for Django by Jannis Leidel, Travis Swicegood and Julien Phalip. + * + * Licensed under the New BSD License + * See: https://opensource.org/licenses/bsd-license.php + */ +'use strict'; +{ + const $ = django.jQuery; + $.fn.formset = function(opts) { + const options = $.extend({}, $.fn.formset.defaults, opts); + const $this = $(this); + const $parent = $this.parent(); + const updateElementIndex = function(el, prefix, ndx) { + const id_regex = new RegExp("(" + prefix + "-(\\d+|__prefix__))"); + const replacement = prefix + "-" + ndx; + if ($(el).prop("for")) { + $(el).prop("for", $(el).prop("for").replace(id_regex, replacement)); + } + if (el.id) { + el.id = el.id.replace(id_regex, replacement); + } + if (el.name) { + el.name = el.name.replace(id_regex, replacement); + } + }; + const totalForms = $("#id_" + options.prefix + "-TOTAL_FORMS").prop("autocomplete", "off"); + let nextIndex = parseInt(totalForms.val(), 10); + const maxForms = $("#id_" + options.prefix + "-MAX_NUM_FORMS").prop("autocomplete", "off"); + const minForms = $("#id_" + options.prefix + "-MIN_NUM_FORMS").prop("autocomplete", "off"); + let addButton; + + /** + * The "Add another MyModel" button below the inline forms. + */ + const addInlineAddButton = function() { + if (addButton === null) { + if ($this.prop("tagName") === "TR") { + // If forms are laid out as table rows, insert the + // "add" button in a new table row: + const numCols = $this.eq(-1).children().length; + $parent.append('' + options.addText + ""); + addButton = $parent.find("tr:last a"); + } else { + // Otherwise, insert it immediately after the last form: + $this.filter(":last").after('"); + addButton = $this.filter(":last").next().find("a"); + } + } + addButton.on('click', addInlineClickHandler); + }; + + const addInlineClickHandler = function(e) { + e.preventDefault(); + const template = $("#" + options.prefix + "-empty"); + const row = template.clone(true); + row.removeClass(options.emptyCssClass) + .addClass(options.formCssClass) + .attr("id", options.prefix + "-" + nextIndex); + addInlineDeleteButton(row); + row.find("*").each(function() { + updateElementIndex(this, options.prefix, totalForms.val()); + }); + // Insert the new form when it has been fully edited. + row.insertBefore($(template)); + // Update number of total forms. + $(totalForms).val(parseInt(totalForms.val(), 10) + 1); + nextIndex += 1; + // Hide the add button if there's a limit and it's been reached. + if ((maxForms.val() !== '') && (maxForms.val() - totalForms.val()) <= 0) { + addButton.parent().hide(); + } + // Show the remove buttons if there are more than min_num. + toggleDeleteButtonVisibility(row.closest('.inline-group')); + + // Pass the new form to the post-add callback, if provided. + if (options.added) { + options.added(row); + } + $(document).trigger('formset:added', [row, options.prefix]); + }; + + /** + * The "X" button that is part of every unsaved inline. + * (When saved, it is replaced with a "Delete" checkbox.) + */ + const addInlineDeleteButton = function(row) { + if (row.is("tr")) { + // If the forms are laid out in table rows, insert + // the remove button into the last table cell: + row.children(":last").append('"); + } else if (row.is("ul") || row.is("ol")) { + // If they're laid out as an ordered/unordered list, + // insert an
  • after the last list item: + row.append('
  • ' + options.deleteText + "
  • "); + } else { + // Otherwise, just insert the remove button as the + // last child element of the form's container: + row.children(":first").append('' + options.deleteText + ""); + } + // Add delete handler for each row. + row.find("a." + options.deleteCssClass).on('click', inlineDeleteHandler.bind(this)); + }; + + const inlineDeleteHandler = function(e1) { + e1.preventDefault(); + const deleteButton = $(e1.target); + const row = deleteButton.closest('.' + options.formCssClass); + const inlineGroup = row.closest('.inline-group'); + // Remove the parent form containing this button, + // and also remove the relevant row with non-field errors: + const prevRow = row.prev(); + if (prevRow.length && prevRow.hasClass('row-form-errors')) { + prevRow.remove(); + } + row.remove(); + nextIndex -= 1; + // Pass the deleted form to the post-delete callback, if provided. + if (options.removed) { + options.removed(row); + } + $(document).trigger('formset:removed', [row, options.prefix]); + // Update the TOTAL_FORMS form count. + const forms = $("." + options.formCssClass); + $("#id_" + options.prefix + "-TOTAL_FORMS").val(forms.length); + // Show add button again once below maximum number. + if ((maxForms.val() === '') || (maxForms.val() - forms.length) > 0) { + addButton.parent().show(); + } + // Hide the remove buttons if at min_num. + toggleDeleteButtonVisibility(inlineGroup); + // Also, update names and ids for all remaining form controls so + // they remain in sequence: + let i, formCount; + const updateElementCallback = function() { + updateElementIndex(this, options.prefix, i); + }; + for (i = 0, formCount = forms.length; i < formCount; i++) { + updateElementIndex($(forms).get(i), options.prefix, i); + $(forms.get(i)).find("*").each(updateElementCallback); + } + }; + + const toggleDeleteButtonVisibility = function(inlineGroup) { + if ((minForms.val() !== '') && (minForms.val() - totalForms.val()) >= 0) { + inlineGroup.find('.inline-deletelink').hide(); + } else { + inlineGroup.find('.inline-deletelink').show(); + } + }; + + $this.each(function(i) { + $(this).not("." + options.emptyCssClass).addClass(options.formCssClass); + }); + + // Create the delete buttons for all unsaved inlines: + $this.filter('.' + options.formCssClass + ':not(.has_original):not(.' + options.emptyCssClass + ')').each(function() { + addInlineDeleteButton($(this)); + }); + toggleDeleteButtonVisibility($this); + + // Create the add button, initially hidden. + addButton = options.addButton; + addInlineAddButton(); + + // Show the add button if allowed to add more items. + // Note that max_num = None translates to a blank string. + const showAddButton = maxForms.val() === '' || (maxForms.val() - totalForms.val()) > 0; + if ($this.length && showAddButton) { + addButton.parent().show(); + } else { + addButton.parent().hide(); + } + + return this; + }; + + /* Setup plugin defaults */ + $.fn.formset.defaults = { + prefix: "form", // The form prefix for your django formset + addText: "add another", // Text for the add link + deleteText: "remove", // Text for the delete link + addCssClass: "add-row", // CSS class applied to the add link + deleteCssClass: "delete-row", // CSS class applied to the delete link + emptyCssClass: "empty-row", // CSS class applied to the empty row + formCssClass: "dynamic-form", // CSS class applied to each form in a formset + added: null, // Function called each time a new form is added + removed: null, // Function called each time a form is deleted + addButton: null // Existing add button to use + }; + + + // Tabular inlines --------------------------------------------------------- + $.fn.tabularFormset = function(selector, options) { + const $rows = $(this); + + const reinitDateTimeShortCuts = function() { + // Reinitialize the calendar and clock widgets by force + if (typeof DateTimeShortcuts !== "undefined") { + $(".datetimeshortcuts").remove(); + DateTimeShortcuts.init(); + } + }; + + const updateSelectFilter = function() { + // If any SelectFilter widgets are a part of the new form, + // instantiate a new SelectFilter instance for it. + if (typeof SelectFilter !== 'undefined') { + $('.selectfilter').each(function(index, value) { + const namearr = value.name.split('-'); + SelectFilter.init(value.id, namearr[namearr.length - 1], false); + }); + $('.selectfilterstacked').each(function(index, value) { + const namearr = value.name.split('-'); + SelectFilter.init(value.id, namearr[namearr.length - 1], true); + }); + } + }; + + const initPrepopulatedFields = function(row) { + row.find('.prepopulated_field').each(function() { + const field = $(this), + input = field.find('input, select, textarea'), + dependency_list = input.data('dependency_list') || [], + dependencies = []; + $.each(dependency_list, function(i, field_name) { + dependencies.push('#' + row.find('.field-' + field_name).find('input, select, textarea').attr('id')); + }); + if (dependencies.length) { + input.prepopulate(dependencies, input.attr('maxlength')); + } + }); + }; + + $rows.formset({ + prefix: options.prefix, + addText: options.addText, + formCssClass: "dynamic-" + options.prefix, + deleteCssClass: "inline-deletelink", + deleteText: options.deleteText, + emptyCssClass: "empty-form", + added: function(row) { + initPrepopulatedFields(row); + reinitDateTimeShortCuts(); + updateSelectFilter(); + }, + addButton: options.addButton + }); + + return $rows; + }; + + // Stacked inlines --------------------------------------------------------- + $.fn.stackedFormset = function(selector, options) { + const $rows = $(this); + const updateInlineLabel = function(row) { + $(selector).find(".inline_label").each(function(i) { + const count = i + 1; + $(this).html($(this).html().replace(/(#\d+)/g, "#" + count)); + }); + }; + + const reinitDateTimeShortCuts = function() { + // Reinitialize the calendar and clock widgets by force, yuck. + if (typeof DateTimeShortcuts !== "undefined") { + $(".datetimeshortcuts").remove(); + DateTimeShortcuts.init(); + } + }; + + const updateSelectFilter = function() { + // If any SelectFilter widgets were added, instantiate a new instance. + if (typeof SelectFilter !== "undefined") { + $(".selectfilter").each(function(index, value) { + const namearr = value.name.split('-'); + SelectFilter.init(value.id, namearr[namearr.length - 1], false); + }); + $(".selectfilterstacked").each(function(index, value) { + const namearr = value.name.split('-'); + SelectFilter.init(value.id, namearr[namearr.length - 1], true); + }); + } + }; + + const initPrepopulatedFields = function(row) { + row.find('.prepopulated_field').each(function() { + const field = $(this), + input = field.find('input, select, textarea'), + dependency_list = input.data('dependency_list') || [], + dependencies = []; + $.each(dependency_list, function(i, field_name) { + dependencies.push('#' + row.find('.form-row .field-' + field_name).find('input, select, textarea').attr('id')); + }); + if (dependencies.length) { + input.prepopulate(dependencies, input.attr('maxlength')); + } + }); + }; + + $rows.formset({ + prefix: options.prefix, + addText: options.addText, + formCssClass: "dynamic-" + options.prefix, + deleteCssClass: "inline-deletelink", + deleteText: options.deleteText, + emptyCssClass: "empty-form", + removed: updateInlineLabel, + added: function(row) { + initPrepopulatedFields(row); + reinitDateTimeShortCuts(); + updateSelectFilter(); + updateInlineLabel(row); + }, + addButton: options.addButton + }); + + return $rows; + }; + + $(document).ready(function() { + $(".js-inline-admin-formset").each(function() { + const data = $(this).data(), + inlineOptions = data.inlineFormset; + let selector; + switch(data.inlineType) { + case "stacked": + selector = inlineOptions.name + "-group .inline-related"; + $(selector).stackedFormset(selector, inlineOptions.options); + break; + case "tabular": + selector = inlineOptions.name + "-group .tabular.inline-related tbody:first > tr.form-row"; + $(selector).tabularFormset(selector, inlineOptions.options); + break; + } + }); + }); +} diff --git a/static_new/admin/js/inlines.min.js b/static_new/admin/js/inlines.min.js new file mode 100644 index 00000000..fc6dddc6 --- /dev/null +++ b/static_new/admin/js/inlines.min.js @@ -0,0 +1,11 @@ +'use strict';{const b=django.jQuery;b.fn.formset=function(c){const a=b.extend({},b.fn.formset.defaults,c),e=b(this),l=e.parent(),m=function(a,d,h){const g=new RegExp("("+d+"-(\\d+|__prefix__))");d=d+"-"+h;b(a).prop("for")&&b(a).prop("for",b(a).prop("for").replace(g,d));a.id&&(a.id=a.id.replace(g,d));a.name&&(a.name=a.name.replace(g,d))},f=b("#id_"+a.prefix+"-TOTAL_FORMS").prop("autocomplete","off");let n=parseInt(f.val(),10);const h=b("#id_"+a.prefix+"-MAX_NUM_FORMS").prop("autocomplete","off"),q= +b("#id_"+a.prefix+"-MIN_NUM_FORMS").prop("autocomplete","off");let k;const t=function(g){g.preventDefault();g=b("#"+a.prefix+"-empty");const d=g.clone(!0);d.removeClass(a.emptyCssClass).addClass(a.formCssClass).attr("id",a.prefix+"-"+n);r(d);d.find("*").each(function(){m(this,a.prefix,f.val())});d.insertBefore(b(g));b(f).val(parseInt(f.val(),10)+1);n+=1;""!==h.val()&&0>=h.val()-f.val()&&k.parent().hide();p(d.closest(".inline-group"));a.added&&a.added(d);b(document).trigger("formset:added",[d,a.prefix])}, +r=function(b){b.is("tr")?b.children(":last").append('"):b.is("ul")||b.is("ol")?b.append('
  • '+a.deleteText+"
  • "):b.children(":first").append(''+a.deleteText+"");b.find("a."+a.deleteCssClass).on("click",u.bind(this))},u=function(g){g.preventDefault();var d=b(g.target).closest("."+a.formCssClass);g=d.closest(".inline-group"); +var f=d.prev();f.length&&f.hasClass("row-form-errors")&&f.remove();d.remove();--n;a.removed&&a.removed(d);b(document).trigger("formset:removed",[d,a.prefix]);d=b("."+a.formCssClass);b("#id_"+a.prefix+"-TOTAL_FORMS").val(d.length);(""===h.val()||0'+a.addText+"");k=l.find("tr:last a")}else e.filter(":last").after('"), +k=e.filter(":last").next().find("a");k.on("click",t)})();c=""===h.val()||0 tr.form-row",b(c).tabularFormset(c,a.options)}})})}; diff --git a/static_new/admin/js/jquery.init.js b/static_new/admin/js/jquery.init.js new file mode 100644 index 00000000..f40b27f4 --- /dev/null +++ b/static_new/admin/js/jquery.init.js @@ -0,0 +1,8 @@ +/*global jQuery:false*/ +'use strict'; +/* Puts the included jQuery into our own namespace using noConflict and passing + * it 'true'. This ensures that the included jQuery doesn't pollute the global + * namespace (i.e. this preserves pre-existing values for both window.$ and + * window.jQuery). + */ +window.django = {jQuery: jQuery.noConflict(true)}; diff --git a/static_new/admin/js/nav_sidebar.js b/static_new/admin/js/nav_sidebar.js new file mode 100644 index 00000000..efaa7214 --- /dev/null +++ b/static_new/admin/js/nav_sidebar.js @@ -0,0 +1,39 @@ +'use strict'; +{ + const toggleNavSidebar = document.getElementById('toggle-nav-sidebar'); + if (toggleNavSidebar !== null) { + const navLinks = document.querySelectorAll('#nav-sidebar a'); + function disableNavLinkTabbing() { + for (const navLink of navLinks) { + navLink.tabIndex = -1; + } + } + function enableNavLinkTabbing() { + for (const navLink of navLinks) { + navLink.tabIndex = 0; + } + } + + const main = document.getElementById('main'); + let navSidebarIsOpen = localStorage.getItem('django.admin.navSidebarIsOpen'); + if (navSidebarIsOpen === null) { + navSidebarIsOpen = 'true'; + } + if (navSidebarIsOpen === 'false') { + disableNavLinkTabbing(); + } + main.classList.toggle('shifted', navSidebarIsOpen === 'true'); + + toggleNavSidebar.addEventListener('click', function() { + if (navSidebarIsOpen === 'true') { + navSidebarIsOpen = 'false'; + disableNavLinkTabbing(); + } else { + navSidebarIsOpen = 'true'; + enableNavLinkTabbing(); + } + localStorage.setItem('django.admin.navSidebarIsOpen', navSidebarIsOpen); + main.classList.toggle('shifted'); + }); + } +} diff --git a/static_new/admin/js/popup_response.js b/static_new/admin/js/popup_response.js new file mode 100644 index 00000000..2b1d3dd3 --- /dev/null +++ b/static_new/admin/js/popup_response.js @@ -0,0 +1,16 @@ +/*global opener */ +'use strict'; +{ + const initData = JSON.parse(document.getElementById('django-admin-popup-response-constants').dataset.popupResponse); + switch(initData.action) { + case 'change': + opener.dismissChangeRelatedObjectPopup(window, initData.value, initData.obj, initData.new_value); + break; + case 'delete': + opener.dismissDeleteRelatedObjectPopup(window, initData.value); + break; + default: + opener.dismissAddRelatedObjectPopup(window, initData.value, initData.obj); + break; + } +} diff --git a/static_new/admin/js/prepopulate.js b/static_new/admin/js/prepopulate.js new file mode 100644 index 00000000..89e95ab4 --- /dev/null +++ b/static_new/admin/js/prepopulate.js @@ -0,0 +1,43 @@ +/*global URLify*/ +'use strict'; +{ + const $ = django.jQuery; + $.fn.prepopulate = function(dependencies, maxLength, allowUnicode) { + /* + Depends on urlify.js + Populates a selected field with the values of the dependent fields, + URLifies and shortens the string. + dependencies - array of dependent fields ids + maxLength - maximum length of the URLify'd string + allowUnicode - Unicode support of the URLify'd string + */ + return this.each(function() { + const prepopulatedField = $(this); + + const populate = function() { + // Bail if the field's value has been changed by the user + if (prepopulatedField.data('_changed')) { + return; + } + + const values = []; + $.each(dependencies, function(i, field) { + field = $(field); + if (field.val().length > 0) { + values.push(field.val()); + } + }); + prepopulatedField.val(URLify(values.join(' '), maxLength, allowUnicode)); + }; + + prepopulatedField.data('_changed', false); + prepopulatedField.on('change', function() { + prepopulatedField.data('_changed', true); + }); + + if (!prepopulatedField.val()) { + $(dependencies.join(',')).on('keyup change focus', populate); + } + }); + }; +} diff --git a/static_new/admin/js/prepopulate.min.js b/static_new/admin/js/prepopulate.min.js new file mode 100644 index 00000000..11ead499 --- /dev/null +++ b/static_new/admin/js/prepopulate.min.js @@ -0,0 +1 @@ +'use strict';{const b=django.jQuery;b.fn.prepopulate=function(d,f,g){return this.each(function(){const a=b(this),h=function(){if(!a.data("_changed")){var e=[];b.each(d,function(a,c){c=b(c);0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 01&&(u+="a"),u},inputTooShort:function(n){var e=n.minimum-n.input.length,u="Моля въведете още "+e+" символ";return e>1&&(u+="a"),u},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(n){var e="Можете да направите до "+n.maximum+" ";return n.maximum>1?e+="избора":e+="избор",e},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"},removeAllItems:function(){return"Премахнете всички елементи"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/bn.js b/static_new/admin/js/vendor/select2/i18n/bn.js new file mode 100644 index 00000000..2d17b9d8 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/bn.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/bn",[],function(){return{errorLoading:function(){return"ফলাফলগুলি লোড করা যায়নি।"},inputTooLong:function(n){var e=n.input.length-n.maximum,u="অনুগ্রহ করে "+e+" টি অক্ষর মুছে দিন।";return 1!=e&&(u="অনুগ্রহ করে "+e+" টি অক্ষর মুছে দিন।"),u},inputTooShort:function(n){return n.minimum-n.input.length+" টি অক্ষর অথবা অধিক অক্ষর লিখুন।"},loadingMore:function(){return"আরো ফলাফল লোড হচ্ছে ..."},maximumSelected:function(n){var e=n.maximum+" টি আইটেম নির্বাচন করতে পারবেন।";return 1!=n.maximum&&(e=n.maximum+" টি আইটেম নির্বাচন করতে পারবেন।"),e},noResults:function(){return"কোন ফলাফল পাওয়া যায়নি।"},searching:function(){return"অনুসন্ধান করা হচ্ছে ..."}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/bs.js b/static_new/admin/js/vendor/select2/i18n/bs.js new file mode 100644 index 00000000..46b084d7 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/bs.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/bs",[],function(){function e(e,n,r,t){return e%10==1&&e%100!=11?n:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?r:t}return{errorLoading:function(){return"Preuzimanje nije uspijelo."},inputTooLong:function(n){var r=n.input.length-n.maximum,t="Obrišite "+r+" simbol";return t+=e(r,"","a","a")},inputTooShort:function(n){var r=n.minimum-n.input.length,t="Ukucajte bar još "+r+" simbol";return t+=e(r,"","a","a")},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(n){var r="Možete izabrati samo "+n.maximum+" stavk";return r+=e(n.maximum,"u","e","i")},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Uklonite sve stavke"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/ca.js b/static_new/admin/js/vendor/select2/i18n/ca.js new file mode 100644 index 00000000..82dbbb7a --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/ca.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Si us plau, elimina "+n+" car";return r+=1==n?"àcter":"àcters"},inputTooShort:function(e){var n=e.minimum-e.input.length,r="Si us plau, introdueix "+n+" car";return r+=1==n?"àcter":"àcters"},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var n="Només es pot seleccionar "+e.maximum+" element";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"},removeAllItems:function(){return"Treu tots els elements"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/cs.js b/static_new/admin/js/vendor/select2/i18n/cs.js new file mode 100644 index 00000000..7116d6c1 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/cs.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/cs",[],function(){function e(e,n){switch(e){case 2:return n?"dva":"dvě";case 3:return"tři";case 4:return"čtyři"}return""}return{errorLoading:function(){return"Výsledky nemohly být načteny."},inputTooLong:function(n){var t=n.input.length-n.maximum;return 1==t?"Prosím, zadejte o jeden znak méně.":t<=4?"Prosím, zadejte o "+e(t,!0)+" znaky méně.":"Prosím, zadejte o "+t+" znaků méně."},inputTooShort:function(n){var t=n.minimum-n.input.length;return 1==t?"Prosím, zadejte ještě jeden znak.":t<=4?"Prosím, zadejte ještě další "+e(t,!0)+" znaky.":"Prosím, zadejte ještě dalších "+t+" znaků."},loadingMore:function(){return"Načítají se další výsledky…"},maximumSelected:function(n){var t=n.maximum;return 1==t?"Můžete zvolit jen jednu položku.":t<=4?"Můžete zvolit maximálně "+e(t,!1)+" položky.":"Můžete zvolit maximálně "+t+" položek."},noResults:function(){return"Nenalezeny žádné položky."},searching:function(){return"Vyhledávání…"},removeAllItems:function(){return"Odstraňte všechny položky"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/da.js b/static_new/admin/js/vendor/select2/i18n/da.js new file mode 100644 index 00000000..cda32c34 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/da.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){return"Angiv venligst "+(e.input.length-e.maximum)+" tegn mindre"},inputTooShort:function(e){return"Angiv venligst "+(e.minimum-e.input.length)+" tegn mere"},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var n="Du kan kun vælge "+e.maximum+" emne";return 1!=e.maximum&&(n+="r"),n},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"},removeAllItems:function(){return"Fjern alle elementer"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/de.js b/static_new/admin/js/vendor/select2/i18n/de.js new file mode 100644 index 00000000..c2e61e58 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/de.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/de",[],function(){return{errorLoading:function(){return"Die Ergebnisse konnten nicht geladen werden."},inputTooLong:function(e){return"Bitte "+(e.input.length-e.maximum)+" Zeichen weniger eingeben"},inputTooShort:function(e){return"Bitte "+(e.minimum-e.input.length)+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var n="Sie können nur "+e.maximum+" Element";return 1!=e.maximum&&(n+="e"),n+=" auswählen"},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"},removeAllItems:function(){return"Entferne alle Elemente"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/dsb.js b/static_new/admin/js/vendor/select2/i18n/dsb.js new file mode 100644 index 00000000..02f283ab --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/dsb.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/dsb",[],function(){var n=["znamuško","znamušce","znamuška","znamuškow"],e=["zapisk","zapiska","zapiski","zapiskow"],u=function(n,e){return 1===n?e[0]:2===n?e[1]:n>2&&n<=4?e[2]:n>=5?e[3]:void 0};return{errorLoading:function(){return"Wuslědki njejsu se dali zacytaś."},inputTooLong:function(e){var a=e.input.length-e.maximum;return"Pšosym lašuj "+a+" "+u(a,n)},inputTooShort:function(e){var a=e.minimum-e.input.length;return"Pšosym zapódaj nanejmjenjej "+a+" "+u(a,n)},loadingMore:function(){return"Dalšne wuslědki se zacytaju…"},maximumSelected:function(n){return"Móžoš jano "+n.maximum+" "+u(n.maximum,e)+"wubraś."},noResults:function(){return"Žedne wuslědki namakane"},searching:function(){return"Pyta se…"},removeAllItems:function(){return"Remove all items"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/el.js b/static_new/admin/js/vendor/select2/i18n/el.js new file mode 100644 index 00000000..d4922a1d --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/el.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/el",[],function(){return{errorLoading:function(){return"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν."},inputTooLong:function(n){var e=n.input.length-n.maximum,u="Παρακαλώ διαγράψτε "+e+" χαρακτήρ";return 1==e&&(u+="α"),1!=e&&(u+="ες"),u},inputTooShort:function(n){return"Παρακαλώ συμπληρώστε "+(n.minimum-n.input.length)+" ή περισσότερους χαρακτήρες"},loadingMore:function(){return"Φόρτωση περισσότερων αποτελεσμάτων…"},maximumSelected:function(n){var e="Μπορείτε να επιλέξετε μόνο "+n.maximum+" επιλογ";return 1==n.maximum&&(e+="ή"),1!=n.maximum&&(e+="ές"),e},noResults:function(){return"Δεν βρέθηκαν αποτελέσματα"},searching:function(){return"Αναζήτηση…"},removeAllItems:function(){return"Καταργήστε όλα τα στοιχεία"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/en.js b/static_new/admin/js/vendor/select2/i18n/en.js new file mode 100644 index 00000000..3b192857 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/en.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Please delete "+n+" character";return 1!=n&&(r+="s"),r},inputTooShort:function(e){return"Please enter "+(e.minimum-e.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var n="You can only select "+e.maximum+" item";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"No results found"},searching:function(){return"Searching…"},removeAllItems:function(){return"Remove all items"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/es.js b/static_new/admin/js/vendor/select2/i18n/es.js new file mode 100644 index 00000000..68afd6d2 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/es.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"No se pudieron cargar los resultados"},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Por favor, elimine "+n+" car";return r+=1==n?"ácter":"acteres"},inputTooShort:function(e){var n=e.minimum-e.input.length,r="Por favor, introduzca "+n+" car";return r+=1==n?"ácter":"acteres"},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(e){var n="Sólo puede seleccionar "+e.maximum+" elemento";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Eliminar todos los elementos"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/et.js b/static_new/admin/js/vendor/select2/i18n/et.js new file mode 100644 index 00000000..070b61a2 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/et.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var n=e.input.length-e.maximum,t="Sisesta "+n+" täht";return 1!=n&&(t+="e"),t+=" vähem"},inputTooShort:function(e){var n=e.minimum-e.input.length,t="Sisesta "+n+" täht";return 1!=n&&(t+="e"),t+=" rohkem"},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var n="Saad vaid "+e.maximum+" tulemus";return 1==e.maximum?n+="e":n+="t",n+=" valida"},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"},removeAllItems:function(){return"Eemalda kõik esemed"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/eu.js b/static_new/admin/js/vendor/select2/i18n/eu.js new file mode 100644 index 00000000..90d5e73f --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/eu.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Idatzi ";return n+=1==t?"karaktere bat":t+" karaktere",n+=" gutxiago"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Idatzi ";return n+=1==t?"karaktere bat":t+" karaktere",n+=" gehiago"},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return 1===e.maximum?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"},removeAllItems:function(){return"Kendu elementu guztiak"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/fa.js b/static_new/admin/js/vendor/select2/i18n/fa.js new file mode 100644 index 00000000..e1ffdbed --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/fa.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(n){return"لطفاً "+(n.input.length-n.maximum)+" کاراکتر را حذف نمایید"},inputTooShort:function(n){return"لطفاً تعداد "+(n.minimum-n.input.length)+" کاراکتر یا بیشتر وارد نمایید"},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(n){return"شما تنها می‌توانید "+n.maximum+" آیتم را انتخاب نمایید"},noResults:function(){return"هیچ نتیجه‌ای یافت نشد"},searching:function(){return"در حال جستجو..."},removeAllItems:function(){return"همه موارد را حذف کنید"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/fi.js b/static_new/admin/js/vendor/select2/i18n/fi.js new file mode 100644 index 00000000..ffed1247 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/fi.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/fi",[],function(){return{errorLoading:function(){return"Tuloksia ei saatu ladattua."},inputTooLong:function(n){return"Ole hyvä ja anna "+(n.input.length-n.maximum)+" merkkiä vähemmän"},inputTooShort:function(n){return"Ole hyvä ja anna "+(n.minimum-n.input.length)+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(n){return"Voit valita ainoastaan "+n.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){return"Haetaan…"},removeAllItems:function(){return"Poista kaikki kohteet"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/fr.js b/static_new/admin/js/vendor/select2/i18n/fr.js new file mode 100644 index 00000000..dd02f973 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/fr.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/fr",[],function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(e){var n=e.input.length-e.maximum;return"Supprimez "+n+" caractère"+(n>1?"s":"")},inputTooShort:function(e){var n=e.minimum-e.input.length;return"Saisissez au moins "+n+" caractère"+(n>1?"s":"")},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){return"Vous pouvez seulement sélectionner "+e.maximum+" élément"+(e.maximum>1?"s":"")},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"},removeAllItems:function(){return"Supprimer tous les éléments"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/gl.js b/static_new/admin/js/vendor/select2/i18n/gl.js new file mode 100644 index 00000000..208a0057 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/gl.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/gl",[],function(){return{errorLoading:function(){return"Non foi posíbel cargar os resultados."},inputTooLong:function(e){var n=e.input.length-e.maximum;return 1===n?"Elimine un carácter":"Elimine "+n+" caracteres"},inputTooShort:function(e){var n=e.minimum-e.input.length;return 1===n?"Engada un carácter":"Engada "+n+" caracteres"},loadingMore:function(){return"Cargando máis resultados…"},maximumSelected:function(e){return 1===e.maximum?"Só pode seleccionar un elemento":"Só pode seleccionar "+e.maximum+" elementos"},noResults:function(){return"Non se atoparon resultados"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Elimina todos os elementos"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/he.js b/static_new/admin/js/vendor/select2/i18n/he.js new file mode 100644 index 00000000..25a8805a --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/he.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/he",[],function(){return{errorLoading:function(){return"שגיאה בטעינת התוצאות"},inputTooLong:function(n){var e=n.input.length-n.maximum,r="נא למחוק ";return r+=1===e?"תו אחד":e+" תווים"},inputTooShort:function(n){var e=n.minimum-n.input.length,r="נא להכניס ";return r+=1===e?"תו אחד":e+" תווים",r+=" או יותר"},loadingMore:function(){return"טוען תוצאות נוספות…"},maximumSelected:function(n){var e="באפשרותך לבחור עד ";return 1===n.maximum?e+="פריט אחד":e+=n.maximum+" פריטים",e},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"},removeAllItems:function(){return"הסר את כל הפריטים"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/hi.js b/static_new/admin/js/vendor/select2/i18n/hi.js new file mode 100644 index 00000000..f3ed7984 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/hi.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/hi",[],function(){return{errorLoading:function(){return"परिणामों को लोड नहीं किया जा सका।"},inputTooLong:function(n){var e=n.input.length-n.maximum,r=e+" अक्षर को हटा दें";return e>1&&(r=e+" अक्षरों को हटा दें "),r},inputTooShort:function(n){return"कृपया "+(n.minimum-n.input.length)+" या अधिक अक्षर दर्ज करें"},loadingMore:function(){return"अधिक परिणाम लोड हो रहे है..."},maximumSelected:function(n){return"आप केवल "+n.maximum+" आइटम का चयन कर सकते हैं"},noResults:function(){return"कोई परिणाम नहीं मिला"},searching:function(){return"खोज रहा है..."},removeAllItems:function(){return"सभी वस्तुओं को हटा दें"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/hr.js b/static_new/admin/js/vendor/select2/i18n/hr.js new file mode 100644 index 00000000..cb3268db --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/hr.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/hr",[],function(){function n(n){var e=" "+n+" znak";return n%10<5&&n%10>0&&(n%100<5||n%100>19)?n%10>1&&(e+="a"):e+="ova",e}return{errorLoading:function(){return"Preuzimanje nije uspjelo."},inputTooLong:function(e){return"Unesite "+n(e.input.length-e.maximum)},inputTooShort:function(e){return"Unesite još "+n(e.minimum-e.input.length)},loadingMore:function(){return"Učitavanje rezultata…"},maximumSelected:function(n){return"Maksimalan broj odabranih stavki je "+n.maximum},noResults:function(){return"Nema rezultata"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Ukloni sve stavke"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/hsb.js b/static_new/admin/js/vendor/select2/i18n/hsb.js new file mode 100644 index 00000000..3d5bf09d --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/hsb.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/hsb",[],function(){var n=["znamješko","znamješce","znamješka","znamješkow"],e=["zapisk","zapiskaj","zapiski","zapiskow"],u=function(n,e){return 1===n?e[0]:2===n?e[1]:n>2&&n<=4?e[2]:n>=5?e[3]:void 0};return{errorLoading:function(){return"Wuslědki njedachu so začitać."},inputTooLong:function(e){var a=e.input.length-e.maximum;return"Prošu zhašej "+a+" "+u(a,n)},inputTooShort:function(e){var a=e.minimum-e.input.length;return"Prošu zapodaj znajmjeńša "+a+" "+u(a,n)},loadingMore:function(){return"Dalše wuslědki so začitaja…"},maximumSelected:function(n){return"Móžeš jenož "+n.maximum+" "+u(n.maximum,e)+"wubrać"},noResults:function(){return"Žane wuslědki namakane"},searching:function(){return"Pyta so…"},removeAllItems:function(){return"Remove all items"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/hu.js b/static_new/admin/js/vendor/select2/i18n/hu.js new file mode 100644 index 00000000..4893aa2f --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/hu.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/hu",[],function(){return{errorLoading:function(){return"Az eredmények betöltése nem sikerült."},inputTooLong:function(e){return"Túl hosszú. "+(e.input.length-e.maximum)+" karakterrel több, mint kellene."},inputTooShort:function(e){return"Túl rövid. Még "+(e.minimum-e.input.length)+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(e){return"Csak "+e.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"},removeAllItems:function(){return"Távolítson el minden elemet"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/hy.js b/static_new/admin/js/vendor/select2/i18n/hy.js new file mode 100644 index 00000000..82300071 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/hy.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/hy",[],function(){return{errorLoading:function(){return"Արդյունքները հնարավոր չէ բեռնել։"},inputTooLong:function(n){return"Խնդրում ենք հեռացնել "+(n.input.length-n.maximum)+" նշան"},inputTooShort:function(n){return"Խնդրում ենք մուտքագրել "+(n.minimum-n.input.length)+" կամ ավել նշաններ"},loadingMore:function(){return"Բեռնվում են նոր արդյունքներ․․․"},maximumSelected:function(n){return"Դուք կարող եք ընտրել առավելագույնը "+n.maximum+" կետ"},noResults:function(){return"Արդյունքներ չեն գտնվել"},searching:function(){return"Որոնում․․․"},removeAllItems:function(){return"Հեռացնել բոլոր տարրերը"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/id.js b/static_new/admin/js/vendor/select2/i18n/id.js new file mode 100644 index 00000000..4a0b3bf0 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/id.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/id",[],function(){return{errorLoading:function(){return"Data tidak boleh diambil."},inputTooLong:function(n){return"Hapuskan "+(n.input.length-n.maximum)+" huruf"},inputTooShort:function(n){return"Masukkan "+(n.minimum-n.input.length)+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(n){return"Anda hanya dapat memilih "+n.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"},removeAllItems:function(){return"Hapus semua item"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/is.js b/static_new/admin/js/vendor/select2/i18n/is.js new file mode 100644 index 00000000..cca5bbec --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/is.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/is",[],function(){return{inputTooLong:function(n){var t=n.input.length-n.maximum,e="Vinsamlegast styttið texta um "+t+" staf";return t<=1?e:e+"i"},inputTooShort:function(n){var t=n.minimum-n.input.length,e="Vinsamlegast skrifið "+t+" staf";return t>1&&(e+="i"),e+=" í viðbót"},loadingMore:function(){return"Sæki fleiri niðurstöður…"},maximumSelected:function(n){return"Þú getur aðeins valið "+n.maximum+" atriði"},noResults:function(){return"Ekkert fannst"},searching:function(){return"Leita…"},removeAllItems:function(){return"Fjarlægðu öll atriði"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/it.js b/static_new/admin/js/vendor/select2/i18n/it.js new file mode 100644 index 00000000..507c7d9f --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/it.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var n=e.input.length-e.maximum,t="Per favore cancella "+n+" caratter";return t+=1!==n?"i":"e"},inputTooShort:function(e){return"Per favore inserisci "+(e.minimum-e.input.length)+" o più caratteri"},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var n="Puoi selezionare solo "+e.maximum+" element";return 1!==e.maximum?n+="i":n+="o",n},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"},removeAllItems:function(){return"Rimuovi tutti gli oggetti"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/ja.js b/static_new/admin/js/vendor/select2/i18n/ja.js new file mode 100644 index 00000000..451025e2 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/ja.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ja",[],function(){return{errorLoading:function(){return"結果が読み込まれませんでした"},inputTooLong:function(n){return n.input.length-n.maximum+" 文字を削除してください"},inputTooShort:function(n){return"少なくとも "+(n.minimum-n.input.length)+" 文字を入力してください"},loadingMore:function(){return"読み込み中…"},maximumSelected:function(n){return n.maximum+" 件しか選択できません"},noResults:function(){return"対象が見つかりません"},searching:function(){return"検索しています…"},removeAllItems:function(){return"すべてのアイテムを削除"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/ka.js b/static_new/admin/js/vendor/select2/i18n/ka.js new file mode 100644 index 00000000..60c593b7 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/ka.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ka",[],function(){return{errorLoading:function(){return"მონაცემების ჩატვირთვა შეუძლებელია."},inputTooLong:function(n){return"გთხოვთ აკრიფეთ "+(n.input.length-n.maximum)+" სიმბოლოთი ნაკლები"},inputTooShort:function(n){return"გთხოვთ აკრიფეთ "+(n.minimum-n.input.length)+" სიმბოლო ან მეტი"},loadingMore:function(){return"მონაცემების ჩატვირთვა…"},maximumSelected:function(n){return"თქვენ შეგიძლიათ აირჩიოთ არაუმეტეს "+n.maximum+" ელემენტი"},noResults:function(){return"რეზულტატი არ მოიძებნა"},searching:function(){return"ძიება…"},removeAllItems:function(){return"ამოიღე ყველა ელემენტი"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/km.js b/static_new/admin/js/vendor/select2/i18n/km.js new file mode 100644 index 00000000..4dca94f4 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/km.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/km",[],function(){return{errorLoading:function(){return"មិនអាចទាញយកទិន្នន័យ"},inputTooLong:function(n){return"សូមលុបចេញ "+(n.input.length-n.maximum)+" អក្សរ"},inputTooShort:function(n){return"សូមបញ្ចូល"+(n.minimum-n.input.length)+" អក្សរ រឺ ច្រើនជាងនេះ"},loadingMore:function(){return"កំពុងទាញយកទិន្នន័យបន្ថែម..."},maximumSelected:function(n){return"អ្នកអាចជ្រើសរើសបានតែ "+n.maximum+" ជម្រើសប៉ុណ្ណោះ"},noResults:function(){return"មិនមានលទ្ធផល"},searching:function(){return"កំពុងស្វែងរក..."},removeAllItems:function(){return"លុបធាតុទាំងអស់"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/ko.js b/static_new/admin/js/vendor/select2/i18n/ko.js new file mode 100644 index 00000000..f2880fb0 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/ko.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(n){return"너무 깁니다. "+(n.input.length-n.maximum)+" 글자 지워주세요."},inputTooShort:function(n){return"너무 짧습니다. "+(n.minimum-n.input.length)+" 글자 더 입력해주세요."},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(n){return"최대 "+n.maximum+"개까지만 선택 가능합니다."},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"},removeAllItems:function(){return"모든 항목 삭제"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/lt.js b/static_new/admin/js/vendor/select2/i18n/lt.js new file mode 100644 index 00000000..f6a42155 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/lt.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/lt",[],function(){function n(n,e,i,t){return n%10==1&&(n%100<11||n%100>19)?e:n%10>=2&&n%10<=9&&(n%100<11||n%100>19)?i:t}return{inputTooLong:function(e){var i=e.input.length-e.maximum,t="Pašalinkite "+i+" simbol";return t+=n(i,"į","ius","ių")},inputTooShort:function(e){var i=e.minimum-e.input.length,t="Įrašykite dar "+i+" simbol";return t+=n(i,"į","ius","ių")},loadingMore:function(){return"Kraunama daugiau rezultatų…"},maximumSelected:function(e){var i="Jūs galite pasirinkti tik "+e.maximum+" element";return i+=n(e.maximum,"ą","us","ų")},noResults:function(){return"Atitikmenų nerasta"},searching:function(){return"Ieškoma…"},removeAllItems:function(){return"Pašalinti visus elementus"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/lv.js b/static_new/admin/js/vendor/select2/i18n/lv.js new file mode 100644 index 00000000..806dc5c4 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/lv.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/lv",[],function(){function e(e,n,u,i){return 11===e?n:e%10==1?u:i}return{inputTooLong:function(n){var u=n.input.length-n.maximum,i="Lūdzu ievadiet par "+u;return(i+=" simbol"+e(u,"iem","u","iem"))+" mazāk"},inputTooShort:function(n){var u=n.minimum-n.input.length,i="Lūdzu ievadiet vēl "+u;return i+=" simbol"+e(u,"us","u","us")},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(n){var u="Jūs varat izvēlēties ne vairāk kā "+n.maximum;return u+=" element"+e(n.maximum,"us","u","us")},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"},removeAllItems:function(){return"Noņemt visus vienumus"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/mk.js b/static_new/admin/js/vendor/select2/i18n/mk.js new file mode 100644 index 00000000..cb7b84a2 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/mk.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/mk",[],function(){return{inputTooLong:function(n){var e=(n.input.length,n.maximum,"Ве молиме внесете "+n.maximum+" помалку карактер");return 1!==n.maximum&&(e+="и"),e},inputTooShort:function(n){var e=(n.minimum,n.input.length,"Ве молиме внесете уште "+n.maximum+" карактер");return 1!==n.maximum&&(e+="и"),e},loadingMore:function(){return"Вчитување резултати…"},maximumSelected:function(n){var e="Можете да изберете само "+n.maximum+" ставк";return 1===n.maximum?e+="а":e+="и",e},noResults:function(){return"Нема пронајдено совпаѓања"},searching:function(){return"Пребарување…"},removeAllItems:function(){return"Отстрани ги сите предмети"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/ms.js b/static_new/admin/js/vendor/select2/i18n/ms.js new file mode 100644 index 00000000..6bd7eaa3 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/ms.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ms",[],function(){return{errorLoading:function(){return"Keputusan tidak berjaya dimuatkan."},inputTooLong:function(n){return"Sila hapuskan "+(n.input.length-n.maximum)+" aksara"},inputTooShort:function(n){return"Sila masukkan "+(n.minimum-n.input.length)+" atau lebih aksara"},loadingMore:function(){return"Sedang memuatkan keputusan…"},maximumSelected:function(n){return"Anda hanya boleh memilih "+n.maximum+" pilihan"},noResults:function(){return"Tiada padanan yang ditemui"},searching:function(){return"Mencari…"},removeAllItems:function(){return"Keluarkan semua item"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/nb.js b/static_new/admin/js/vendor/select2/i18n/nb.js new file mode 100644 index 00000000..25d89c68 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/nb.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/nb",[],function(){return{errorLoading:function(){return"Kunne ikke hente resultater."},inputTooLong:function(e){return"Vennligst fjern "+(e.input.length-e.maximum)+" tegn"},inputTooShort:function(e){return"Vennligst skriv inn "+(e.minimum-e.input.length)+" tegn til"},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"},removeAllItems:function(){return"Fjern alle elementer"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/ne.js b/static_new/admin/js/vendor/select2/i18n/ne.js new file mode 100644 index 00000000..1c39f672 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/ne.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ne",[],function(){return{errorLoading:function(){return"नतिजाहरु देखाउन सकिएन।"},inputTooLong:function(n){var e=n.input.length-n.maximum,u="कृपया "+e+" अक्षर मेटाउनुहोस्।";return 1!=e&&(u+="कृपया "+e+" अक्षरहरु मेटाउनुहोस्।"),u},inputTooShort:function(n){return"कृपया बाँकी रहेका "+(n.minimum-n.input.length)+" वा अरु धेरै अक्षरहरु भर्नुहोस्।"},loadingMore:function(){return"अरु नतिजाहरु भरिँदैछन् …"},maximumSelected:function(n){var e="तँपाई "+n.maximum+" वस्तु मात्र छान्न पाउँनुहुन्छ।";return 1!=n.maximum&&(e="तँपाई "+n.maximum+" वस्तुहरु मात्र छान्न पाउँनुहुन्छ।"),e},noResults:function(){return"कुनै पनि नतिजा भेटिएन।"},searching:function(){return"खोजि हुँदैछ…"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/nl.js b/static_new/admin/js/vendor/select2/i18n/nl.js new file mode 100644 index 00000000..2b74058d --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/nl.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){return"Gelieve "+(e.input.length-e.maximum)+" karakters te verwijderen"},inputTooShort:function(e){return"Gelieve "+(e.minimum-e.input.length)+" of meer karakters in te voeren"},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var n=1==e.maximum?"kan":"kunnen",r="Er "+n+" maar "+e.maximum+" item";return 1!=e.maximum&&(r+="s"),r+=" worden geselecteerd"},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"},removeAllItems:function(){return"Verwijder alle items"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/pl.js b/static_new/admin/js/vendor/select2/i18n/pl.js new file mode 100644 index 00000000..4ca5748c --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/pl.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/pl",[],function(){var n=["znak","znaki","znaków"],e=["element","elementy","elementów"],r=function(n,e){return 1===n?e[0]:n>1&&n<=4?e[1]:n>=5?e[2]:void 0};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Usuń "+t+" "+r(t,n)},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Podaj przynajmniej "+t+" "+r(t,n)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(n){return"Możesz zaznaczyć tylko "+n.maximum+" "+r(n.maximum,e)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"},removeAllItems:function(){return"Usuń wszystkie przedmioty"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/ps.js b/static_new/admin/js/vendor/select2/i18n/ps.js new file mode 100644 index 00000000..9b008e4c --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/ps.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ps",[],function(){return{errorLoading:function(){return"پايلي نه سي ترلاسه کېدای"},inputTooLong:function(n){var e=n.input.length-n.maximum,r="د مهربانۍ لمخي "+e+" توری ړنګ کړئ";return 1!=e&&(r=r.replace("توری","توري")),r},inputTooShort:function(n){return"لږ تر لږه "+(n.minimum-n.input.length)+" يا ډېر توري وليکئ"},loadingMore:function(){return"نوري پايلي ترلاسه کيږي..."},maximumSelected:function(n){var e="تاسو يوازي "+n.maximum+" قلم په نښه کولای سی";return 1!=n.maximum&&(e=e.replace("قلم","قلمونه")),e},noResults:function(){return"پايلي و نه موندل سوې"},searching:function(){return"لټول کيږي..."},removeAllItems:function(){return"ټول توکي لرې کړئ"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/pt-BR.js b/static_new/admin/js/vendor/select2/i18n/pt-BR.js new file mode 100644 index 00000000..c991e255 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/pt-BR.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Apague "+n+" caracter";return 1!=n&&(r+="es"),r},inputTooShort:function(e){return"Digite "+(e.minimum-e.input.length)+" ou mais caracteres"},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(e){var n="Você só pode selecionar "+e.maximum+" ite";return 1==e.maximum?n+="m":n+="ns",n},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Remover todos os itens"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/pt.js b/static_new/admin/js/vendor/select2/i18n/pt.js new file mode 100644 index 00000000..b5da1a6b --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/pt.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var r=e.input.length-e.maximum,n="Por favor apague "+r+" ";return n+=1!=r?"caracteres":"caractere"},inputTooShort:function(e){return"Introduza "+(e.minimum-e.input.length)+" ou mais caracteres"},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var r="Apenas pode seleccionar "+e.maximum+" ";return r+=1!=e.maximum?"itens":"item"},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"},removeAllItems:function(){return"Remover todos os itens"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/ro.js b/static_new/admin/js/vendor/select2/i18n/ro.js new file mode 100644 index 00000000..1ba7b40b --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/ro.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/ro",[],function(){return{errorLoading:function(){return"Rezultatele nu au putut fi incărcate."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vă rugăm să ștergeți"+t+" caracter";return 1!==t&&(n+="e"),n},inputTooShort:function(e){return"Vă rugăm să introduceți "+(e.minimum-e.input.length)+" sau mai multe caractere"},loadingMore:function(){return"Se încarcă mai multe rezultate…"},maximumSelected:function(e){var t="Aveți voie să selectați cel mult "+e.maximum;return t+=" element",1!==e.maximum&&(t+="e"),t},noResults:function(){return"Nu au fost găsite rezultate"},searching:function(){return"Căutare…"},removeAllItems:function(){return"Eliminați toate elementele"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/ru.js b/static_new/admin/js/vendor/select2/i18n/ru.js new file mode 100644 index 00000000..63a7d66c --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/ru.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ru",[],function(){function n(n,e,r,u){return n%10<5&&n%10>0&&n%100<5||n%100>20?n%10>1?r:e:u}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(e){var r=e.input.length-e.maximum,u="Пожалуйста, введите на "+r+" символ";return u+=n(r,"","a","ов"),u+=" меньше"},inputTooShort:function(e){var r=e.minimum-e.input.length,u="Пожалуйста, введите ещё хотя бы "+r+" символ";return u+=n(r,"","a","ов")},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(e){var r="Вы можете выбрать не более "+e.maximum+" элемент";return r+=n(e.maximum,"","a","ов")},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"},removeAllItems:function(){return"Удалить все элементы"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/sk.js b/static_new/admin/js/vendor/select2/i18n/sk.js new file mode 100644 index 00000000..5049528a --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/sk.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/sk",[],function(){var e={2:function(e){return e?"dva":"dve"},3:function(){return"tri"},4:function(){return"štyri"}};return{errorLoading:function(){return"Výsledky sa nepodarilo načítať."},inputTooLong:function(n){var t=n.input.length-n.maximum;return 1==t?"Prosím, zadajte o jeden znak menej":t>=2&&t<=4?"Prosím, zadajte o "+e[t](!0)+" znaky menej":"Prosím, zadajte o "+t+" znakov menej"},inputTooShort:function(n){var t=n.minimum-n.input.length;return 1==t?"Prosím, zadajte ešte jeden znak":t<=4?"Prosím, zadajte ešte ďalšie "+e[t](!0)+" znaky":"Prosím, zadajte ešte ďalších "+t+" znakov"},loadingMore:function(){return"Načítanie ďalších výsledkov…"},maximumSelected:function(n){return 1==n.maximum?"Môžete zvoliť len jednu položku":n.maximum>=2&&n.maximum<=4?"Môžete zvoliť najviac "+e[n.maximum](!1)+" položky":"Môžete zvoliť najviac "+n.maximum+" položiek"},noResults:function(){return"Nenašli sa žiadne položky"},searching:function(){return"Vyhľadávanie…"},removeAllItems:function(){return"Odstráňte všetky položky"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/sl.js b/static_new/admin/js/vendor/select2/i18n/sl.js new file mode 100644 index 00000000..4d0b7d3e --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/sl.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/sl",[],function(){return{errorLoading:function(){return"Zadetkov iskanja ni bilo mogoče naložiti."},inputTooLong:function(e){var n=e.input.length-e.maximum,t="Prosim zbrišite "+n+" znak";return 2==n?t+="a":1!=n&&(t+="e"),t},inputTooShort:function(e){var n=e.minimum-e.input.length,t="Prosim vpišite še "+n+" znak";return 2==n?t+="a":1!=n&&(t+="e"),t},loadingMore:function(){return"Nalagam več zadetkov…"},maximumSelected:function(e){var n="Označite lahko največ "+e.maximum+" predmet";return 2==e.maximum?n+="a":1!=e.maximum&&(n+="e"),n},noResults:function(){return"Ni zadetkov."},searching:function(){return"Iščem…"},removeAllItems:function(){return"Odstranite vse elemente"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/sq.js b/static_new/admin/js/vendor/select2/i18n/sq.js new file mode 100644 index 00000000..59162024 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/sq.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/sq",[],function(){return{errorLoading:function(){return"Rezultatet nuk mund të ngarkoheshin."},inputTooLong:function(e){var n=e.input.length-e.maximum,t="Të lutem fshi "+n+" karakter";return 1!=n&&(t+="e"),t},inputTooShort:function(e){return"Të lutem shkruaj "+(e.minimum-e.input.length)+" ose më shumë karaktere"},loadingMore:function(){return"Duke ngarkuar më shumë rezultate…"},maximumSelected:function(e){var n="Mund të zgjedhësh vetëm "+e.maximum+" element";return 1!=e.maximum&&(n+="e"),n},noResults:function(){return"Nuk u gjet asnjë rezultat"},searching:function(){return"Duke kërkuar…"},removeAllItems:function(){return"Hiq të gjitha sendet"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/sr-Cyrl.js b/static_new/admin/js/vendor/select2/i18n/sr-Cyrl.js new file mode 100644 index 00000000..ce13ce8f --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/sr-Cyrl.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/sr-Cyrl",[],function(){function n(n,e,r,u){return n%10==1&&n%100!=11?e:n%10>=2&&n%10<=4&&(n%100<12||n%100>14)?r:u}return{errorLoading:function(){return"Преузимање није успело."},inputTooLong:function(e){var r=e.input.length-e.maximum,u="Обришите "+r+" симбол";return u+=n(r,"","а","а")},inputTooShort:function(e){var r=e.minimum-e.input.length,u="Укуцајте бар још "+r+" симбол";return u+=n(r,"","а","а")},loadingMore:function(){return"Преузимање још резултата…"},maximumSelected:function(e){var r="Можете изабрати само "+e.maximum+" ставк";return r+=n(e.maximum,"у","е","и")},noResults:function(){return"Ништа није пронађено"},searching:function(){return"Претрага…"},removeAllItems:function(){return"Уклоните све ставке"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/sr.js b/static_new/admin/js/vendor/select2/i18n/sr.js new file mode 100644 index 00000000..dd407a06 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/sr.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/sr",[],function(){function n(n,e,r,t){return n%10==1&&n%100!=11?e:n%10>=2&&n%10<=4&&(n%100<12||n%100>14)?r:t}return{errorLoading:function(){return"Preuzimanje nije uspelo."},inputTooLong:function(e){var r=e.input.length-e.maximum,t="Obrišite "+r+" simbol";return t+=n(r,"","a","a")},inputTooShort:function(e){var r=e.minimum-e.input.length,t="Ukucajte bar još "+r+" simbol";return t+=n(r,"","a","a")},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(e){var r="Možete izabrati samo "+e.maximum+" stavk";return r+=n(e.maximum,"u","e","i")},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Уклоните све ставке"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/sv.js b/static_new/admin/js/vendor/select2/i18n/sv.js new file mode 100644 index 00000000..1bc8724a --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/sv.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(n){return"Vänligen sudda ut "+(n.input.length-n.maximum)+" tecken"},inputTooShort:function(n){return"Vänligen skriv in "+(n.minimum-n.input.length)+" eller fler tecken"},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(n){return"Du kan max välja "+n.maximum+" element"},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"},removeAllItems:function(){return"Ta bort alla objekt"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/th.js b/static_new/admin/js/vendor/select2/i18n/th.js new file mode 100644 index 00000000..63eab711 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/th.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/th",[],function(){return{errorLoading:function(){return"ไม่สามารถค้นข้อมูลได้"},inputTooLong:function(n){return"โปรดลบออก "+(n.input.length-n.maximum)+" ตัวอักษร"},inputTooShort:function(n){return"โปรดพิมพ์เพิ่มอีก "+(n.minimum-n.input.length)+" ตัวอักษร"},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(n){return"คุณสามารถเลือกได้ไม่เกิน "+n.maximum+" รายการ"},noResults:function(){return"ไม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"},removeAllItems:function(){return"ลบรายการทั้งหมด"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/tk.js b/static_new/admin/js/vendor/select2/i18n/tk.js new file mode 100644 index 00000000..30255ff3 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/tk.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/tk",[],function(){return{errorLoading:function(){return"Netije ýüklenmedi."},inputTooLong:function(e){return e.input.length-e.maximum+" harp bozuň."},inputTooShort:function(e){return"Ýene-de iň az "+(e.minimum-e.input.length)+" harp ýazyň."},loadingMore:function(){return"Köpräk netije görkezilýär…"},maximumSelected:function(e){return"Diňe "+e.maximum+" sanysyny saýlaň."},noResults:function(){return"Netije tapylmady."},searching:function(){return"Gözlenýär…"},removeAllItems:function(){return"Remove all items"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/tr.js b/static_new/admin/js/vendor/select2/i18n/tr.js new file mode 100644 index 00000000..fc4c0bf0 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/tr.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/tr",[],function(){return{errorLoading:function(){return"Sonuç yüklenemedi"},inputTooLong:function(n){return n.input.length-n.maximum+" karakter daha girmelisiniz"},inputTooShort:function(n){return"En az "+(n.minimum-n.input.length)+" karakter daha girmelisiniz"},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(n){return"Sadece "+n.maximum+" seçim yapabilirsiniz"},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"},removeAllItems:function(){return"Tüm öğeleri kaldır"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/uk.js b/static_new/admin/js/vendor/select2/i18n/uk.js new file mode 100644 index 00000000..63697e38 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/uk.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/uk",[],function(){function n(n,e,u,r){return n%100>10&&n%100<15?r:n%10==1?e:n%10>1&&n%10<5?u:r}return{errorLoading:function(){return"Неможливо завантажити результати"},inputTooLong:function(e){return"Будь ласка, видаліть "+(e.input.length-e.maximum)+" "+n(e.maximum,"літеру","літери","літер")},inputTooShort:function(n){return"Будь ласка, введіть "+(n.minimum-n.input.length)+" або більше літер"},loadingMore:function(){return"Завантаження інших результатів…"},maximumSelected:function(e){return"Ви можете вибрати лише "+e.maximum+" "+n(e.maximum,"пункт","пункти","пунктів")},noResults:function(){return"Нічого не знайдено"},searching:function(){return"Пошук…"},removeAllItems:function(){return"Видалити всі елементи"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/vi.js b/static_new/admin/js/vendor/select2/i18n/vi.js new file mode 100644 index 00000000..24f3bc2d --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/vi.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/vi",[],function(){return{inputTooLong:function(n){return"Vui lòng xóa bớt "+(n.input.length-n.maximum)+" ký tự"},inputTooShort:function(n){return"Vui lòng nhập thêm từ "+(n.minimum-n.input.length)+" ký tự trở lên"},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(n){return"Chỉ có thể chọn được "+n.maximum+" lựa chọn"},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"},removeAllItems:function(){return"Xóa tất cả các mục"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/zh-CN.js b/static_new/admin/js/vendor/select2/i18n/zh-CN.js new file mode 100644 index 00000000..2c5649d3 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/zh-CN.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/zh-CN",[],function(){return{errorLoading:function(){return"无法载入结果。"},inputTooLong:function(n){return"请删除"+(n.input.length-n.maximum)+"个字符"},inputTooShort:function(n){return"请再输入至少"+(n.minimum-n.input.length)+"个字符"},loadingMore:function(){return"载入更多结果…"},maximumSelected:function(n){return"最多只能选择"+n.maximum+"个项目"},noResults:function(){return"未找到结果"},searching:function(){return"搜索中…"},removeAllItems:function(){return"删除所有项目"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/i18n/zh-TW.js b/static_new/admin/js/vendor/select2/i18n/zh-TW.js new file mode 100644 index 00000000..570a5669 --- /dev/null +++ b/static_new/admin/js/vendor/select2/i18n/zh-TW.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/zh-TW",[],function(){return{inputTooLong:function(n){return"請刪掉"+(n.input.length-n.maximum)+"個字元"},inputTooShort:function(n){return"請再輸入"+(n.minimum-n.input.length)+"個字元"},loadingMore:function(){return"載入中…"},maximumSelected:function(n){return"你只能選擇最多"+n.maximum+"項"},noResults:function(){return"沒有找到相符的項目"},searching:function(){return"搜尋中…"},removeAllItems:function(){return"刪除所有項目"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/select2.full.js.REMOVED.git-id b/static_new/admin/js/vendor/select2/select2.full.js.REMOVED.git-id new file mode 100644 index 00000000..ccdc5c0e --- /dev/null +++ b/static_new/admin/js/vendor/select2/select2.full.js.REMOVED.git-id @@ -0,0 +1 @@ +358572a6576bb33f5a4a16763803c2769d48f278 \ No newline at end of file diff --git a/static_new/admin/js/vendor/select2/select2.full.min.js b/static_new/admin/js/vendor/select2/select2.full.min.js new file mode 100644 index 00000000..fa781916 --- /dev/null +++ b/static_new/admin/js/vendor/select2/select2.full.min.js @@ -0,0 +1,2 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ +!function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),n(t),t}:n(jQuery)}(function(d){var e=function(){if(d&&d.fn&&d.fn.select2&&d.fn.select2.amd)var e=d.fn.select2.amd;var t,n,i,h,o,s,f,g,m,v,y,_,r,a,w,l;function b(e,t){return r.call(e,t)}function c(e,t){var n,i,r,o,s,a,l,c,u,d,p,h=t&&t.split("/"),f=y.map,g=f&&f["*"]||{};if(e){for(s=(e=e.split("/")).length-1,y.nodeIdCompat&&w.test(e[s])&&(e[s]=e[s].replace(w,"")),"."===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),u=0;u":">",'"':""","'":"'","/":"/"};return"string"!=typeof e?e:String(e).replace(/[&<>"'\/\\]/g,function(e){return t[e]})},r.appendMany=function(e,t){if("1.7"===o.fn.jquery.substr(0,3)){var n=o();o.map(t,function(e){n=n.add(e)}),t=n}e.append(t)},r.__cache={};var n=0;return r.GetUniqueElementId=function(e){var t=e.getAttribute("data-select2-id");return null==t&&(e.id?(t=e.id,e.setAttribute("data-select2-id",t)):(e.setAttribute("data-select2-id",++n),t=n.toString())),t},r.StoreData=function(e,t,n){var i=r.GetUniqueElementId(e);r.__cache[i]||(r.__cache[i]={}),r.__cache[i][t]=n},r.GetData=function(e,t){var n=r.GetUniqueElementId(e);return t?r.__cache[n]&&null!=r.__cache[n][t]?r.__cache[n][t]:o(e).data(t):r.__cache[n]},r.RemoveData=function(e){var t=r.GetUniqueElementId(e);null!=r.__cache[t]&&delete r.__cache[t],e.removeAttribute("data-select2-id")},r}),e.define("select2/results",["jquery","./utils"],function(h,f){function i(e,t,n){this.$element=e,this.data=n,this.options=t,i.__super__.constructor.call(this)}return f.Extend(i,f.Observable),i.prototype.render=function(){var e=h('
      ');return this.options.get("multiple")&&e.attr("aria-multiselectable","true"),this.$results=e},i.prototype.clear=function(){this.$results.empty()},i.prototype.displayMessage=function(e){var t=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var n=h(''),i=this.options.get("translations").get(e.message);n.append(t(i(e.args))),n[0].className+=" select2-results__message",this.$results.append(n)},i.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},i.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n
    ",{class:"select2-results__options select2-results__options--nested"});p.append(l),s.append(a),s.append(p)}else this.template(e,t);return f.StoreData(t,"data",e),t},i.prototype.bind=function(t,e){var l=this,n=t.id+"-results";this.$results.attr("id",n),t.on("results:all",function(e){l.clear(),l.append(e.data),t.isOpen()&&(l.setClasses(),l.highlightFirstItem())}),t.on("results:append",function(e){l.append(e.data),t.isOpen()&&l.setClasses()}),t.on("query",function(e){l.hideMessages(),l.showLoading(e)}),t.on("select",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("unselect",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("open",function(){l.$results.attr("aria-expanded","true"),l.$results.attr("aria-hidden","false"),l.setClasses(),l.ensureHighlightVisible()}),t.on("close",function(){l.$results.attr("aria-expanded","false"),l.$results.attr("aria-hidden","true"),l.$results.removeAttr("aria-activedescendant")}),t.on("results:toggle",function(){var e=l.getHighlightedResults();0!==e.length&&e.trigger("mouseup")}),t.on("results:select",function(){var e=l.getHighlightedResults();if(0!==e.length){var t=f.GetData(e[0],"data");"true"==e.attr("aria-selected")?l.trigger("close",{}):l.trigger("select",{data:t})}}),t.on("results:previous",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e);if(!(n<=0)){var i=n-1;0===e.length&&(i=0);var r=t.eq(i);r.trigger("mouseenter");var o=l.$results.offset().top,s=r.offset().top,a=l.$results.scrollTop()+(s-o);0===i?l.$results.scrollTop(0):s-o<0&&l.$results.scrollTop(a)}}),t.on("results:next",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e)+1;if(!(n>=t.length)){var i=t.eq(n);i.trigger("mouseenter");var r=l.$results.offset().top+l.$results.outerHeight(!1),o=i.offset().top+i.outerHeight(!1),s=l.$results.scrollTop()+o-r;0===n?l.$results.scrollTop(0):rthis.$results.outerHeight()||o<0)&&this.$results.scrollTop(r)}},i.prototype.template=function(e,t){var n=this.options.get("templateResult"),i=this.options.get("escapeMarkup"),r=n(e,t);null==r?t.style.display="none":"string"==typeof r?t.innerHTML=i(r):h(t).append(r)},i}),e.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),e.define("select2/selection/base",["jquery","../utils","../keys"],function(n,i,r){function o(e,t){this.$element=e,this.options=t,o.__super__.constructor.call(this)}return i.Extend(o,i.Observable),o.prototype.render=function(){var e=n('');return this._tabindex=0,null!=i.GetData(this.$element[0],"old-tabindex")?this._tabindex=i.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),e.attr("title",this.$element.attr("title")),e.attr("tabindex",this._tabindex),e.attr("aria-disabled","false"),this.$selection=e},o.prototype.bind=function(e,t){var n=this,i=e.id+"-results";this.container=e,this.$selection.on("focus",function(e){n.trigger("focus",e)}),this.$selection.on("blur",function(e){n._handleBlur(e)}),this.$selection.on("keydown",function(e){n.trigger("keypress",e),e.which===r.SPACE&&e.preventDefault()}),e.on("results:focus",function(e){n.$selection.attr("aria-activedescendant",e.data._resultId)}),e.on("selection:update",function(e){n.update(e.data)}),e.on("open",function(){n.$selection.attr("aria-expanded","true"),n.$selection.attr("aria-owns",i),n._attachCloseHandler(e)}),e.on("close",function(){n.$selection.attr("aria-expanded","false"),n.$selection.removeAttr("aria-activedescendant"),n.$selection.removeAttr("aria-owns"),n.$selection.trigger("focus"),n._detachCloseHandler(e)}),e.on("enable",function(){n.$selection.attr("tabindex",n._tabindex),n.$selection.attr("aria-disabled","false")}),e.on("disable",function(){n.$selection.attr("tabindex","-1"),n.$selection.attr("aria-disabled","true")})},o.prototype._handleBlur=function(e){var t=this;window.setTimeout(function(){document.activeElement==t.$selection[0]||n.contains(t.$selection[0],document.activeElement)||t.trigger("blur",e)},1)},o.prototype._attachCloseHandler=function(e){n(document.body).on("mousedown.select2."+e.id,function(e){var t=n(e.target).closest(".select2");n(".select2.select2-container--open").each(function(){this!=t[0]&&i.GetData(this,"element").select2("close")})})},o.prototype._detachCloseHandler=function(e){n(document.body).off("mousedown.select2."+e.id)},o.prototype.position=function(e,t){t.find(".selection").append(e)},o.prototype.destroy=function(){this._detachCloseHandler(this.container)},o.prototype.update=function(e){throw new Error("The `update` method must be defined in child classes.")},o.prototype.isEnabled=function(){return!this.isDisabled()},o.prototype.isDisabled=function(){return this.options.get("disabled")},o}),e.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(e,t,n,i){function r(){r.__super__.constructor.apply(this,arguments)}return n.Extend(r,t),r.prototype.render=function(){var e=r.__super__.render.call(this);return e.addClass("select2-selection--single"),e.html(''),e},r.prototype.bind=function(t,e){var n=this;r.__super__.bind.apply(this,arguments);var i=t.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",i).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",i),this.$selection.on("mousedown",function(e){1===e.which&&n.trigger("toggle",{originalEvent:e})}),this.$selection.on("focus",function(e){}),this.$selection.on("blur",function(e){}),t.on("focus",function(e){t.isOpen()||n.$selection.trigger("focus")})},r.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},r.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},r.prototype.selectionContainer=function(){return e("")},r.prototype.update=function(e){if(0!==e.length){var t=e[0],n=this.$selection.find(".select2-selection__rendered"),i=this.display(t,n);n.empty().append(i);var r=t.title||t.text;r?n.attr("title",r):n.removeAttr("title")}else this.clear()},r}),e.define("select2/selection/multiple",["jquery","./base","../utils"],function(r,e,l){function n(e,t){n.__super__.constructor.apply(this,arguments)}return l.Extend(n,e),n.prototype.render=function(){var e=n.__super__.render.call(this);return e.addClass("select2-selection--multiple"),e.html('
      '),e},n.prototype.bind=function(e,t){var i=this;n.__super__.bind.apply(this,arguments),this.$selection.on("click",function(e){i.trigger("toggle",{originalEvent:e})}),this.$selection.on("click",".select2-selection__choice__remove",function(e){if(!i.isDisabled()){var t=r(this).parent(),n=l.GetData(t[0],"data");i.trigger("unselect",{originalEvent:e,data:n})}})},n.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},n.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},n.prototype.selectionContainer=function(){return r('
    • ×
    • ')},n.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],n=0;n×');a.StoreData(i[0],"data",t),this.$selection.find(".select2-selection__rendered").prepend(i)}},e}),e.define("select2/selection/search",["jquery","../utils","../keys"],function(i,a,l){function e(e,t,n){e.call(this,t,n)}return e.prototype.render=function(e){var t=i('');this.$searchContainer=t,this.$search=t.find("input");var n=e.call(this);return this._transferTabIndex(),n},e.prototype.bind=function(e,t,n){var i=this,r=t.id+"-results";e.call(this,t,n),t.on("open",function(){i.$search.attr("aria-controls",r),i.$search.trigger("focus")}),t.on("close",function(){i.$search.val(""),i.$search.removeAttr("aria-controls"),i.$search.removeAttr("aria-activedescendant"),i.$search.trigger("focus")}),t.on("enable",function(){i.$search.prop("disabled",!1),i._transferTabIndex()}),t.on("disable",function(){i.$search.prop("disabled",!0)}),t.on("focus",function(e){i.$search.trigger("focus")}),t.on("results:focus",function(e){e.data._resultId?i.$search.attr("aria-activedescendant",e.data._resultId):i.$search.removeAttr("aria-activedescendant")}),this.$selection.on("focusin",".select2-search--inline",function(e){i.trigger("focus",e)}),this.$selection.on("focusout",".select2-search--inline",function(e){i._handleBlur(e)}),this.$selection.on("keydown",".select2-search--inline",function(e){if(e.stopPropagation(),i.trigger("keypress",e),i._keyUpPrevented=e.isDefaultPrevented(),e.which===l.BACKSPACE&&""===i.$search.val()){var t=i.$searchContainer.prev(".select2-selection__choice");if(0this.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),e.define("select2/data/maximumSelectionLength",[],function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("select",function(){i._checkIfMaximumSelected()})},e.prototype.query=function(e,t,n){var i=this;this._checkIfMaximumSelected(function(){e.call(i,t,n)})},e.prototype._checkIfMaximumSelected=function(e,n){var i=this;this.current(function(e){var t=null!=e?e.length:0;0=i.maximumSelectionLength?i.trigger("results:message",{message:"maximumSelected",args:{maximum:i.maximumSelectionLength}}):n&&n()})},e}),e.define("select2/dropdown",["jquery","./utils"],function(t,e){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t('');return e.attr("dir",this.options.get("dir")),this.$dropdown=e},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),e.define("select2/dropdown/search",["jquery","../utils"],function(o,e){function t(){}return t.prototype.render=function(e){var t=e.call(this),n=o('');return this.$searchContainer=n,this.$search=n.find("input"),t.prepend(n),t},t.prototype.bind=function(e,t,n){var i=this,r=t.id+"-results";e.call(this,t,n),this.$search.on("keydown",function(e){i.trigger("keypress",e),i._keyUpPrevented=e.isDefaultPrevented()}),this.$search.on("input",function(e){o(this).off("keyup")}),this.$search.on("keyup input",function(e){i.handleSearch(e)}),t.on("open",function(){i.$search.attr("tabindex",0),i.$search.attr("aria-controls",r),i.$search.trigger("focus"),window.setTimeout(function(){i.$search.trigger("focus")},0)}),t.on("close",function(){i.$search.attr("tabindex",-1),i.$search.removeAttr("aria-controls"),i.$search.removeAttr("aria-activedescendant"),i.$search.val(""),i.$search.trigger("blur")}),t.on("focus",function(){t.isOpen()||i.$search.trigger("focus")}),t.on("results:all",function(e){null!=e.query.term&&""!==e.query.term||(i.showSearch(e)?i.$searchContainer.removeClass("select2-search--hide"):i.$searchContainer.addClass("select2-search--hide"))}),t.on("results:focus",function(e){e.data._resultId?i.$search.attr("aria-activedescendant",e.data._resultId):i.$search.removeAttr("aria-activedescendant")})},t.prototype.handleSearch=function(e){if(!this._keyUpPrevented){var t=this.$search.val();this.trigger("query",{term:t})}this._keyUpPrevented=!1},t.prototype.showSearch=function(e,t){return!0},t}),e.define("select2/dropdown/hidePlaceholder",[],function(){function e(e,t,n,i){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,i)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),i=t.length-1;0<=i;i--){var r=t[i];this.placeholder.id===r.id&&n.splice(i,1)}return n},e}),e.define("select2/dropdown/infiniteScroll",["jquery"],function(n){function e(e,t,n,i){this.lastParams={},e.call(this,t,n,i),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return e.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("query",function(e){i.lastParams=e,i.loading=!0}),t.on("query:append",function(e){i.lastParams=e,i.loading=!0}),this.$results.on("scroll",this.loadMoreIfNeeded.bind(this))},e.prototype.loadMoreIfNeeded=function(){var e=n.contains(document.documentElement,this.$loadingMore[0]);if(!this.loading&&e){var t=this.$results.offset().top+this.$results.outerHeight(!1);this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)<=t+50&&this.loadMore()}},e.prototype.loadMore=function(){this.loading=!0;var e=n.extend({},{page:1},this.lastParams);e.page++,this.trigger("query:append",e)},e.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},e.prototype.createLoadingMore=function(){var e=n('
    • '),t=this.options.get("translations").get("loadingMore");return e.html(t(this.lastParams)),e},e}),e.define("select2/dropdown/attachBody",["jquery","../utils"],function(f,a){function e(e,t,n){this.$dropdownParent=f(n.get("dropdownParent")||document.body),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("open",function(){i._showDropdown(),i._attachPositioningHandler(t),i._bindContainerResultHandlers(t)}),t.on("close",function(){i._hideDropdown(),i._detachPositioningHandler(t)}),this.$dropdownContainer.on("mousedown",function(e){e.stopPropagation()})},e.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},e.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t.removeClass("select2"),t.addClass("select2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},e.prototype.render=function(e){var t=f(""),n=e.call(this);return t.append(n),this.$dropdownContainer=t},e.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},e.prototype._bindContainerResultHandlers=function(e,t){if(!this._containerResultsHandlersBound){var n=this;t.on("results:all",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:append",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:message",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("select",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("unselect",function(){n._positionDropdown(),n._resizeDropdown()}),this._containerResultsHandlersBound=!0}},e.prototype._attachPositioningHandler=function(e,t){var n=this,i="scroll.select2."+t.id,r="resize.select2."+t.id,o="orientationchange.select2."+t.id,s=this.$container.parents().filter(a.hasScroll);s.each(function(){a.StoreData(this,"select2-scroll-position",{x:f(this).scrollLeft(),y:f(this).scrollTop()})}),s.on(i,function(e){var t=a.GetData(this,"select2-scroll-position");f(this).scrollTop(t.y)}),f(window).on(i+" "+r+" "+o,function(e){n._positionDropdown(),n._resizeDropdown()})},e.prototype._detachPositioningHandler=function(e,t){var n="scroll.select2."+t.id,i="resize.select2."+t.id,r="orientationchange.select2."+t.id;this.$container.parents().filter(a.hasScroll).off(n),f(window).off(n+" "+i+" "+r)},e.prototype._positionDropdown=function(){var e=f(window),t=this.$dropdown.hasClass("select2-dropdown--above"),n=this.$dropdown.hasClass("select2-dropdown--below"),i=null,r=this.$container.offset();r.bottom=r.top+this.$container.outerHeight(!1);var o={height:this.$container.outerHeight(!1)};o.top=r.top,o.bottom=r.top+o.height;var s=this.$dropdown.outerHeight(!1),a=e.scrollTop(),l=e.scrollTop()+e.height(),c=ar.bottom+s,d={left:r.left,top:o.bottom},p=this.$dropdownParent;"static"===p.css("position")&&(p=p.offsetParent());var h={top:0,left:0};(f.contains(document.body,p[0])||p[0].isConnected)&&(h=p.offset()),d.top-=h.top,d.left-=h.left,t||n||(i="below"),u||!c||t?!c&&u&&t&&(i="below"):i="above",("above"==i||t&&"below"!==i)&&(d.top=o.top-h.top-s),null!=i&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+i),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+i)),this.$dropdownContainer.css(d)},e.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},e.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},e}),e.define("select2/dropdown/minimumResultsForSearch",[],function(){function e(e,t,n,i){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,i)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,i=0;i');return e.attr("dir",this.options.get("dir")),this.$container=e,this.$container.addClass("select2-container--"+this.options.get("theme")),u.StoreData(e[0],"element",this.$element),e},d}),e.define("select2/compat/utils",["jquery"],function(s){return{syncCssClasses:function(e,t,n){var i,r,o=[];(i=s.trim(e.attr("class")))&&s((i=""+i).split(/\s+/)).each(function(){0===this.indexOf("select2-")&&o.push(this)}),(i=s.trim(t.attr("class")))&&s((i=""+i).split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&null!=(r=n(this))&&o.push(r)}),e.attr("class",o.join(" "))}}}),e.define("select2/compat/containerCss",["jquery","./utils"],function(s,a){function l(e){return null}function e(){}return e.prototype.render=function(e){var t=e.call(this),n=this.options.get("containerCssClass")||"";s.isFunction(n)&&(n=n(this.$element));var i=this.options.get("adaptContainerCssClass");if(i=i||l,-1!==n.indexOf(":all:")){n=n.replace(":all:","");var r=i;i=function(e){var t=r(e);return null!=t?t+" "+e:e}}var o=this.options.get("containerCss")||{};return s.isFunction(o)&&(o=o(this.$element)),a.syncCssClasses(t,this.$element,i),t.css(o),t.addClass(n),t},e}),e.define("select2/compat/dropdownCss",["jquery","./utils"],function(s,a){function l(e){return null}function e(){}return e.prototype.render=function(e){var t=e.call(this),n=this.options.get("dropdownCssClass")||"";s.isFunction(n)&&(n=n(this.$element));var i=this.options.get("adaptDropdownCssClass");if(i=i||l,-1!==n.indexOf(":all:")){n=n.replace(":all:","");var r=i;i=function(e){var t=r(e);return null!=t?t+" "+e:e}}var o=this.options.get("dropdownCss")||{};return s.isFunction(o)&&(o=o(this.$element)),a.syncCssClasses(t,this.$element,i),t.css(o),t.addClass(n),t},e}),e.define("select2/compat/initSelection",["jquery"],function(i){function e(e,t,n){n.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=n.get("initSelection"),this._isInitialized=!1,e.call(this,t,n)}return e.prototype.current=function(e,t){var n=this;this._isInitialized?e.call(this,t):this.initSelection.call(null,this.$element,function(e){n._isInitialized=!0,i.isArray(e)||(e=[e]),t(e)})},e}),e.define("select2/compat/inputData",["jquery","../utils"],function(s,i){function e(e,t,n){this._currentData=[],this._valueSeparator=n.get("valueSeparator")||",","hidden"===t.prop("type")&&n.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
      ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), +l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, +q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, +q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, +"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), +a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} +for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], +"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], +H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], +J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ +I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), +["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", +/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), +["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", +hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= +!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p=^WC4Bb`i9# zI&EyVi!c~UHPA&jc1)@;t7!(jorzNIriwo(b)g`l%|=5lE{uw_AT2F)ZmuvS1R5xH zQz$M3(;@+hC6$0JL1GwedS~w3@3@#u7>e)m@IEhx^CLW@APDw?Ibn<(R+Xm!MD$N< zz5wT0dq>kybgLcO_?z!U0hy<{(fh`aVUYjp~?klpNgU=1#mZb#~A0b zsyNN&`u^$Z={5Mw@WDtwyMeEM`VGc!1wk+=;`|`uTn5H~Q~)ZKu}?vVtW95z9(~cU zE&m~ycMx_0pxg!fEvvtu=IoocQmOu^%KX$+ZCuLb@{_)w{n^^~{%G*+22C>q6oG$$ z1mrOU(+ScmWNax|_^!_w_g1SFA2gnqIj*YbqbOP>HYX8z1j|7t3Okr6kyQ;EBRc~|h#x}G$*$Wp61vi(=l~m0MX|22@j%lgdJV2wNxBL2Jk1K*ENn2QL zuJiN@H@fiAqhqg%a7ILOvaxK{bTSOXWq>VP+9KkrtICq^`*|)5U+==DQgxRI-+(P8 z3AnDg0>p6~f6?_A*)T6@!4d(&~``7T^67Bilgy=07@sn_c(o4-)0RKEuq5Yc0` zTJ10XN7ZU|m#SO@T@1t8TYyThAqcAPiO5Hwkt#E-mM#MLz6^*^0tr;@=_m@n2DEcJ z4{3CCbi3zeUo%Dy1A8~hOV;YO2M_+eI6FK0cd!3H@k2Ib-!m8p00000NkvXXu0mjf DBK37+ literal 0 HcmV?d00001 diff --git a/static_new/silk/favicon-32x32.png b/static_new/silk/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..13cd8f310c74c2c77cf86bfe85ca1fba0ff4fde6 GIT binary patch literal 1811 zcmV+u2kiKXP)@GXAtIwxze*(BrY&2xT=;(lC=8ocJEt~Dw{{c03G4v>hWGwhSJ%)kfX2qFjn27A;O+(< z0A@>aW_A{|uDyNhvw#g+Kub%@@M6*bR$_%DZ)OGWOKnjUy;Conilx)(Y0d@fKp8W0 zW^7L;-Rl0Taf5&`3`aSa*ez+MnVm4xw+e-=e;W*OU&~}N^T9nU=}t2{;C*RH6h&ui z3Rt#m*=HIWKD|fMm(1AfoUO>^a_4S9e&V$ThLt8^@whTdaFQ#DWBhdP<-VcWY<8sg z+Ai@GGkfdu<^L?)xpU{m{sbtK$!?L91$!+B+|nCLw(jKxn0pLZj2PZ)%(wvdS7g7S zZGNwcEm^W;cw^(uyFhczEZ5$iYoU8jR0U)*%^9$q#D`$B^7;Ik>%^~&!tB?;a-{kv z$IO5~B0WOez14CzH8qU}{oRc5W;7QHxqMYX7={hbCEf$Zn{j`kkb9vD_`R1W5oj0E z#Ja>c2;n%fU&=G{k5ydhboQ$fe*!-AzVx{$iY_|<=MoP}x*gcni@f#45d^NIN^WKt z=P-K<<2A5U_N_hJn z=*xWa?l?B2X0hSkduU5d#3d%+Z7pV}`zgZ+{Lsa{JQlZEd70J#XywZ6q-2sKz|r>h z+!QJeqxI!k;9f_Z!Yj+hd3)=Yy!F+aA>Isb1=#Btzu}_)1Dh87I}F2yD2gg4M43$X zUEr=_k;#c<(l3w#dG9;u)vfexurm}(^ZD_j<8{daHq1NEdP{Tl)z7jabreuKot~>q z_F>>C@WW~m%sQNNlatAKK>{?R>}6jSEGz_|#l)p=42ryBPs=Y~zWn2%ne2BY9x`Jp zaQ4cTOON*qyUwK<3D6zo7k8a#{4Ha^_VLWZmj+3#bh>$-#2T;_l0F3>f%m>`$BrFc zy~8V9x+4L06NotGe098G*eHCwc_7woHajwo?VFN&2yC(>_3mwU{KAEFQmIs;)+7Mu?9OtAyb?vxwTi#| z>^r+(W3#xm7Dkyv_W^Mbu*c=|`IBaTFL2xF(c_lZ6X3m0cV{r2KA-aI{ltD>C=}kV zh0)D%o0;F6&*x7j%D`+20;Ry70y?O%cE#eAjv+&aT>|E0GTEPaUupvgf@G_i%`vk} z#iG{N$-zlHB}s8?o1pqJik}C28$ib36%l{Mt1ws+SF*FbszS zL{W5s8rN=sl`EU?7&63O0!;)q=JQ*to3xjJR4SDiGiF>t(h9KSU=QT;`9pO?3}~xX zHBC(>wF5NK%(kCCeKOtI*;&2B+|bKXsnoEsW5;a)tu(WXlGes?adQ+!@&7^`hG7r{ z!NX?SC}}v@wo|80wsdxOUg;UvZ!=A$Qi;){$387-E#-ak56}khi#vLr{~E+YoJ&3c z)(U(9h|TOrXU?2j-!t>N0xFhHH{T=iGl?&Dx7u?OyS?WP&{607#{k~D5ny*Y$K7Tu z0Y*xa8T-Ar$D=4$^ENf$&ne)Vnwq|5#-pG`lInI#Gb@2!lKiH8KL2M1_)8v)fU1RI zcuNojDKpIkCYaF(AkhW9FWG@Ojyt0$`ed+}{{``m2C^9fSB3xp002ovPDHLkV1fzb BZ^i%s literal 0 HcmV?d00001 diff --git a/static_new/silk/filter.png b/static_new/silk/filter.png new file mode 100644 index 0000000000000000000000000000000000000000..486153bc079a957c65e2b7c6cc288280d88ed26e GIT binary patch literal 3540 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 Av;Y7A literal 0 HcmV?d00001 diff --git a/static_new/silk/fonts/fantasque/FantasqueSansMono-Bold.woff b/static_new/silk/fonts/fantasque/FantasqueSansMono-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..20e00fb514385737ebcf6e04c506851db2bccdc3 GIT binary patch literal 51496 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 z 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

      f5h>KDwy_GjV& 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 adazO8igeu0LZa8{oGS5Of<-UpC;tcchS84z literal 0 HcmV?d00001 diff --git a/static_new/silk/fonts/fira/FiraSans-BoldItalic.woff b/static_new/silk/fonts/fira/FiraSans-BoldItalic.woff new file mode 100644 index 0000000000000000000000000000000000000000..a4129c61039b337cbc4148f3b08ed944c3369614 GIT binary patch literal 92217 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 literal 0 HcmV?d00001 diff --git a/static_new/silk/fonts/fira/FiraSans-LightItalic.woff b/static_new/silk/fonts/fira/FiraSans-LightItalic.woff new file mode 100644 index 0000000000000000000000000000000000000000..43a73e88713b206d2fb1e92aae0a4ee3885447ee GIT binary patch literal 98125 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�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Π%fZMjgTYr;!EL=Bfi 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 literal 0 HcmV?d00001 diff --git a/static_new/silk/fonts/fira/FiraSans-Medium.woff b/static_new/silk/fonts/fira/FiraSans-Medium.woff new file mode 100644 index 0000000000000000000000000000000000000000..5627227744ae5b2ffb83e632cb32b237428c8962 GIT binary patch literal 89883 zcmXVX19T-#)9{V0jkB?xjkU2hwr$&XvaxL&8{4*R+qm(c=l%XZr_OZMR9DqZ^>j6+ zTxCT?0U!VX07UmE0QLI{dV>rA{ic9udwmmg001znZ|eVwu%fuwH{IzQf&TvhDkdkZ z2mtxH0|5Lo0RYT5dPTI~#1xeU0U%O;000y!0DxrA5>rt`N=fk>hx={^q6+|k`&yjz z63QwvFnuc|{g$Qq4SL9q(x`^k`gQ;S-3kBzVg0Sp>hL+A`Tq^&RcLZJGGyLHi$g0hmm!+`sMO=>PzRzHO?@JrVK2 zH8Zky0|4O7005$IUGmUbdnJ5k#`;Fza!SA3vHb@hqjSH^zKP$ooo}4z8%QCV!T*_A zJAJnW_4~Fh^!xcPWJ8U`tZWUx`B)adX@}nc#BT^)vDSC{mJJI2-Hz}-fGhxOvC+3S z27vrW0>c6TAkQwyQ7!Fk9i0FmP~SLO9RNVXuv@G%ZRcS8-Ihh_oAFyNz}UTXxb@p3 z-{Js*3qPK4b&-BQ0^ioPaWU^00sd0 zPli5|-g{rqSWnNwAX;xv&kjN!_C8i5mURn9YKwZBKs-Dx0=(2U9u~$sWVt-RAjEGZ zS8oUm9{%f-8SZoW+k#oc_xzq74g%6)(vb%2%IKef2}h(QfZN(&s<+jmD)w-WqYM>; zA)QlVa#KS?qQm-}1I@3I6Ii^5;1q?RIsv!&UbY|1xQxv3@nz7=_USBdV3?bAt+dft z`%OmjvwV@W1Iq&tpl1`r>sWC{aZ|Tjb2&N3t;bthTyn>JTL&4(&)nUPQ}>z2A6j45 zoRqKa+5V_$*Hhv(49T}$3gLZh>OaWGB$f#~t0l|%i{8ql>VM3-ZTBAE4{9cbO^j|Vw*o@6hgRXY`V1es}lJl?H|@H zBvD+yI%FUJk#*yLb>65k;5~PW;wJXK;-PYp9TDE9s@P<`{mhhd5gM&+r{DTexC*#d za#ibstU7#Wc5LILi5k&9ogdLj+L+-SSvu;XNz!ksyv>+(=tv>N3M*Dwo#e14ElYCt(mp`J`*`!3QqL=?=z;~d z7{Oy0;Z;gEu_W=>G3H2ncroF?$3AzfAVf!oQTZ8 zrvr|$5@t(!3DqDydO&Is-tnCRNc51@V6veY{H6mpcOrHqiP_o0Nnf=N3F68=^&EK7 z45m%v?>_~Z4yH+c?@303;fVAvivnwRJ=}47?$@Q%c@hq#H&WN1z z+It&h*xJD^ca2A*d=kN5!L)tTQ>j;M``rB}##v4+OlSQL4-=`nQiu+ttWMc;*H;i} zRgUjW+2ck@Ib;#Brs0SAv0ChJS zqg4AvmbqLere09(Cu!IFxE3^3a3kf7M89c%bmgS&y9#ixzP*&@_?W5a>dI7~>F8q~ zSHug>hYBw1iOj1m7^QXK5XMFMqJWd%1Wu0jxq#N9&e6Tmr zxEKG~=m7E$$n~m+G!8*A`hjT_u-%(#fOB&Ap={9$##mw8I3MLtN?wn=J1q4sa=@xt! zb`-CrJ;mq}hw&`_?y#F&6%hH1m<<>*()?h~W$0Xd^T#B^M9k}$BP*yM$d1780$ zE?G=gK{)4f=fhn@&A3N6I=`S+9^#TgJnt)p-uyIR?4Un4n6w!yP|oG;VmGn$@Y=Gu z4m}jGBa|Etvx>T|*$C<`7-uiSYtt#qL&3A$@WSiFm@ko+ltx;+mzI_JS3Sy;_O9ZY zx-#CV&NuvQ|7Pskn`8Xk!fwPjO|{-Fi~n$M6mmCmr>K`t{;M)u(=On>Av@bLW+ShO z#!Wh#g)hpPTDEyJhre6f{`0FtMd440w|!jXa@WdhcvdC1Xbtwre8BYbn3RF3$Ax=@ z;k2f!VogOG&it`@Ov!f50B>~m=#y%9)gXocYyNA{D(N)-*A!y8tOABaBl$Di`nGAc>fsQiM+QCfmKMf0PbGE zit!VFN^!vn1t-tG?3M6PvsBEOr|nTBo2)Z)n)_@@=|5=~m#o0f4T2VC$_KBukWp4_no-&J0$h;m>ZIlMj6`wZvA;4Itqb z+ydWO@0nXo3*Y*jRnc}SzurAdnjo+MdK4(j$g2 zH=k+_@}PjHY-djw(mClGTE~6t%V4iKdxrE3{sp)axU(1XJOca!YTjKGuJu1V6CRDs z4=p*v!~-r?{1vMlp6o9|S5fJ!2xQer5R46kS-EamQlg}Ca2!Tce=eQBfpB+5HC|Is zDqiTR|Hw$1l%!bqC3u#zLmKaIlT@Jo?P`r~0tfr;HS;KB9P_5^l|vhdH?)H6k`O^I zNa5%AF`3q zy~edPOKwUC+sn}KOs;(t?zOn9FH3i^SQa%^T;v z&RIs;3lnQnxzb_GVaahOoSZ`Qo4G+xF)1iG{guNM#ELvxqdeMIOr80|%l$Ej_}zsa z$H3?@&@q0;lz4eM=S75!$|AEkR4Cnu%BK*<=D>_A_fD5~8O-PC&MZ<_J#zqyIc|3r z*VIZJsf+V1a`i`%(w-!_>H}Y47wKnP%I~f9gc!*S8j;TAhhlvC;Qc}YkC7x?uTaV9 z-?D~F-V^IGd15YUcd>_5-GZKKSEfF~1c@w@d$i+-I=@fi%cb5ynLm>cFC}lc4a)J7 zWbq4ikDOzVS4DQT(2^juZ&j-m)ch6f3u&Lik?a5BFh}oK3B)0(H&u+)z(hp!3(oJr z>G+?DDB4B+y_<102+ug}-&K4+CZoDj>ZIZf--XztzLp;?nHHy~`Lb$k4F8NPmdloz z`$G^9^a*Quuejgx0_Jz(+-(Nl9q7znbA3o$Q^M)T5}M?mDJ4P{3C{mp!{dEA<0Cz7 z?6@_P&wR$XZVt6`yw1|~eErEp=|#fZ@z@oJ^jm`+Lw9^MOOx|QZX|S64U3h$aU7C)65Qv`C@BK| zxbeLv5uD^)qFq6hW4+{05G)OVEN9B+S z=mSzkw^Nh%KWI7F7ZE~#cu52b9q!4g@1^(yM&l#qs?$l0irb3`Erd_jZz-mvaku+( zlq#e?lq$6%DsyjAALohWvrQ!wlWy8U>EyCOVAH6(0t0z+9B#MV)*V@TbRB|voq+3NMgG!vCgVyVm^Zju7~iPa zcV&=MU$_tqSw2atppu6rXldZ5q8`ak3>VNx2TCL^0=EN=Dn+Uum{+Q_R(t~#o*Db= zOf`>ND!+riRoHP1ogO9}pq*JW!t?YuFQI}M>5gIC=(2}E>ZlbCW0G#k2gz3|4wElQ zp_*&?7dyq5*B?0jJ0azzq>%GGh%p*}L5!wXOd!d)tj!8lr!<|yd1ukeeCQs1e&YXi z`tJVKS6OIw&*Qe$Xd0=E?Y-$OO>Oz{?N|Zx#%EyQC|GOfVOQ3BUAt3p(9~9J&hN?G zj*$uHLU)jNm?sXxkU3Y{%Dt8yC3xr`k{M#Wg>dL_pQKQX`l3>!UbR035zQ0IwBwHV z&RS!WcVuaQp+r>g3p!w)X^21J!~GS=Wf^n+`hFIdX-iTtLW2K%hlg5U4I z7}7FtDNflwB{QREMf%&QTws{M-!C6L4L2dCNLc-huDvp`)@mnPA+kjl^{5|nnP>{ zvbH^Cc+R)DXYoP_*Uwy1@834t&U zX?qvxeurbTl>r0vF^KE{Q!;ks;!KEZ{Eulo=Kr%#>HHW@(5PLXg2hnU(-Yl4Tn65gF!hGTy;-k2o{3 zDf@Nee&$RVZ5Xhq7Y~s4QAb0mnXYEsLB!Tp+2wk?fZsBksWfoQ7e9UwG0UsYv^Csa zB~hY?+2a>dObl3sB$UcU2@Lsr!0-x?BCC*%cK zP7GS!W;hJtL*)I&VU~ml0ihllSy6)S&;x;71&6?>Js`w7XF?lL1rQ{7{-o}u;I#42 zIAPgA#ihPSM8^!GHd-7L!fKW{t!BA~%NM>PFeG!GMFN7E|90)o7s(=hzM)|7XW~l| ztxkUX#rSY6WD+!rWWCwQHeHGSUKR(jX#d1;bBvmjQ^J1XL_|T=Sjs!m!{CZiLC^!XGCh(YRxRnLM56zpY-69Kdg*x=3 z8`X97RLYy*)OJ)h`w55|w8K@`x3Pm{KSdzaIC%~8D%6{ zR!8fI#4buK9G&5Hd+Nba8sxQV6Z-Mar1hNsa#qxiJfLI$?2r!Mvg-?}L^~?qXCkE> zq>((qqU0gK-c6&pY|#i#VQFC1TjP+Ma+k~S0qv`#Uz;)W?{8!y5q3Nsj6RZE9xB^_ zk4RY$DkM7ARN_>FenPLPh`g9_85JEDX6qqgFpBo!FW5nb$}!19Yf2z#)+yT)WRAlj z%BI|N%OFS#aUpd8Q+~olz8(bYpiUAR>)tJ+x0v8yLr)I(8|tE(_NNk8tI9+mp+UB9 z^u0nR13nkK5_QcC=%F)z9^2IX+aYSl!H|0mDY`@jsWk2L4c)zGk>~&X(uS5oS_7zS zWao! zBA|k{II|kr5}~q%sfPi9=vSk57zcZ0u$sinkmcP%b(p1^VvliI!;LKT!i~XZr-K;f zhiriDObT5okpTS(7#b1b1-S((8X^v8=J_MEF1F1;VDcA&d=e6(buyuAJ3fG7g{Mh( z?IVQ>{gTZ5p&Q2M$1Uunto(8*U)UjWGgxviLHI{$@_ZVoc#yJ9#5_Cr=;t^L7v(Yd z9Y0WJ6mP^Np^AhKXDQBki-!rSsuyvl82nN+B)`Ute^S?A)WzJC06zWB4aq>kY@rR* z{tMWa)F|Y%iNkn|CP%(~??XfRBnc7G>~ksD@Al-+*f?4e#! zA5B8X?(NCNJMrg9F*#)Sfxios$3qpNx5I+>+{QdN3=;&Kb??cBZqD<(n@ehUQVD14 z+?24fKC1`tQSZc@i>cBm7eI`iE2B7nVZQf%4{PnAx1VKPX(SVV+eK}v9{+z>Qw+20 z^Rwk#|HI+lH@S^cZK{21nKxyS(oWeI$Le~Mts?YKb>NQONRE8?dfJ;vni&7QmEn0q zY<`ySN1mB^S01ywKR7-@27}^7d|w^nCmuNx`9O zlP4gUYvbJ!2CyKUHmK>YcMI)-a{yMUNWz*DZ=;qLRvdL9ns32bK^_6S9zv3Q+HFs` zLAdY^#0v0tS6qJ|99vm?*@7>;V=u<&@UQsLH#4tn8)FLWa%YItG2N#YG8mICs`G$+ zpA3uH*gPw5P}xdEV>RsR`Gw)u_fAoRNKeRbI!U2!@xu|KPsR6HjCPm|{)8Z~K;xe1 zkUoRUknW_5nNk|@7}$USXgx>XKdwR^{mu)Gbi#T8WVd4dwCU3Zl-kQU<<()E>btjM zxDo+K-2p^+s6|$b6w>Kl> zy%c)66S9yo_Ua6STxq1Trsj~fs~)w8VxrJ$NQq4e-@ES05cY?$ims(L>=cX|06w+E z80KED>v^27kHD}TS2GGc-Kfn#v4EyJjuNz^mTEa3h#nSU=S7(fnmB^Gssy6LqMO5F zZBAM1M+VuulTU+aEWNIwme(t6$CTQ;laXYkAP@zTqZGVFl#zecXpAV*F`6-F7=xwZ z{@4e`A}ljIJ|Zj*K3&K&@LX>(QP-dK5r&Vm-bIBlHXu1~PcSry7FuY=^zWX_+Oots z6ob-sfgC4+xV;@>jIUP`*3n)^R<_q0$T^0q4_R6;`#g5SN1x?W%e~uC(MD_84e}7go1<>24C!fHT*F(0&Q}N$f}lKS$~#FMZrU3QL8o`0 z!v*6`lI#y?7Pg-(RsMyO33VQGJV9Y@H>PMd`Llc43vrn4IGb|ZS3h6?d*d1pPE~!W zC#kk30SA4`RXheDSd#7lHpEZ&g6sD{aPLr)&uI;RKi`Q$$WIQK}Z4 z*Y5ZkDUO!akYZ{$e($QVI+>2&SN>*Zy%|pLx_UXXIF_+L>JD*etwUBVUCtk86TTmNw?dCFMR?me%X&~m;UO-6MJQ;g4 zSndZ$R_jqnQDdG^Q21FzWxbtJD;RovVuUV$=*p=A!fLPu8LfG9vCOR`w5dtC0WDwA zGzYqZoN z8$JHQfyJB)F{T+Ab)*~&mwbG9)*mLD;ga)v^uWe3q>B4f7%+|^2;(5 z@ge}4QbBR7G`Wzrm$$ds(z2XO$YN_zdX>K;J;ODKlApBsK|<>v(FA0E2-Da;sxJBH z4aUy4eTl;1f<9vAgrC_y2aYe=YRW=RheT;Gx^zD+9-U5o=jwX@Y7va8&;ZqCG`zFA zs;Z+(-ky#7eci%ccM>U7{#xc_YPl#@J(nt#ibs?ZgeBGX=yKO#M?CDI_x7*0R?D%M zWmJ({luspPRlmpjczNq{@`|zQCTWDA!L%asN7J~)h> zp{D$v!hl`_2E~3_R{PT7yG=Er3`81QkYRB4@hL2g41C!Oppm&*h$8M-8YVjRM!qF_G-Kp66QdJGGyNr+51C8A7!JL+j)je{33UmeXp>*aD-Wd=Ghv^0 zJdFX%6#m;$Y!-|@9TfbZ)8H%v$u^2-7IyrxR9J-ST51 z1h!RTF!UF?=f5e%0(IAic$whqgYy+flQ5~np=uKXn^O0->PIo)JWJr!8xfS3VUcwT z`{Rs3R1lA2br61I}2eMl)=uxXJ<*#0c%GwljeT?@I?24we z6qm}1G+ywZPst>%N*EhPK}DG)yhQb-D8X2h^3SYjGA+a5 z=v{+lHi0w*a;t`j5h5fw!vZ%Wk6J7!ISGJ%XV^~mtSr61sP2eo%y-PD;4oEOr?Gsf z$vGx~jw-|zZt-LMwmBLYSauv|YJjc~5FR<|XJZjFSyF7xHRD_on;w(<)>TyzT{uVz zGSbhngYR$p#=Mvt_Aa@omR`MPo4a-MzJ_0f9rtC5s*WljkqIcV)6uUfJ~{n;v1 zGeN@eKr##06vK|X7)H;JSL(v8&1T};_f1nRy@xAR`bF9`YbFOcw_uh89)pc~*1yb* zPl#~|!jJQ{PKUHMta~i-@}2SY;vo&47qwiq*Q4-4EI5?5t1bChA0;kA5JKw)6FWJY zt4xrg;$g)?%YRkatK+1PRzux1`H#SsTajhfl|rt>wf|XM z@wC@*7hkpZ0ypMnV=;kZ(sNzZrKA0O1gT>jbnT zB=^!>OsC-YWn<>{z=6C%-ldVbAOl&e}-IneFLQ~SfOXs_fyo8+KwOyl&H4| zc?F$kbRPSf9juIC&9SgP&54buK?2f@cXDT4CDl=QL&&5{$P5R9lcu?xX-{_^*|#>d zZ0izqC|?c7jU2jl@H&()WQ62~jiem{OjG!e_z1*2(QY0aL39p0+FGE@K#!Cy93qk<^_WEm>XSH$d}v+aF9P(B|%A~y%XoglE-rqI3F zxxEbb7pgBgFeYfwCt;gUc8H}_Qvm2dhz+asRTg$s6*zP}SyZVx{mQP@Uw`;|Xk!C} zT0fl}ESK>;OQEJ%1bY!wLvahrRpDzZ@ovmRhDkC41XGHHjH2b@jo1#^*aosi;iV7! z-o%eqxVmxIrF`a4}rgUBMsMk2je?9$1LmK z8MZ%x<3h{4-+|xr^7W*md~%a6_5++j6sMWHro$)@)eW@&*iw=mk(r-!_({k8ksw8; zdyYFjsNV7}^7tY-b2Fj-d^pRFY6xK$v4iC@d)+C%PQvNG81Y{4_*N~q#767bO%^Bv zHt~w+t0yngnA^GCT63&N+AYw#7C58MQ-J3b@^6hMYcjXKx{HkO4_sY(-cZ*w@~Q*g zq?3Yj5LWDRRo3O1YrCKNIY|L)xSj%O)7RDS&xUmcGXzM;Pp6_tD5=}gAymP&MttA& z!Ke@DRjqDka6ANL3lyl|1%A~LQD=3H0?~5pNlk5WyPE5XGzVaxdNoMzY5siPzPvd< zktiy9U*iF)+53N<_TW3IPfj&nI;_&kgEJ(hJh4Tj-D!FR*?cy1|jDe?}( z`3e^9%bF|SY{vIv&a0g>NT&^0&)Hlq`lE`-J`)M{rfXNQe+B&Nm)L}USI1p~KG(mT zS94MeGr*W?=(o`6)@x$hxO>;W&9T6eu%G?%mg zZm#S|_vYn_2kooO=W%f?%%S+6$n}tLprIk6q+a8KRD*$rgqWO-z>>K@d~)ur|2ahU z#n_V_G}@Tjj%*F(+f12v^HKaO&<*p0MGdik{{#T7L_i3D zpIeaanx+K`glWJigYRoJgH8GN*@;T4!7_rX z!K+2c0p$hiYr!8Wgvt|U4$jn~fASi(fOI)I!rW9P=1@!2KrN2EG}%jVa0;=95GXbt zeQtK-C@;3wZ8M1?G|Bz09?40RWiCDf{5ZUJ97xQ+CWs!f>Fq%$E+h|m*g*SJ>+8G^ z=*sfbHgwIzY>pJ-YiDLL;hNtk=$v~Rp!nclpj?lCkzY=oLr(HbHdf67P%Ija_77Q0 zs7~?l@wxJDa)!N9J+VltT*bh}!n;pqYwFnE70BF?r3wUR!Vj_Z4r@cc>8kf zxm4EM&~1WxJ~~e9Ii}P|!Av_N1_Xw zPWQ2w3gZ0OfA-JR{(htRv_}TKin<|FV z_vQ|0`~e#6?6)BN7(=El^Ktpy{dF1fv+H|=c-xGc?MByje}*o8U2sLpYUf}W&O3H* z3-J6f_M>pphXhXT+ts{Z{omTJf#>Jyy@9KGru#FNjSv30&Fzmw+p#F z6mskBadAl@pBug_{D>YG?e$;=#6}IgImdZ{4Q{V1h+sxfX9rwum+I{Any4>uysE8N zRk)k8YhrFpY>Uxhm$qN6AXQG+Ln&g4$#`|Bm*lh_g|>?Blzd0VYa6vTOZ5HwE}1do zCrvNz=~|~_v#a)3$Nz9B3`OsmKv>W4Q;`n+^v3=BWeqRaD0;-}lNa)`@EZoF?$(=a z1Nox8(o4 zm3pp8paxPSO>>yD0mIUAjpXDQq0yjDt$pM7Wb@t~hdc*XS$29j%^N;GRO9yXNeozD z88g}c(mMg?Z^*r7?6I+757s9$J%4IMQ8^&Re1l5Ml!n5w2BP%ZnuGruD#peGdS8M< z?cvSSPs%)`u{qvijpfxZhZ@R7U$fnG?Czm0YJ@)T77&1k5j^MG54Z66@SCUQ(;mlE zj|=Vf0sJIg7SX%MqWZ%DKh#)D6bFYIPwm#T?%b%!zF)1SpkS1TE8YRhwT$3XL)rZP z*!Xq-{B%9z4*l@D!|Nl;eTJjP=1=1r^+EO5OY_(JvF$zZ=l5K+ds6b@ORwU{=H+5z zyjCkyRRPv5`v&cS?b8{DQ7jc??1gKS#`pgJ!i|Sp@C$M=GtlQub{zH*;e#n4E0iFc zk3g8--L+dwc3|T~P#q&K!$niYw}-X&8KONX_ZEEmTIh(h83X%4U&P?%sx#py#y;TI zY}hP;o9?3x!0F-Ya&EB^K86JvKtIkRWH8`{M3i!RXzY%=dCy|yhNJMi+bW^|Lhoi+ zKYdALOJ4?6%hMUDrZ{FyA-e2gW1?S^bHh;CI}3xn@fX$K!|rK*n*HLJb-0xxg18we z$rxlY4q9da#9_>1OXkt76aBdLyMvD!L6b38Rn0h)sv_$?LE$jIexplM&4SUn-;3;D zy9-%S#O{g91@G0Rf82{J=go_+R%0%jzVARrk3-)ir%;2ODJ0r`Fvol2&ELG8TsmR0 zy&8rs(dQFwK^un+Sxx7X$%>`NkNODLr}E7ZUm#W(jo9mDTs4(6p8r09(UD-z1dbNS zBa`NxOUo4Cg|fkCH8n^yZ-oCUGC&Epyo31GZ;QNrJetl?K&OvG9W=W$OG59tWX6{d zZ}YU8>>FuV;K-_0DkjfaD#cz0UoWzCX))fI_@d51(LbK{%?o z(OiPPZ*$-8v6Xs3FL!6pS$$~#PwsHYCn7BQbX@pKFqyM)`b&O!HS1&ab@>{JZ!7Vd z^6TL6?K-BLk9X?a9EX|N7n7X*>oMl*vu1nw(DnPg>r1Wqsy_G5Q-Fz$QNAb;%2qm+G3Krm9jEg$XDl7F>!ic6K7G1#XmHZ zSa)h;O1WIZ+&^h?;wDDO;MhS-N$MfQMNG0dxcm#bFvyTZLr}fHGCjqiW1*1-C^(*9 zn=`Psyzj_$yT6W#pDXK^HI6}N0Jw9|;l4!dFEYv%r<^c(3+F7D zKB#+(=+3i0Xn*kYvB4CVi?cmSmETH@7-g`L4@)seOmI0aRPB4%j7&PfZC+jp$#!rs z%u3$HcY5fQr<^|Ch`JeeI+|mfr~dpNKDTRdQ@x`Af4~OqFHuMXw;nl?W!S2 zb6ZL`Qjh{Oq_(iumOrPh2L@}vZ5TXn-D_CZEwz0uafLL7=#)0b$CQ-ktDwJeyRbh= zUI^2&C!<%OYvXHUWTE0=(fvjI`xMp`#fCsEz;P4E-FvxXW=G0_iwlbgz8)A87~C76 z=kkj=6-NqI6f(GXhmdasu1&0tL_IF@4`n>QIhs8QRUA$n@MiKR>gMq#?Z(gU*-oa# zyQTW8hv8NgDER^L>E&C^x1O^bbMN^w`EkMBy_x1?dUmO6`{{iD%ooV#;^w*k%o%zS z`7WztuTZ1~`_*a@s;Lk*PY?sHbflsr!YZTUOqvgAK@8I<_j9x~FeNUatu*x2%uh8o zJS3AB6MwEn`V=~kk?Drol@e9@hO2G{ZPhGyKDw@{jk*wLjUBDcN(9Pvan`A?|bHZ4yYd z{W!FP8ff}F;r~F+Yauk9+h#nU`kxYgrpn!Sat-Ls4B(FM9JxA(6XxR>2A<+id(vAo*1)gv1#n;gz~9D zT^MJa37-=T^ZC+mA#IcCKLq4rsXyn2N5xH2j%p%!`!`Z~E#stKnOgfcg1SuNXwywg zZGW*BksQ!FGQaY=_iSYP2;(!~XTqPe!8EZKmy2l3|JF>H*a$Hpkmfl;bOMVXo6z|= z6?mKKcoG|250_xQE8Lgpi`gyYF~^Cazdgwk@lb4vG8JzJIbqP}GlKkDDl!CSgBQ^u z>xp55y%8JS{=L^poNxlFu!Z@weE8D7o_0L@JR)>dt)QCV~zf5)s}rBfc9fygl5hY-5lPrQL(8x%YZ?v^QOOM7qfnkmA8Y2FdTGF59; zz)V*c*kuuy#s3NuagooU4wT~GSBSWPWTHWNQs#y7x{8}Nj_=&5p`z;E{@`aZi3^mI zwNL_ZJ|GduCQW~*P`IsW$NrP)|Aibf&4G3Y`3EDOjs`x7#-$iuhBT238FCv`#DZ+j zm4B>n&)<}jt^RN@wxv)$l)mfji`)D25_~5e-2JCd5O9dJNf+k*lHq`GTZbJcXuj=? zCyXuvZg^1yGL;7D3FVqq0Mmn4Hz4oFV%a7M?=OlB zj@5~GkJ}gE4_YT&3dvYghBmCq1)BMFV^!Z}-M{}oh#|Q@rd%jCvXO4eZZ(1*I z>7Q%?Eb6|Aol!k7rJ@l+Pz;bWQ++*Cz2&WM0XrHQRJ(hffkZ@<24DpbkRc-ok=_7T zL8P?*a#hg2b7B+$|K-LYeQ^PhKvBMd4FC_C_YL*m^#cHs+ZtUToK!j#C_qmvtze03 ztaXV~G7CvqxZ&^LL}FrvW2^$RGQ)3LnOIiQNl#v5qMBi*{mH^Bvlw3J#D{_yItntH z?u5EU7NO%1mVuOEB;yd4Aw1*q0sS^68rr~D_YvVecaSS>Y_j5m;$R7mEVeA3V4NIv zB3xAnn?THVlzTHT2TLlpl~2q|HWp;)s6OP%+G+0m$b95{2(r)LSNH>|N9^^qkC_%Z z>ysh%5%mZ4-qoXeZvDhxnrb^A$6CW=!UqX6i&}Y;yVSJ7Qi|j<`Nc-d#*q9|6PG4BD}pB+ zE~a4UaBy|+-Tv)%26%rvczbxecpDB(241;+XNN6D&E-W>a$6uCioD2kmlg!|1unO!*co|W9QFl@25aNPhVPZT}NK;~_xU^I$19F~(tkG#S z6NwSEyC3dZ9p1riMQ`C(;kRQTMF9#z=DDSmJc&NxVS9xwR5Xc`6&)3y72K*ZrE=7n zI3gm7FiJQ{B6Rt%r8EoDXZWnK5aY1Z;ZuDkadi@P7Ika&59$%>+$=2o!@Lh?xUVJp4Y)bk1Jqg~dK##+m` zWx3^>WsJMA`^cPMyy|1e2N}F%UK)30(GdE&F$JoWR{-iu&Mp2X5aR zAEcZyWDWk^8`*o+%xjjg39~u1?WEFAW=U*Fj7({fz>omd73kJ@v#3W?r>4AQ-~p!J zIS(&yF}b9DxqMo0T}G|9gXZNb5Ta8;Oa@$XS8@ltN?a>#V0WM*W57rT9}3E~_+mP$ zx~aM@>rTcm=WYY`H`QnsTQy&Ek!PiL+wk*ZPjF zWFf0UQiCoRnX{y~LbsEq2O&>fuMxC*B0QO7Qk*e7wx$XxO@i`BAyaUr`V!In$g8ms zQ~Ly&W+jSm=u5RWJ~2bG>KOW+ORJ1c^7N?cA@^N^hMTn%U0$*dO*QM1&4S2c*qOJ113wH4*rgxN3@G6*@D)EQ zJ$yA#6@LW1pDR$&i^$G@aq^;-kjiC!G~UgNC~8W&OdpTOa^6^vS-B?r>c>oJrr)QV zvM+hK&jz2*JP^8r-t%8XY7mw}%%?5mZ1Wm^SH1EHaWzd9uU`p0<-OW@U-8;*Yiyfr z%WV7OSII6WJg|6Y`-u9!(_AkH`~30M|2ndr*>)ntjRX`3u%yDq^W&sKIrI?MqR~PP z>LHZ6Rlq3uZ|X6uAmIqWoq!+rh}c0q1ZwW!yRjg%0Dk_#%Y{EcU_rFP4oA@FKf8}T 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�B4AFN3#+;tV1iRGG~D+pv|_>g3LT&`?q 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

      k|WOIJ6NK&`F%`M2ek|sT?RqE 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

      SNwQg%4aVC}F3r6Tl)=IXdkN~#Y=GL%C+ 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

      _R{uLRO+G(HKn0jpTa{%_9 zSsV;D4ofO?a-KDIl*uK=b*PsrpQO}v|0cED2AwLO^mv+On8|+CH~MsP$b;_1S9)$8 zIxoZPt8L7Drl;-ay7??f;~n;%DZ}0DCZFesXMIETM)+jhvqo4y>jRwm9xt}6Jnh@` zCiNm!ORY=tDyAFu_=Md?O>fP0`T6iBw|N8zVnl-B%HXkk<iD z>XGC_Y#~{|>C7BfN~6UZycZT{i@Mt*X!~Mt&MSQ5f;*S2R7Z-1>55zPXq?lgWdwv; zxKZn+2MsMQ9cKNm;?QGJvA|;;L+|yR+$!$Qj(b{eo*OWdVN%t*Iu68B2Cf>f>VxBQ zb?C8!y0d7@RWun7jf%C4^J;jfpfFa5{o8)i`HZV)xVtP2u?&A@$>~HI7PSsriO0in zt~-oq_3MNGTPqX$NyL|nQb>ULbAKw7E2dnAST15o1YHiaA;O^8LJO*mYWM?_;kA zJCCcMC08JvMmCxi8N1!V?h2S|tsK;5uov2%Pc7WAKaQ=v$gZCFnbc~!TZi3eR3|gD z@YV*bvYVnfXX>>vo4!H=-wen+R1mbhvOmzl$vGGZG@*3(3%4*dhHp}E( zAK}pImO9QDa`EUM23A(qddTh2h>g)HsA6Qq<^} zmWKIdeO%|cU4s<j_BjUypH~;MNC`MH4=#bHj!)^&Okb$o^34BwV;{{uLVx79F{+tG3G$zzA7l*Dg=xMZYv*+P2~o5E5D_#r}K{#%mFL&erBoR3O2l{p-WrHTu9D6 z2V78Ae+XVe_37(OOyTrLrocsB0WS0@{`aGHZTL1P6I8+hC z+Mx2MMjl zbDkDI*mWNlRHE>p^(+@$qDb-e7#B>Ui2n5|m#;)olqRd3>5(SuNiNvw z5qs;6E=1{3IO_o}Xxib4>v=AC+L0>jpnJ|1_=-N@`I!s7b`WF>$>rOsKj#*`3+-xP z{T87MnNOk8dH2 zn^N~IZN3$oz?eh*^74wQ>;&$xn}vKOq+U)wtvFKD0f+dHi< zc%O;9JBTkRpYh%z+Se=YiJy_Y`vuS2?+eR@f4HB zGh!#0dAQt|1;~fF41kHhdMh zAGj{pfN~n-K9J{ypDA={DnOt46-h1~p6wSxkpwx7LIC!pzPj)?Ho()ASFIr757;Ro z2d1yEI8&q!RD@zd(`XLg2}Q-HnH}f|#rvn>9LUl{D5t3%Xwt+Artuso(nL+Bxg8kN z#P_D5ZLqbz>~$=hBWa1?bnn=}r^2dqh1lSy$|O$YIpAr@s7!#aIUC~2vr7)}A9=N; zAd@!^P<$UyrXn0LR({n_lsOQr$T&}=IpC~F-%YeS5Uvg{pNZrsLvm@fUa1S$!Y$q3(YOyg$7Cy#Fl_jTqFTQK9U)V+LL zIO87eJ>Zom5`}vFDP}IfN^Jl?9*^B9CM8V

    • v2PZ*e-?iT6fc0XjR7d&gIt_wIJ7@yyZQ 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 literal 0 HcmV?d00001 diff --git a/static_new/silk/fonts/glyphicons-halflings-regular.eot b/static_new/silk/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..b93a4953fff68df523aa7656497ee339d6026d64 GIT binary patch literal 20127 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 G`u_lkUM?>H literal 0 HcmV?d00001 diff --git a/static_new/silk/fonts/glyphicons-halflings-regular.woff2 b/static_new/silk/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0 GIT binary patch literal 18028 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 literal 0 HcmV?d00001 diff --git a/static_new/silk/js/cell.js b/static_new/silk/js/cell.js new file mode 100644 index 00000000..74523096 --- /dev/null +++ b/static_new/silk/js/cell.js @@ -0,0 +1,24 @@ +function configureSpanFontColors(selector, okValue, badValue) { + selector.each(function () { + var val = parseFloat($(this).text()); + if (val < okValue) { + $(this).addClass('very-good-font-color'); + } + else if (val < badValue) { + $(this).addClass('ok-font-color'); + } + else { + $(this).addClass('very-bad-font-color'); + } + }); +} + +function configureFontColors() { + configureSpanFontColors($('.time-taken-div .numeric'), 200, 500); + configureSpanFontColors($('.time-taken-queries-div .numeric'), 50, 200); + configureSpanFontColors($('.num-queries-div .numeric'), 10, 50); +} + +$(document).ready(function () { + configureFontColors(); +}); \ No newline at end of file diff --git a/static_new/silk/js/filters.js b/static_new/silk/js/filters.js new file mode 100644 index 00000000..cc0a6341 --- /dev/null +++ b/static_new/silk/js/filters.js @@ -0,0 +1,50 @@ + +function configureResizingInputs() { + var $inputs = $('.resizing-input'); + + function resizeForText(text) { + var $this = $(this); + if (!text.trim()) { + text = $this.attr('placeholder').trim(); + } + var $span = $this.parent().find('span'); + $span.text(text); + var $inputSize = $span.width(); + $this.css("width", $inputSize); + } + + $inputs.find('input').keypress(function (e) { + if (e.which && e.charCode) { + var c = String.fromCharCode(e.keyCode | e.charCode); + var $this = $(this); + resizeForText.call($this, $this.val() + c); + } + }); + + $inputs.find('input').keyup(function (e) { // Backspace event only fires for keyup + if (e.keyCode === 8 || e.keyCode === 46) { + resizeForText.call($(this), $(this).val()); + } + }); + + $inputs.find('input').each(function () { + var $this = $(this); + resizeForText.call($this, $this.val()) + }); + + + $('.resizing-input .datetimepicker').datetimepicker({ + step: 10, + onChangeDateTime: function (dp, $input) { + resizeForText.call($input, $input.val()) + } + }); + +} + +/** + * Entry point for filter initialisation. + */ +function initFilters() { + configureResizingInputs(); +} \ No newline at end of file diff --git a/static_new/silk/js/summary.js b/static_new/silk/js/summary.js new file mode 100644 index 00000000..a9f80fb3 --- /dev/null +++ b/static_new/silk/js/summary.js @@ -0,0 +1,57 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; +/******/ +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.loaded = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + + var React = __webpack_require__(1); + +/***/ }), +/* 1 */ +/***/ (function(module, exports) { + + module.exports = React; + +/***/ }) +/******/ ]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgNDNmMzFiNTY5MjE1NDE2YzliNmYiLCJ3ZWJwYWNrOi8vLy4vanMvc3VtbWFyeS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJSZWFjdFwiIl0sIm5hbWVzIjpbIlJlYWN0Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUJBQWU7QUFDZjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7OztBQ3RDQSxLQUFJQSxLQUFLLEdBQUcsbUJBQU8sQ0FBQyxDQUFELENBQW5CLEM7Ozs7OztBQ0FBLHdCIiwiZmlsZSI6IjQzZjMxYjU2OTIxNTQxNmM5YjZmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG5cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGV4cG9ydHM6IHt9LFxuIFx0XHRcdGlkOiBtb2R1bGVJZCxcbiBcdFx0XHRsb2FkZWQ6IGZhbHNlXG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgNDNmMzFiNTY5MjE1NDE2YzliNmYiLCJ2YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xuXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9qcy9zdW1tYXJ5L2luZGV4LmpzIiwibW9kdWxlLmV4cG9ydHMgPSBSZWFjdDtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCBcIlJlYWN0XCJcbi8vIG1vZHVsZSBpZCA9IDFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/static_new/silk/lib/bootstrap-datetimepicker.min.css b/static_new/silk/lib/bootstrap-datetimepicker.min.css new file mode 100644 index 00000000..1f918141 --- /dev/null +++ b/static_new/silk/lib/bootstrap-datetimepicker.min.css @@ -0,0 +1,9 @@ +/*! + * Datetimepicker for Bootstrap + * + * Copyright 2012 Stefan Petre + * Improvements by Andrew Rowls + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */.datetimepicker{padding:4px;margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;direction:ltr}.datetimepicker-inline{width:220px}.datetimepicker.datetimepicker-rtl{direction:rtl}.datetimepicker.datetimepicker-rtl table tr td span{float:right}.datetimepicker-dropdown,.datetimepicker-dropdown-left{top:0;left:0}[class*=" datetimepicker-dropdown"]:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,0.2);position:absolute}[class*=" datetimepicker-dropdown"]:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute}[class*=" datetimepicker-dropdown-top"]:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,0.2);border-bottom:0}[class*=" datetimepicker-dropdown-top"]:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;border-bottom:0}.datetimepicker-dropdown-bottom-left:before{top:-7px;right:6px}.datetimepicker-dropdown-bottom-left:after{top:-6px;right:7px}.datetimepicker-dropdown-bottom-right:before{top:-7px;left:6px}.datetimepicker-dropdown-bottom-right:after{top:-6px;left:7px}.datetimepicker-dropdown-top-left:before{bottom:-7px;right:6px}.datetimepicker-dropdown-top-left:after{bottom:-6px;right:7px}.datetimepicker-dropdown-top-right:before{bottom:-7px;left:6px}.datetimepicker-dropdown-top-right:after{bottom:-6px;left:7px}.datetimepicker>div{display:none}.datetimepicker.minutes div.datetimepicker-minutes{display:block}.datetimepicker.hours div.datetimepicker-hours{display:block}.datetimepicker.days div.datetimepicker-days{display:block}.datetimepicker.months div.datetimepicker-months{display:block}.datetimepicker.years div.datetimepicker-years{display:block}.datetimepicker table{margin:0}.datetimepicker td,.datetimepicker th{text-align:center;width:20px;height:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0}.table-striped .datetimepicker table tr td,.table-striped .datetimepicker table tr th{background-color:transparent}.datetimepicker table tr td.minute:hover{background:#eee;cursor:pointer}.datetimepicker table tr td.hour:hover{background:#eee;cursor:pointer}.datetimepicker table tr td.day:hover{background:#eee;cursor:pointer}.datetimepicker table tr td.old,.datetimepicker table tr td.new{color:#999}.datetimepicker table tr td.disabled,.datetimepicker table tr td.disabled:hover{background:0;color:#999;cursor:default}.datetimepicker table tr td.today,.datetimepicker table tr td.today:hover,.datetimepicker table tr td.today.disabled,.datetimepicker table tr td.today.disabled:hover{background-color:#fde19a;background-image:-moz-linear-gradient(top,#fdd49a,#fdf59a);background-image:-ms-linear-gradient(top,#fdd49a,#fdf59a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdd49a),to(#fdf59a));background-image:-webkit-linear-gradient(top,#fdd49a,#fdf59a);background-image:-o-linear-gradient(top,#fdd49a,#fdf59a);background-image:linear-gradient(top,#fdd49a,#fdf59a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a',endColorstr='#fdf59a',GradientType=0);border-color:#fdf59a #fdf59a #fbed50;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(enabled=false)}.datetimepicker table tr td.today:hover,.datetimepicker table tr td.today:hover:hover,.datetimepicker table tr td.today.disabled:hover,.datetimepicker table tr td.today.disabled:hover:hover,.datetimepicker table tr td.today:active,.datetimepicker table tr td.today:hover:active,.datetimepicker table tr td.today.disabled:active,.datetimepicker table tr td.today.disabled:hover:active,.datetimepicker table tr td.today.active,.datetimepicker table tr td.today:hover.active,.datetimepicker table tr td.today.disabled.active,.datetimepicker table tr td.today.disabled:hover.active,.datetimepicker table tr td.today.disabled,.datetimepicker table tr td.today:hover.disabled,.datetimepicker table tr td.today.disabled.disabled,.datetimepicker table tr td.today.disabled:hover.disabled,.datetimepicker table tr td.today[disabled],.datetimepicker table tr td.today:hover[disabled],.datetimepicker table tr td.today.disabled[disabled],.datetimepicker table tr td.today.disabled:hover[disabled]{background-color:#fdf59a}.datetimepicker table tr td.today:active,.datetimepicker table tr td.today:hover:active,.datetimepicker table tr td.today.disabled:active,.datetimepicker table tr td.today.disabled:hover:active,.datetimepicker table tr td.today.active,.datetimepicker table tr td.today:hover.active,.datetimepicker table tr td.today.disabled.active,.datetimepicker table tr td.today.disabled:hover.active{background-color:#fbf069}.datetimepicker table tr td.active,.datetimepicker table tr td.active:hover,.datetimepicker table tr td.active.disabled,.datetimepicker table tr td.active.disabled:hover{background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-ms-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(top,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc',endColorstr='#0044cc',GradientType=0);border-color:#04c #04c #002a80;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(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.datetimepicker table tr td.active:hover,.datetimepicker table tr td.active:hover:hover,.datetimepicker table tr td.active.disabled:hover,.datetimepicker table tr td.active.disabled:hover:hover,.datetimepicker table tr td.active:active,.datetimepicker table tr td.active:hover:active,.datetimepicker table tr td.active.disabled:active,.datetimepicker table tr td.active.disabled:hover:active,.datetimepicker table tr td.active.active,.datetimepicker table tr td.active:hover.active,.datetimepicker table tr td.active.disabled.active,.datetimepicker table tr td.active.disabled:hover.active,.datetimepicker table tr td.active.disabled,.datetimepicker table tr td.active:hover.disabled,.datetimepicker table tr td.active.disabled.disabled,.datetimepicker table tr td.active.disabled:hover.disabled,.datetimepicker table tr td.active[disabled],.datetimepicker table tr td.active:hover[disabled],.datetimepicker table tr td.active.disabled[disabled],.datetimepicker table tr td.active.disabled:hover[disabled]{background-color:#04c}.datetimepicker table tr td.active:active,.datetimepicker table tr td.active:hover:active,.datetimepicker table tr td.active.disabled:active,.datetimepicker table tr td.active.disabled:hover:active,.datetimepicker table tr td.active.active,.datetimepicker table tr td.active:hover.active,.datetimepicker table tr td.active.disabled.active,.datetimepicker table tr td.active.disabled:hover.active{background-color:#039}.datetimepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.datetimepicker .datetimepicker-hours span{height:26px;line-height:26px}.datetimepicker .datetimepicker-hours table tr td span.hour_am,.datetimepicker .datetimepicker-hours table tr td span.hour_pm{width:14.6%}.datetimepicker .datetimepicker-hours fieldset legend,.datetimepicker .datetimepicker-minutes fieldset legend{margin-bottom:inherit;line-height:30px}.datetimepicker .datetimepicker-minutes span{height:26px;line-height:26px}.datetimepicker table tr td span:hover{background:#eee}.datetimepicker table tr td span.disabled,.datetimepicker table tr td span.disabled:hover{background:0;color:#999;cursor:default}.datetimepicker table tr td span.active,.datetimepicker table tr td span.active:hover,.datetimepicker table tr td span.active.disabled,.datetimepicker table tr td span.active.disabled:hover{background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-ms-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(top,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc',endColorstr='#0044cc',GradientType=0);border-color:#04c #04c #002a80;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(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.datetimepicker table tr td span.active:hover,.datetimepicker table tr td span.active:hover:hover,.datetimepicker table tr td span.active.disabled:hover,.datetimepicker table tr td span.active.disabled:hover:hover,.datetimepicker table tr td span.active:active,.datetimepicker table tr td span.active:hover:active,.datetimepicker table tr td span.active.disabled:active,.datetimepicker table tr td span.active.disabled:hover:active,.datetimepicker table tr td span.active.active,.datetimepicker table tr td span.active:hover.active,.datetimepicker table tr td span.active.disabled.active,.datetimepicker table tr td span.active.disabled:hover.active,.datetimepicker table tr td span.active.disabled,.datetimepicker table tr td span.active:hover.disabled,.datetimepicker table tr td span.active.disabled.disabled,.datetimepicker table tr td span.active.disabled:hover.disabled,.datetimepicker table tr td span.active[disabled],.datetimepicker table tr td span.active:hover[disabled],.datetimepicker table tr td span.active.disabled[disabled],.datetimepicker table tr td span.active.disabled:hover[disabled]{background-color:#04c}.datetimepicker table tr td span.active:active,.datetimepicker table tr td span.active:hover:active,.datetimepicker table tr td span.active.disabled:active,.datetimepicker table tr td span.active.disabled:hover:active,.datetimepicker table tr td span.active.active,.datetimepicker table tr td span.active:hover.active,.datetimepicker table tr td span.active.disabled.active,.datetimepicker table tr td span.active.disabled:hover.active{background-color:#039}.datetimepicker table tr td span.old{color:#999}.datetimepicker th.switch{width:145px}.datetimepicker thead tr:first-child th,.datetimepicker tfoot tr:first-child th{cursor:pointer}.datetimepicker thead tr:first-child th:hover,.datetimepicker tfoot tr:first-child th:hover{background:#eee}.input-append.date .add-on i,.input-prepend.date .add-on i,.input-group.date .input-group-addon span{cursor:pointer;width:14px;height:14px} \ No newline at end of file diff --git a/static_new/silk/lib/bootstrap-datetimepicker.min.js b/static_new/silk/lib/bootstrap-datetimepicker.min.js new file mode 100644 index 00000000..e1eefcfc --- /dev/null +++ b/static_new/silk/lib/bootstrap-datetimepicker.min.js @@ -0,0 +1 @@ +!function(c){function f(){return new Date(Date.UTC.apply(Date,arguments))}function a(){var g=new Date();return f(g.getUTCFullYear(),g.getUTCMonth(),g.getUTCDate(),g.getUTCHours(),g.getUTCMinutes(),g.getUTCSeconds(),0)}var e=function(h,g){var i=this;this.element=c(h);this.container=g.container||"body";this.language=g.language||this.element.data("date-language")||"en";this.language=this.language in d?this.language:"en";this.isRTL=d[this.language].rtl||false;this.formatType=g.formatType||this.element.data("format-type")||"standard";this.format=b.parseFormat(g.format||this.element.data("date-format")||d[this.language].format||b.getDefaultFormat(this.formatType,"input"),this.formatType);this.isInline=false;this.isVisible=false;this.isInput=this.element.is("input");this.bootcssVer=this.isInput?(this.element.is(".form-control")?3:2):(this.bootcssVer=this.element.is(".input-group")?3:2);this.component=this.element.is(".date")?(this.bootcssVer==3?this.element.find(".input-group-addon .glyphicon-th, .input-group-addon .glyphicon-time, .input-group-addon .glyphicon-calendar").parent():this.element.find(".add-on .icon-th, .add-on .icon-time, .add-on .icon-calendar").parent()):false;this.componentReset=this.element.is(".date")?(this.bootcssVer==3?this.element.find(".input-group-addon .glyphicon-remove").parent():this.element.find(".add-on .icon-remove").parent()):false;this.hasInput=this.component&&this.element.find("input").length;if(this.component&&this.component.length===0){this.component=false}this.linkField=g.linkField||this.element.data("link-field")||false;this.linkFormat=b.parseFormat(g.linkFormat||this.element.data("link-format")||b.getDefaultFormat(this.formatType,"link"),this.formatType);this.minuteStep=g.minuteStep||this.element.data("minute-step")||5;this.pickerPosition=g.pickerPosition||this.element.data("picker-position")||"bottom-right";this.showMeridian=g.showMeridian||this.element.data("show-meridian")||false;this.initialDate=g.initialDate||new Date();this._attachEvents();this.formatViewType="datetime";if("formatViewType" in g){this.formatViewType=g.formatViewType}else{if("formatViewType" in this.element.data()){this.formatViewType=this.element.data("formatViewType")}}this.minView=0;if("minView" in g){this.minView=g.minView}else{if("minView" in this.element.data()){this.minView=this.element.data("min-view")}}this.minView=b.convertViewMode(this.minView);this.maxView=b.modes.length-1;if("maxView" in g){this.maxView=g.maxView}else{if("maxView" in this.element.data()){this.maxView=this.element.data("max-view")}}this.maxView=b.convertViewMode(this.maxView);this.wheelViewModeNavigation=false;if("wheelViewModeNavigation" in g){this.wheelViewModeNavigation=g.wheelViewModeNavigation}else{if("wheelViewModeNavigation" in this.element.data()){this.wheelViewModeNavigation=this.element.data("view-mode-wheel-navigation")}}this.wheelViewModeNavigationInverseDirection=false;if("wheelViewModeNavigationInverseDirection" in g){this.wheelViewModeNavigationInverseDirection=g.wheelViewModeNavigationInverseDirection}else{if("wheelViewModeNavigationInverseDirection" in this.element.data()){this.wheelViewModeNavigationInverseDirection=this.element.data("view-mode-wheel-navigation-inverse-dir")}}this.wheelViewModeNavigationDelay=100;if("wheelViewModeNavigationDelay" in g){this.wheelViewModeNavigationDelay=g.wheelViewModeNavigationDelay}else{if("wheelViewModeNavigationDelay" in this.element.data()){this.wheelViewModeNavigationDelay=this.element.data("view-mode-wheel-navigation-delay")}}this.startViewMode=2;if("startView" in g){this.startViewMode=g.startView}else{if("startView" in this.element.data()){this.startViewMode=this.element.data("start-view")}}this.startViewMode=b.convertViewMode(this.startViewMode);this.viewMode=this.startViewMode;this.viewSelect=this.minView;if("viewSelect" in g){this.viewSelect=g.viewSelect}else{if("viewSelect" in this.element.data()){this.viewSelect=this.element.data("view-select")}}this.viewSelect=b.convertViewMode(this.viewSelect);this.forceParse=true;if("forceParse" in g){this.forceParse=g.forceParse}else{if("dateForceParse" in this.element.data()){this.forceParse=this.element.data("date-force-parse")}}this.picker=c((this.bootcssVer==3)?b.templateV3:b.template).appendTo(this.isInline?this.element:this.container).on({click:c.proxy(this.click,this),mousedown:c.proxy(this.mousedown,this)});if(this.wheelViewModeNavigation){if(c.fn.mousewheel){this.picker.on({mousewheel:c.proxy(this.mousewheel,this)})}else{console.log("Mouse Wheel event is not supported. Please include the jQuery Mouse Wheel plugin before enabling this option")}}if(this.isInline){this.picker.addClass("datetimepicker-inline")}else{this.picker.addClass("datetimepicker-dropdown-"+this.pickerPosition+" dropdown-menu")}if(this.isRTL){this.picker.addClass("datetimepicker-rtl");if(this.bootcssVer==3){this.picker.find(".prev span, .next span").toggleClass("glyphicon-arrow-left glyphicon-arrow-right")}else{this.picker.find(".prev i, .next i").toggleClass("icon-arrow-left icon-arrow-right")}}c(document).on("mousedown",function(j){if(c(j.target).closest(".datetimepicker").length===0){i.hide()}});this.autoclose=false;if("autoclose" in g){this.autoclose=g.autoclose}else{if("dateAutoclose" in this.element.data()){this.autoclose=this.element.data("date-autoclose")}}this.keyboardNavigation=true;if("keyboardNavigation" in g){this.keyboardNavigation=g.keyboardNavigation}else{if("dateKeyboardNavigation" in this.element.data()){this.keyboardNavigation=this.element.data("date-keyboard-navigation")}}this.todayBtn=(g.todayBtn||this.element.data("date-today-btn")||false);this.todayHighlight=(g.todayHighlight||this.element.data("date-today-highlight")||false);this.weekStart=((g.weekStart||this.element.data("date-weekstart")||d[this.language].weekStart||0)%7);this.weekEnd=((this.weekStart+6)%7);this.startDate=-Infinity;this.endDate=Infinity;this.daysOfWeekDisabled=[];this.setStartDate(g.startDate||this.element.data("date-startdate"));this.setEndDate(g.endDate||this.element.data("date-enddate"));this.setDaysOfWeekDisabled(g.daysOfWeekDisabled||this.element.data("date-days-of-week-disabled"));this.fillDow();this.fillMonths();this.update();this.showMode();if(this.isInline){this.show()}};e.prototype={constructor:e,_events:[],_attachEvents:function(){this._detachEvents();if(this.isInput){this._events=[[this.element,{focus:c.proxy(this.show,this),keyup:c.proxy(this.update,this),keydown:c.proxy(this.keydown,this)}]]}else{if(this.component&&this.hasInput){this._events=[[this.element.find("input"),{focus:c.proxy(this.show,this),keyup:c.proxy(this.update,this),keydown:c.proxy(this.keydown,this)}],[this.component,{click:c.proxy(this.show,this)}]];if(this.componentReset){this._events.push([this.componentReset,{click:c.proxy(this.reset,this)}])}}else{if(this.element.is("div")){this.isInline=true}else{this._events=[[this.element,{click:c.proxy(this.show,this)}]]}}}for(var g=0,h,j;g=this.startDate&&g<=this.endDate){this.date=g;this.setValue();this.viewDate=this.date;this.fill()}else{this.element.trigger({type:"outOfRange",date:g,startDate:this.startDate,endDate:this.endDate})}},setFormat:function(h){this.format=b.parseFormat(h,this.formatType);var g;if(this.isInput){g=this.element}else{if(this.component){g=this.element.find("input")}}if(g&&g.val()){this.setValue()}},setValue:function(){var g=this.getFormattedDate();if(!this.isInput){if(this.component){this.element.find("input").val(g)}this.element.data("date",g)}else{this.element.val(g)}if(this.linkField){c("#"+this.linkField).val(this.getFormattedDate(this.linkFormat))}},getFormattedDate:function(g){if(g==undefined){g=this.format}return b.formatDate(this.date,g,this.language,this.formatType)},setStartDate:function(g){this.startDate=g||-Infinity;if(this.startDate!==-Infinity){this.startDate=b.parseDate(this.startDate,this.format,this.language,this.formatType)}this.update();this.updateNavArrows()},setEndDate:function(g){this.endDate=g||Infinity;if(this.endDate!==Infinity){this.endDate=b.parseDate(this.endDate,this.format,this.language,this.formatType)}this.update();this.updateNavArrows()},setDaysOfWeekDisabled:function(g){this.daysOfWeekDisabled=g||[];if(!c.isArray(this.daysOfWeekDisabled)){this.daysOfWeekDisabled=this.daysOfWeekDisabled.split(/,\s*/)}this.daysOfWeekDisabled=c.map(this.daysOfWeekDisabled,function(h){return parseInt(h,10)});this.update();this.updateNavArrows()},place:function(){if(this.isInline){return}var g=0;c("div").each(function(){var m=parseInt(c(this).css("zIndex"),10);if(m>g){g=m}});var l=g+10;var k,j,i,h;if(this.container instanceof c){h=this.container.offset()}else{h=c(this.container).offset()}if(this.component){k=this.component.offset();i=k.left;if(this.pickerPosition=="bottom-left"||this.pickerPosition=="top-left"){i+=this.component.outerWidth()-this.picker.outerWidth()}}else{k=this.element.offset();i=k.left}if(i+220>document.body.clientWidth){i=document.body.clientWidth-220}if(this.pickerPosition=="top-left"||this.pickerPosition=="top-right"){j=k.top-this.picker.outerHeight()}else{j=k.top+this.height}j=j-h.top;i=i-h.left;this.picker.css({top:j,left:i,zIndex:l})},update:function(){var g,h=false;if(arguments&&arguments.length&&(typeof arguments[0]==="string"||arguments[0] instanceof Date)){g=arguments[0];h=true}else{g=(this.isInput?this.element.val():this.element.find("input").val())||this.element.data("date")||this.initialDate;if(typeof g=="string"||g instanceof String){g=g.replace(/^\s+|\s+$/g,"")}}if(!g){g=new Date();h=false}this.date=b.parseDate(g,this.format,this.language,this.formatType);if(h){this.setValue()}if(this.datethis.endDate){this.viewDate=new Date(this.endDate)}else{this.viewDate=new Date(this.date)}}this.fill()},fillDow:function(){var g=this.weekStart,h="";while(g'+d[this.language].daysMin[(g++)%7]+""}h+="";this.picker.find(".datetimepicker-days thead").append(h)},fillMonths:function(){var h="",g=0;while(g<12){h+=''+d[this.language].monthsShort[g++]+""}this.picker.find(".datetimepicker-months td").html(h)},fill:function(){if(this.date==null||this.viewDate==null){return}var E=new Date(this.viewDate),q=E.getUTCFullYear(),F=E.getUTCMonth(),j=E.getUTCDate(),z=E.getUTCHours(),u=E.getUTCMinutes(),v=this.startDate!==-Infinity?this.startDate.getUTCFullYear():-Infinity,A=this.startDate!==-Infinity?this.startDate.getUTCMonth():-Infinity,l=this.endDate!==Infinity?this.endDate.getUTCFullYear():Infinity,w=this.endDate!==Infinity?this.endDate.getUTCMonth():Infinity,n=(new f(this.date.getUTCFullYear(),this.date.getUTCMonth(),this.date.getUTCDate())).valueOf(),D=new Date();this.picker.find(".datetimepicker-days thead th:eq(1)").text(d[this.language].months[F]+" "+q);if(this.formatViewType=="time"){var B=z%12?z%12:12;var h=(B<10?"0":"")+B;var m=(u<10?"0":"")+u;var H=d[this.language].meridiem[z<12?0:1];this.picker.find(".datetimepicker-hours thead th:eq(1)").text(h+":"+m+" "+(H?H.toUpperCase():""));this.picker.find(".datetimepicker-minutes thead th:eq(1)").text(h+":"+m+" "+(H?H.toUpperCase():""))}else{this.picker.find(".datetimepicker-hours thead th:eq(1)").text(j+" "+d[this.language].months[F]+" "+q);this.picker.find(".datetimepicker-minutes thead th:eq(1)").text(j+" "+d[this.language].months[F]+" "+q)}this.picker.find("tfoot th.today").text(d[this.language].today).toggle(this.todayBtn!==false);this.updateNavArrows();this.fillMonths();var I=f(q,F-1,28,0,0,0,0),y=b.getDaysInMonth(I.getUTCFullYear(),I.getUTCMonth());I.setUTCDate(y);I.setUTCDate(y-(I.getUTCDay()-this.weekStart+7)%7);var g=new Date(I);g.setUTCDate(g.getUTCDate()+42);g=g.valueOf();var o=[];var r;while(I.valueOf()")}r="";if(I.getUTCFullYear()q||(I.getUTCFullYear()==q&&I.getUTCMonth()>F)){r+=" new"}}if(this.todayHighlight&&I.getUTCFullYear()==D.getFullYear()&&I.getUTCMonth()==D.getMonth()&&I.getUTCDate()==D.getDate()){r+=" today"}if(I.valueOf()==n){r+=" active"}if((I.valueOf()+86400000)<=this.startDate||I.valueOf()>this.endDate||c.inArray(I.getUTCDay(),this.daysOfWeekDisabled)!==-1){r+=" disabled"}o.push(''+I.getUTCDate()+"");if(I.getUTCDay()==this.weekEnd){o.push("")}I.setUTCDate(I.getUTCDate()+1)}this.picker.find(".datetimepicker-days tbody").empty().append(o.join(""));o=[];var s="",C="",p="";for(var x=0;x<24;x++){var t=f(q,F,j,x);r="";if((t.valueOf()+3600000)<=this.startDate||t.valueOf()>this.endDate){r+=" disabled"}else{if(z==x){r+=" active"}}if(this.showMeridian&&d[this.language].meridiem.length==2){C=(x<12?d[this.language].meridiem[0]:d[this.language].meridiem[1]);if(C!=p){if(p!=""){o.push("")}o.push('
      '+C.toUpperCase()+"")}p=C;s=(x%12?x%12:12);o.push(''+s+"");if(x==23){o.push("
      ")}}else{s=x+":00";o.push(''+s+"")}}this.picker.find(".datetimepicker-hours td").html(o.join(""));o=[];s="",C="",p="";for(var x=0;x<60;x+=this.minuteStep){var t=f(q,F,j,z,x,0);r="";if(t.valueOf()this.endDate){r+=" disabled"}else{if(Math.floor(u/this.minuteStep)==Math.floor(x/this.minuteStep)){r+=" active"}}if(this.showMeridian&&d[this.language].meridiem.length==2){C=(z<12?d[this.language].meridiem[0]:d[this.language].meridiem[1]);if(C!=p){if(p!=""){o.push("")}o.push('
      '+C.toUpperCase()+"")}p=C;s=(z%12?z%12:12);o.push(''+s+":"+(x<10?"0"+x:x)+"");if(x==59){o.push("
      ")}}else{s=x+":00";o.push(''+z+":"+(x<10?"0"+x:x)+"")}}this.picker.find(".datetimepicker-minutes td").html(o.join(""));var J=this.date.getUTCFullYear();var k=this.picker.find(".datetimepicker-months").find("th:eq(1)").text(q).end().find("span").removeClass("active");if(J==q){k.eq(this.date.getUTCMonth()).addClass("active")}if(ql){k.addClass("disabled")}if(q==v){k.slice(0,A).addClass("disabled")}if(q==l){k.slice(w+1).addClass("disabled")}o="";q=parseInt(q/10,10)*10;var G=this.picker.find(".datetimepicker-years").find("th:eq(1)").text(q+"-"+(q+9)).end().find("td");q-=1;for(var x=-1;x<11;x++){o+='l?" disabled":"")+'">'+q+"";q+=1}G.html(o);this.place()},updateNavArrows:function(){var k=new Date(this.viewDate),i=k.getUTCFullYear(),j=k.getUTCMonth(),h=k.getUTCDate(),g=k.getUTCHours();switch(this.viewMode){case 0:if(this.startDate!==-Infinity&&i<=this.startDate.getUTCFullYear()&&j<=this.startDate.getUTCMonth()&&h<=this.startDate.getUTCDate()&&g<=this.startDate.getUTCHours()){this.picker.find(".prev").css({visibility:"hidden"})}else{this.picker.find(".prev").css({visibility:"visible"})}if(this.endDate!==Infinity&&i>=this.endDate.getUTCFullYear()&&j>=this.endDate.getUTCMonth()&&h>=this.endDate.getUTCDate()&&g>=this.endDate.getUTCHours()){this.picker.find(".next").css({visibility:"hidden"})}else{this.picker.find(".next").css({visibility:"visible"})}break;case 1:if(this.startDate!==-Infinity&&i<=this.startDate.getUTCFullYear()&&j<=this.startDate.getUTCMonth()&&h<=this.startDate.getUTCDate()){this.picker.find(".prev").css({visibility:"hidden"})}else{this.picker.find(".prev").css({visibility:"visible"})}if(this.endDate!==Infinity&&i>=this.endDate.getUTCFullYear()&&j>=this.endDate.getUTCMonth()&&h>=this.endDate.getUTCDate()){this.picker.find(".next").css({visibility:"hidden"})}else{this.picker.find(".next").css({visibility:"visible"})}break;case 2:if(this.startDate!==-Infinity&&i<=this.startDate.getUTCFullYear()&&j<=this.startDate.getUTCMonth()){this.picker.find(".prev").css({visibility:"hidden"})}else{this.picker.find(".prev").css({visibility:"visible"})}if(this.endDate!==Infinity&&i>=this.endDate.getUTCFullYear()&&j>=this.endDate.getUTCMonth()){this.picker.find(".next").css({visibility:"hidden"})}else{this.picker.find(".next").css({visibility:"visible"})}break;case 3:case 4:if(this.startDate!==-Infinity&&i<=this.startDate.getUTCFullYear()){this.picker.find(".prev").css({visibility:"hidden"})}else{this.picker.find(".prev").css({visibility:"visible"})}if(this.endDate!==Infinity&&i>=this.endDate.getUTCFullYear()){this.picker.find(".next").css({visibility:"hidden"})}else{this.picker.find(".next").css({visibility:"visible"})}break}},mousewheel:function(h){h.preventDefault();h.stopPropagation();if(this.wheelPause){return}this.wheelPause=true;var g=h.originalEvent;var j=g.wheelDelta;var i=j>0?1:(j===0)?0:-1;if(this.wheelViewModeNavigationInverseDirection){i=-i}this.showMode(i);setTimeout(c.proxy(function(){this.wheelPause=false},this),this.wheelViewModeNavigationDelay)},click:function(k){k.stopPropagation();k.preventDefault();var l=c(k.target).closest("span, td, th, legend");if(l.length==1){if(l.is(".disabled")){this.element.trigger({type:"outOfRange",date:this.viewDate,startDate:this.startDate,endDate:this.endDate});return}switch(l[0].nodeName.toLowerCase()){case"th":switch(l[0].className){case"switch":this.showMode(1);break;case"prev":case"next":var g=b.modes[this.viewMode].navStep*(l[0].className=="prev"?-1:1);switch(this.viewMode){case 0:this.viewDate=this.moveHour(this.viewDate,g);break;case 1:this.viewDate=this.moveDate(this.viewDate,g);break;case 2:this.viewDate=this.moveMonth(this.viewDate,g);break;case 3:case 4:this.viewDate=this.moveYear(this.viewDate,g);break}this.fill();break;case"today":var h=new Date();h=f(h.getFullYear(),h.getMonth(),h.getDate(),h.getHours(),h.getMinutes(),h.getSeconds(),0);if(hthis.endDate){h=this.endDate}}this.viewMode=this.startViewMode;this.showMode(0);this._setDate(h);this.fill();if(this.autoclose){this.hide()}break}break;case"span":if(!l.is(".disabled")){var n=this.viewDate.getUTCFullYear(),m=this.viewDate.getUTCMonth(),o=this.viewDate.getUTCDate(),p=this.viewDate.getUTCHours(),i=this.viewDate.getUTCMinutes(),q=this.viewDate.getUTCSeconds();if(l.is(".month")){this.viewDate.setUTCDate(1);m=l.parent().find("span").index(l);o=this.viewDate.getUTCDate();this.viewDate.setUTCMonth(m);this.element.trigger({type:"changeMonth",date:this.viewDate});if(this.viewSelect>=3){this._setDate(f(n,m,o,p,i,q,0))}}else{if(l.is(".year")){this.viewDate.setUTCDate(1);n=parseInt(l.text(),10)||0;this.viewDate.setUTCFullYear(n);this.element.trigger({type:"changeYear",date:this.viewDate});if(this.viewSelect>=4){this._setDate(f(n,m,o,p,i,q,0))}}else{if(l.is(".hour")){p=parseInt(l.text(),10)||0;if(l.hasClass("hour_am")||l.hasClass("hour_pm")){if(p==12&&l.hasClass("hour_am")){p=0}else{if(p!=12&&l.hasClass("hour_pm")){p+=12}}}this.viewDate.setUTCHours(p);this.element.trigger({type:"changeHour",date:this.viewDate});if(this.viewSelect>=1){this._setDate(f(n,m,o,p,i,q,0))}}else{if(l.is(".minute")){i=parseInt(l.text().substr(l.text().indexOf(":")+1),10)||0;this.viewDate.setUTCMinutes(i);this.element.trigger({type:"changeMinute",date:this.viewDate});if(this.viewSelect>=0){this._setDate(f(n,m,o,p,i,q,0))}}}}}if(this.viewMode!=0){var j=this.viewMode;this.showMode(-1);this.fill();if(j==this.viewMode&&this.autoclose){this.hide()}}else{this.fill();if(this.autoclose){this.hide()}}}break;case"td":if(l.is(".day")&&!l.is(".disabled")){var o=parseInt(l.text(),10)||1;var n=this.viewDate.getUTCFullYear(),m=this.viewDate.getUTCMonth(),p=this.viewDate.getUTCHours(),i=this.viewDate.getUTCMinutes(),q=this.viewDate.getUTCSeconds();if(l.is(".old")){if(m===0){m=11;n-=1}else{m-=1}}else{if(l.is(".new")){if(m==11){m=0;n+=1}else{m+=1}}}this.viewDate.setUTCFullYear(n);this.viewDate.setUTCMonth(m,o);this.element.trigger({type:"changeDay",date:this.viewDate});if(this.viewSelect>=2){this._setDate(f(n,m,o,p,i,q,0))}}var j=this.viewMode;this.showMode(-1);this.fill();if(j==this.viewMode&&this.autoclose){this.hide()}break}}},_setDate:function(g,i){if(!i||i=="date"){this.date=g}if(!i||i=="view"){this.viewDate=g}this.fill();this.setValue();var h;if(this.isInput){h=this.element}else{if(this.component){h=this.element.find("input")}}if(h){h.change();if(this.autoclose&&(!i||i=="date")){}}this.element.trigger({type:"changeDate",date:this.date})},moveMinute:function(h,g){if(!g){return h}var i=new Date(h.valueOf());i.setUTCMinutes(i.getUTCMinutes()+(g*this.minuteStep));return i},moveHour:function(h,g){if(!g){return h}var i=new Date(h.valueOf());i.setUTCHours(i.getUTCHours()+g);return i},moveDate:function(h,g){if(!g){return h}var i=new Date(h.valueOf());i.setUTCDate(i.getUTCDate()+g);return i},moveMonth:function(g,h){if(!h){return g}var l=new Date(g.valueOf()),p=l.getUTCDate(),m=l.getUTCMonth(),k=Math.abs(h),o,n;h=h>0?1:-1;if(k==1){n=h==-1?function(){return l.getUTCMonth()==m}:function(){return l.getUTCMonth()!=o};o=m+h;l.setUTCMonth(o);if(o<0||o>11){o=(o+12)%12}}else{for(var j=0;j=this.startDate&&g<=this.endDate},keydown:function(k){if(this.picker.is(":not(:visible)")){if(k.keyCode==27){this.show()}return}var m=false,h,n,l,o,g;switch(k.keyCode){case 27:this.hide();k.preventDefault();break;case 37:case 39:if(!this.keyboardNavigation){break}h=k.keyCode==37?-1:1;viewMode=this.viewMode;if(k.ctrlKey){viewMode+=2}else{if(k.shiftKey){viewMode+=1}}if(viewMode==4){o=this.moveYear(this.date,h);g=this.moveYear(this.viewDate,h)}else{if(viewMode==3){o=this.moveMonth(this.date,h);g=this.moveMonth(this.viewDate,h)}else{if(viewMode==2){o=this.moveDate(this.date,h);g=this.moveDate(this.viewDate,h)}else{if(viewMode==1){o=this.moveHour(this.date,h);g=this.moveHour(this.viewDate,h)}else{if(viewMode==0){o=this.moveMinute(this.date,h);g=this.moveMinute(this.viewDate,h)}}}}}if(this.dateWithinRange(o)){this.date=o;this.viewDate=g;this.setValue();this.update();k.preventDefault();m=true}break;case 38:case 40:if(!this.keyboardNavigation){break}h=k.keyCode==38?-1:1;viewMode=this.viewMode;if(k.ctrlKey){viewMode+=2}else{if(k.shiftKey){viewMode+=1}}if(viewMode==4){o=this.moveYear(this.date,h);g=this.moveYear(this.viewDate,h)}else{if(viewMode==3){o=this.moveMonth(this.date,h);g=this.moveMonth(this.viewDate,h)}else{if(viewMode==2){o=this.moveDate(this.date,h*7);g=this.moveDate(this.viewDate,h*7)}else{if(viewMode==1){if(this.showMeridian){o=this.moveHour(this.date,h*6);g=this.moveHour(this.viewDate,h*6)}else{o=this.moveHour(this.date,h*4);g=this.moveHour(this.viewDate,h*4)}}else{if(viewMode==0){o=this.moveMinute(this.date,h*4);g=this.moveMinute(this.viewDate,h*4)}}}}}if(this.dateWithinRange(o)){this.date=o;this.viewDate=g;this.setValue();this.update();k.preventDefault();m=true}break;case 13:if(this.viewMode!=0){var j=this.viewMode;this.showMode(-1);this.fill();if(j==this.viewMode&&this.autoclose){this.hide()}}else{this.fill();if(this.autoclose){this.hide()}}k.preventDefault();break;case 9:this.hide();break}if(m){var i;if(this.isInput){i=this.element}else{if(this.component){i=this.element.find("input")}}if(i){i.change()}this.element.trigger({type:"changeDate",date:this.date})}},showMode:function(g){if(g){var h=Math.max(0,Math.min(b.modes.length-1,this.viewMode+g));if(h>=this.minView&&h<=this.maxView){this.element.trigger({type:"changeMode",date:this.viewDate,oldViewMode:this.viewMode,newViewMode:h});this.viewMode=h}}this.picker.find(">div").hide().filter(".datetimepicker-"+b.modes[this.viewMode].clsName).css("display","block");this.updateNavArrows()},reset:function(g){this._setDate(null,"date")}};c.fn.datetimepicker=function(i){var g=Array.apply(null,arguments);g.shift();var h;this.each(function(){var l=c(this),k=l.data("datetimepicker"),j=typeof i=="object"&&i;if(!k){l.data("datetimepicker",(k=new e(this,c.extend({},c.fn.datetimepicker.defaults,j))))}if(typeof i=="string"&&typeof k[i]=="function"){h=k[i].apply(k,g);if(h!==undefined){return false}}});if(h!==undefined){return h}else{return this}};c.fn.datetimepicker.defaults={};c.fn.datetimepicker.Constructor=e;var d=c.fn.datetimepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sun"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa","Su"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],meridiem:["am","pm"],suffix:["st","nd","rd","th"],today:"Today"}};var b={modes:[{clsName:"minutes",navFnc:"Hours",navStep:1},{clsName:"hours",navFnc:"Date",navStep:1},{clsName:"days",navFnc:"Month",navStep:1},{clsName:"months",navFnc:"FullYear",navStep:1},{clsName:"years",navFnc:"FullYear",navStep:10}],isLeapYear:function(g){return(((g%4===0)&&(g%100!==0))||(g%400===0))},getDaysInMonth:function(g,h){return[31,(b.isLeapYear(g)?29:28),31,30,31,30,31,31,30,31,30,31][h]},getDefaultFormat:function(g,h){if(g=="standard"){if(h=="input"){return"yyyy-mm-dd hh:ii"}else{return"yyyy-mm-dd hh:ii:ss"}}else{if(g=="php"){if(h=="input"){return"Y-m-d H:i"}else{return"Y-m-d H:i:s"}}else{throw new Error("Invalid format type.")}}},validParts:function(g){if(g=="standard"){return/hh?|HH?|p|P|ii?|ss?|dd?|DD?|mm?|MM?|yy(?:yy)?/g}else{if(g=="php"){return/[dDjlNwzFmMnStyYaABgGhHis]/g}else{throw new Error("Invalid format type.")}}},nonpunctuation:/[^ -\/:-@\[-`{-~\t\n\rTZ]+/g,parseFormat:function(j,h){var g=j.replace(this.validParts(h),"\0").split("\0"),i=j.match(this.validParts(h));if(!g||!g.length||!i||i.length==0){throw new Error("Invalid date format.")}return{separators:g,parts:i}},parseDate:function(l,u,o,r){if(l instanceof Date){var w=new Date(l.valueOf()-l.getTimezoneOffset()*60000);w.setMilliseconds(0);return w}if(/^\d{4}\-\d{1,2}\-\d{1,2}$/.test(l)){u=this.parseFormat("yyyy-mm-dd",r)}if(/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}$/.test(l)){u=this.parseFormat("yyyy-mm-dd hh:ii",r)}if(/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}\:\d{1,2}[Z]{0,1}$/.test(l)){u=this.parseFormat("yyyy-mm-dd hh:ii:ss",r)}if(/^[-+]\d+[dmwy]([\s,]+[-+]\d+[dmwy])*$/.test(l)){var x=/([-+]\d+)([dmwy])/,m=l.match(/([-+]\d+)([dmwy])/g),g,k;l=new Date();for(var n=0;n',headTemplateV3:' ',contTemplate:'',footTemplate:''};b.template='
      '+b.headTemplate+b.contTemplate+b.footTemplate+'
      '+b.headTemplate+b.contTemplate+b.footTemplate+'
      '+b.headTemplate+""+b.footTemplate+'
      '+b.headTemplate+b.contTemplate+b.footTemplate+'
      '+b.headTemplate+b.contTemplate+b.footTemplate+"
      ";b.templateV3='
      '+b.headTemplateV3+b.contTemplate+b.footTemplate+'
      '+b.headTemplateV3+b.contTemplate+b.footTemplate+'
      '+b.headTemplateV3+""+b.footTemplate+'
      '+b.headTemplateV3+b.contTemplate+b.footTemplate+'
      '+b.headTemplateV3+b.contTemplate+b.footTemplate+"
      ";c.fn.datetimepicker.DPGlobal=b;c.fn.datetimepicker.noConflict=function(){c.fn.datetimepicker=old;return this};c(document).on("focus.datetimepicker.data-api click.datetimepicker.data-api",'[data-provide="datetimepicker"]',function(h){var g=c(this);if(g.data("datetimepicker")){return}h.preventDefault();g.datetimepicker("show")});c(function(){c('[data-provide="datetimepicker-inline"]').datetimepicker()})}(window.jQuery); \ No newline at end of file diff --git a/static_new/silk/lib/bootstrap-theme.min.css b/static_new/silk/lib/bootstrap-theme.min.css new file mode 100644 index 00000000..cefa3d1a --- /dev/null +++ b/static_new/silk/lib/bootstrap-theme.min.css @@ -0,0 +1,5 @@ +/*! + * Bootstrap v3.3.4 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default:disabled,.btn-default[disabled]{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary:disabled,.btn-primary[disabled]{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success:disabled,.btn-success[disabled]{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info:disabled,.btn-info[disabled]{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning:disabled,.btn-warning[disabled]{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger:disabled,.btn-danger[disabled]{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{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:-o-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)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} \ No newline at end of file diff --git a/static_new/silk/lib/bootstrap.min.css.REMOVED.git-id b/static_new/silk/lib/bootstrap.min.css.REMOVED.git-id new file mode 100644 index 00000000..14b6d5e8 --- /dev/null +++ b/static_new/silk/lib/bootstrap.min.css.REMOVED.git-id @@ -0,0 +1 @@ +781dd479f4c0d5d5bf5d5ef7b4df43944e194c27 \ No newline at end of file diff --git a/static_new/silk/lib/bootstrap.min.js b/static_new/silk/lib/bootstrap.min.js new file mode 100644 index 00000000..c8f82e59 --- /dev/null +++ b/static_new/silk/lib/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.4 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.4",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.4",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.4",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.4",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport),this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-mp.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.4",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.4",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.4",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a(document.body).height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/static_new/silk/lib/highlight/foundation.css b/static_new/silk/lib/highlight/foundation.css new file mode 100644 index 00000000..bc8d4df4 --- /dev/null +++ b/static_new/silk/lib/highlight/foundation.css @@ -0,0 +1,133 @@ +/* +Description: Foundation 4 docs style for highlight.js +Author: Dan Allen +Website: http://foundation.zurb.com/docs/ +Version: 1.0 +Date: 2013-04-02 +*/ + +.hljs { + display: block; padding: 0.5em; + background: #eee; +} + +.hljs-header, +.hljs-decorator, +.hljs-annotation { + color: #000077; +} + +.hljs-horizontal_rule, +.hljs-link_url, +.hljs-emphasis, +.hljs-attribute { + color: #070; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-link_label, +.hljs-strong, +.hljs-value, +.hljs-string, +.scss .hljs-value .hljs-string { + color: #d14; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-blockquote, +.hljs-comment { + color: #998; + font-style: italic; +} + +.asciidoc .hljs-title, +.hljs-function .hljs-title { + color: #900; +} + +.hljs-class { + color: #458; +} + +.hljs-id, +.hljs-pseudo, +.hljs-constant, +.hljs-hexcolor { + color: teal; +} + +.hljs-variable { + color: #336699; +} + +.hljs-bullet, +.hljs-javadoc { + color: #997700; +} + +.hljs-pi, +.hljs-doctype { + color: #3344bb; +} + +.hljs-code, +.hljs-number { + color: #099; +} + +.hljs-important { + color: #f00; +} + +.smartquote, +.hljs-label { + color: #970; +} + +.hljs-preprocessor, +.hljs-pragma { + color: #579; +} + +.hljs-reserved, +.hljs-keyword, +.scss .hljs-value { + color: #000; +} + +.hljs-regexp { + background-color: #fff0ff; + color: #880088; +} + +.hljs-symbol { + color: #990073; +} + +.hljs-symbol .hljs-string { + color: #a60; +} + +.hljs-tag { + color: #007700; +} + +.hljs-at_rule, +.hljs-at_rule .hljs-keyword { + color: #088; +} + +.hljs-at_rule .hljs-preprocessor { + color: #808; +} + +.scss .hljs-tag, +.scss .hljs-attribute { + color: #339; +} diff --git a/static_new/silk/lib/highlight/highlight.pack.js b/static_new/silk/lib/highlight/highlight.pack.js new file mode 100644 index 00000000..80f15419 --- /dev/null +++ b/static_new/silk/lib/highlight/highlight.pack.js @@ -0,0 +1 @@ +var hljs=new function(){function k(v){return v.replace(/&/gm,"&").replace(//gm,">")}function t(v){return v.nodeName.toLowerCase()}function i(w,x){var v=w&&w.exec(x);return v&&v.index==0}function d(v){return Array.prototype.map.call(v.childNodes,function(w){if(w.nodeType==3){return b.useBR?w.nodeValue.replace(/\n/g,""):w.nodeValue}if(t(w)=="br"){return"\n"}return d(w)}).join("")}function r(w){var v=(w.className+" "+(w.parentNode?w.parentNode.className:"")).split(/\s+/);v=v.map(function(x){return x.replace(/^language-/,"")});return v.filter(function(x){return j(x)||x=="no-highlight"})[0]}function o(x,y){var v={};for(var w in x){v[w]=x[w]}if(y){for(var w in y){v[w]=y[w]}}return v}function u(x){var v=[];(function w(y,z){for(var A=y.firstChild;A;A=A.nextSibling){if(A.nodeType==3){z+=A.nodeValue.length}else{if(t(A)=="br"){z+=1}else{if(A.nodeType==1){v.push({event:"start",offset:z,node:A});z=w(A,z);v.push({event:"stop",offset:z,node:A})}}}}return z})(x,0);return v}function q(w,y,C){var x=0;var F="";var z=[];function B(){if(!w.length||!y.length){return w.length?w:y}if(w[0].offset!=y[0].offset){return(w[0].offset"}function E(G){F+=""}function v(G){(G.event=="start"?A:E)(G.node)}while(w.length||y.length){var D=B();F+=k(C.substr(x,D[0].offset-x));x=D[0].offset;if(D==w){z.reverse().forEach(E);do{v(D.splice(0,1)[0]);D=B()}while(D==w&&D.length&&D[0].offset==x);z.reverse().forEach(A)}else{if(D[0].event=="start"){z.push(D[0].node)}else{z.pop()}v(D.splice(0,1)[0])}}return F+k(C.substr(x))}function m(y){function v(z){return(z&&z.source)||z}function w(A,z){return RegExp(v(A),"m"+(y.cI?"i":"")+(z?"g":""))}function x(D,C){if(D.compiled){return}D.compiled=true;D.k=D.k||D.bK;if(D.k){var z={};function E(G,F){if(y.cI){F=F.toLowerCase()}F.split(" ").forEach(function(H){var I=H.split("|");z[I[0]]=[G,I[1]?Number(I[1]):1]})}if(typeof D.k=="string"){E("keyword",D.k)}else{Object.keys(D.k).forEach(function(F){E(F,D.k[F])})}D.k=z}D.lR=w(D.l||/\b[A-Za-z0-9_]+\b/,true);if(C){if(D.bK){D.b=D.bK.split(" ").join("|")}if(!D.b){D.b=/\B|\b/}D.bR=w(D.b);if(!D.e&&!D.eW){D.e=/\B|\b/}if(D.e){D.eR=w(D.e)}D.tE=v(D.e)||"";if(D.eW&&C.tE){D.tE+=(D.e?"|":"")+C.tE}}if(D.i){D.iR=w(D.i)}if(D.r===undefined){D.r=1}if(!D.c){D.c=[]}var B=[];D.c.forEach(function(F){if(F.v){F.v.forEach(function(G){B.push(o(F,G))})}else{B.push(F=="self"?D:F)}});D.c=B;D.c.forEach(function(F){x(F,D)});if(D.starts){x(D.starts,C)}var A=D.c.map(function(F){return F.bK?"\\.?\\b("+F.b+")\\b\\.?":F.b}).concat([D.tE]).concat([D.i]).map(v).filter(Boolean);D.t=A.length?w(A.join("|"),true):{exec:function(F){return null}};D.continuation={}}x(y)}function c(S,L,J,R){function v(U,V){for(var T=0;T";U+=Z+'">';return U+X+Y}function N(){var U=k(C);if(!I.k){return U}var T="";var X=0;I.lR.lastIndex=0;var V=I.lR.exec(U);while(V){T+=U.substr(X,V.index-X);var W=E(I,V);if(W){H+=W[1];T+=w(W[0],V[0])}else{T+=V[0]}X=I.lR.lastIndex;V=I.lR.exec(U)}return T+U.substr(X)}function F(){if(I.sL&&!f[I.sL]){return k(C)}var T=I.sL?c(I.sL,C,true,I.continuation.top):g(C);if(I.r>0){H+=T.r}if(I.subLanguageMode=="continuous"){I.continuation.top=T.top}return w(T.language,T.value,false,true)}function Q(){return I.sL!==undefined?F():N()}function P(V,U){var T=V.cN?w(V.cN,"",true):"";if(V.rB){D+=T;C=""}else{if(V.eB){D+=k(U)+T;C=""}else{D+=T;C=U}}I=Object.create(V,{parent:{value:I}})}function G(T,X){C+=T;if(X===undefined){D+=Q();return 0}var V=v(X,I);if(V){D+=Q();P(V,X);return V.rB?0:X.length}var W=z(I,X);if(W){var U=I;if(!(U.rE||U.eE)){C+=X}D+=Q();do{if(I.cN){D+=""}H+=I.r;I=I.parent}while(I!=W.parent);if(U.eE){D+=k(X)}C="";if(W.starts){P(W.starts,"")}return U.rE?0:X.length}if(A(X,I)){throw new Error('Illegal lexeme "'+X+'" for mode "'+(I.cN||"")+'"')}C+=X;return X.length||1}var M=j(S);if(!M){throw new Error('Unknown language: "'+S+'"')}m(M);var I=R||M;var D="";for(var K=I;K!=M;K=K.parent){if(K.cN){D=w(K.cN,D,true)}}var C="";var H=0;try{var B,y,x=0;while(true){I.t.lastIndex=x;B=I.t.exec(L);if(!B){break}y=G(L.substr(x,B.index-x),B[0]);x=B.index+y}G(L.substr(x));for(var K=I;K.parent;K=K.parent){if(K.cN){D+=""}}return{r:H,value:D,language:S,top:I}}catch(O){if(O.message.indexOf("Illegal")!=-1){return{r:0,value:k(L)}}else{throw O}}}function g(y,x){x=x||b.languages||Object.keys(f);var v={r:0,value:k(y)};var w=v;x.forEach(function(z){if(!j(z)){return}var A=c(z,y,false);A.language=z;if(A.r>w.r){w=A}if(A.r>v.r){w=v;v=A}});if(w.language){v.second_best=w}return v}function h(v){if(b.tabReplace){v=v.replace(/^((<[^>]+>|\t)+)/gm,function(w,z,y,x){return z.replace(/\t/g,b.tabReplace)})}if(b.useBR){v=v.replace(/\n/g,"
      ")}return v}function p(z){var y=d(z);var A=r(z);if(A=="no-highlight"){return}var v=A?c(A,y,true):g(y);var w=u(z);if(w.length){var x=document.createElementNS("http://www.w3.org/1999/xhtml","pre");x.innerHTML=v.value;v.value=q(w,u(x),y)}v.value=h(v.value);z.innerHTML=v.value;z.className+=" hljs "+(!A&&v.language||"");z.result={language:v.language,re:v.r};if(v.second_best){z.second_best={language:v.second_best.language,re:v.second_best.r}}}var b={classPrefix:"hljs-",tabReplace:null,useBR:false,languages:undefined};function s(v){b=o(b,v)}function l(){if(l.called){return}l.called=true;var v=document.querySelectorAll("pre code");Array.prototype.forEach.call(v,p)}function a(){addEventListener("DOMContentLoaded",l,false);addEventListener("load",l,false)}var f={};var n={};function e(v,x){var w=f[v]=x(this);if(w.aliases){w.aliases.forEach(function(y){n[y]=v})}}function j(v){return f[v]||f[n[v]]}this.highlight=c;this.highlightAuto=g;this.fixMarkup=h;this.highlightBlock=p;this.configure=s;this.initHighlighting=l;this.initHighlightingOnLoad=a;this.registerLanguage=e;this.getLanguage=j;this.inherit=o;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\[\\s\\S]",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE]};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE]};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gim]*/,i:/\n/,c:[this.BE,{b:/\[/,e:/\]/,r:0,c:[this.BE]}]};this.TM={cN:"title",b:this.IR,r:0};this.UTM={cN:"title",b:this.UIR,r:0}}();hljs.registerLanguage("python",function(a){var f={cN:"prompt",b:/^(>>>|\.\.\.) /};var b={cN:"string",c:[a.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[f],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[f],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/,},{b:/(b|br)"/,e:/"/,},a.ASM,a.QSM]};var d={cN:"number",r:0,v:[{b:a.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:a.CNR+"[lLjJ]?"}]};var e={cN:"params",b:/\(/,e:/\)/,c:["self",f,d,b]};var c={e:/:/,i:/[${=;\n]/,c:[a.UTM,e]};return{k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)/,c:[f,d,b,a.HCM,a.inherit(c,{cN:"function",bK:"def",r:10}),a.inherit(c,{cN:"class",bK:"class"}),{cN:"decorator",b:/@/,e:/$/},{b:/\b(print|exec)\(/}]}});hljs.registerLanguage("sql",function(a){return{cI:true,i:/[<>]/,c:[{cN:"operator",b:"\\b(begin|end|start|commit|rollback|savepoint|lock|alter|create|drop|rename|call|delete|do|handler|insert|load|replace|select|truncate|update|set|show|pragma|grant|merge)\\b(?!:)",e:";",eW:true,k:{keyword:"all partial global month current_timestamp using go revoke smallint indicator end-exec disconnect zone with character assertion to add current_user usage input local alter match collate real then rollback get read timestamp session_user not integer bit unique day minute desc insert execute like ilike|2 level decimal drop continue isolation found where constraints domain right national some module transaction relative second connect escape close system_user for deferred section cast current sqlstate allocate intersect deallocate numeric public preserve full goto initially asc no key output collation group by union session both last language constraint column of space foreign deferrable prior connection unknown action commit view or first into float year primary cascaded except restrict set references names table outer open select size are rows from prepare distinct leading create only next inner authorization schema corresponding option declare precision immediate else timezone_minute external varying translation true case exception join hour default double scroll value cursor descriptor values dec fetch procedure delete and false int is describe char as at in varchar null trailing any absolute current_time end grant privileges when cross check write current_date pad begin temporary exec time update catalog user sql date on identity timezone_hour natural whenever interval work order cascade diagnostics nchar having left call do handler load replace truncate start lock show pragma exists number trigger if before after each row merge matched database",aggregate:"count sum min max avg"},c:[{cN:"string",b:"'",e:"'",c:[a.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[a.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[a.BE]},a.CNM]},a.CBLCLM,{cN:"comment",b:"--",e:"$"}]}});hljs.registerLanguage("json",function(a){var e={literal:"true false null"};var d=[a.QSM,a.CNM];var c={cN:"value",e:",",eW:true,eE:true,c:d,k:e};var b={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:true,eE:true,c:[a.BE],i:"\\n",starts:c}],i:"\\S"};var f={b:"\\[",e:"\\]",c:[a.inherit(c,{cN:null})],i:"\\S"};d.splice(d.length,0,b,f);return{c:d,k:e,i:"\\S"}}); \ No newline at end of file diff --git a/static_new/silk/lib/images/animated-overlay.gif b/static_new/silk/lib/images/animated-overlay.gif new file mode 100644 index 0000000000000000000000000000000000000000..d441f75ebfbdf26a265dfccd670120d25c0a341c GIT binary patch literal 1738 zcmZ|OX;ji_6b5ixNYt8>l?gOuO)6lU%W(mxn(`>1S(XO;u`D+P%xqBvMr|w-Vyr1s z7R|Cn0b8|Hu<=Zmv1mFqh9Fj!NuZfKB2MP$e75`XJ@>=!y!Ux9xR3x;EW!q1^V>X| znVFuRUN`NqJ2)ybXh%e__h!!pv(M|S3+?9F%(K}zyE40MGyhWF5-IDgL&=%2-9`Nk z!1@8uk4t%_{(K~>N;sK&dzJbwJ=$kYTlL=$%#0Pfh>U{%i@~wWbvYsD_K-D`&+u1( z#Ma`>%q<^UhzGvi(hyE`zCD{-=2|zL5>wnB=DE!U?(CZG%q4@lDnCq_%&3DCla#(X zmBhDD+RN$aMWWHm?ig*>1Onn6~r?Ma~N2JKAxN>H%UtRyRqS)6Um!-Tz%-r=& zQmTb^JFIe3W^-kAm`}`2P|niMh>RYyd)S^f(dbrx965?rzbhP|XeP}o&&DSZ4|oYQ z)I{f!SfycYw?3=9W;o-B%U5xs(pP267X~9-7L|4WzaYexC0GtG8wWygm63rF{llCEraxzkc=IxvFQ-y37=_;e5 zJLq^gsSO0Ayz?a>E_?{dmUc+t#qv$)XN8$<<}rQ#)lsiw+pmL&J>~+hgpo>i$m+;l zZIa_ZRIfSeT$~v5d`EBV&*k`apPgjv&B|+d`Q!nyu{L4rs%ZfoF0*Kq8I%ByOcFpL zK=>wzofZo<+0GZLCnWM3oQ^pb(gRSf02;~cEn@LJ>~XB9IkEX{$N#Z`m%>S!U{uPx zloI%bLdo$Adxlh(Uv^yX7s5G&C zLwNRG>~T?G{kzupp8EcyLGPoPf)@&9Wqfw_l&uU-6cexk%5;uQg%wb=0k_733{i#& z1a2p)gV3S2+QG1-K9tZ}E~I<(P0r2aFFY-c{o?TUOz3Xjod#TLE2A_c?*T7t z=1>~%YW450{Qqno4t`}gvLnuMrcu8+#xEBoY%2_+Mb#Z6S38+r*M4O`-+!zl(@m`D zQsi|GA2l3gEy}LFe<#Hv8?$_L#u8E|3-bP$*La*E>B{X!Sy4i6?TKam!49aXCAW4S*P_O^H4^*DpiA40o}Uqw~Eo&veh1`|8i zD2$x+>_b^bXE4N;AW=5>iYak2%!JAh0j1*k1{p#iRCjbB7!cSws~U{1IA@acLII$t z$>X#A+^s6iJ5~DFG!xa?>z{=lxtdi1rzbM-(nqAu3D8h-&64xo6|E!p?pK0xT;qoK z`6%+SpBk+~M?nO}>2mTw!A{yZ6O>Z@kwSd4;8aWU5z!P~tQl?u==^+R`{OmOS}oZh zOXQ3{6kuz?Is^n^L7;9ieB9C+8B{>t+pDrlq4xGDDn#T#3T5$l1g`FTQkU;b-981j zNm{zC`$wn7etklM#qHI4=3m5gwa6DNS{?Z!vSObi_od{4eUo=_S2BKNpkSdiqe(k9WtkeM79;2-%CFbb)aB=&H1?i1}uwFzoZQ(38Kn1zBP ORn*B%u*Wk|4g3!*Rv{Mv literal 0 HcmV?d00001 diff --git a/static_new/silk/lib/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/static_new/silk/lib/images/ui-bg_diagonals-thick_18_b81900_40x40.png new file mode 100644 index 0000000000000000000000000000000000000000..4e691deaa0cc34ef1265be31ae8477dc1a08a35a GIT binary patch literal 491 zcmeAS@N?(olHy`uVBq!ia0vp^8Xzpd1SErbK34)MmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG z?e6j)3^*gc-vNqn7I;J!18EO1b~~AE2V^|(ba4#HxcBykAs3UOfZM~fW^oP^bdR1o zbhuJz{pPvqg4qY7Hf;W}+TmCVOLyhT)t6G**WdQpCFj5XZk($R8A3X|?-c;mW*%l2y!S7ML}9Ug4VIZh9~z zi}B2|vMZuURnU+Pxytif#L&#j(Adh*Lf639%D^Dy)gB!b4Y~O#nQ4`{HHdC!nE=$l N;OXk;vd$@?2>{7Bvxooy literal 0 HcmV?d00001 diff --git a/static_new/silk/lib/images/ui-bg_diagonals-thick_20_666666_40x40.png b/static_new/silk/lib/images/ui-bg_diagonals-thick_20_666666_40x40.png new file mode 100644 index 0000000000000000000000000000000000000000..7bc8a92833b6f725e11f2f259b505f0a9f4f2a59 GIT binary patch literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^8XznHBp80OT7LpkEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR z+uh~=f05OOXMsG<0*}aIAngIhZYQ(tfQ%YX7sn8f<8QBS++H8mU)r~CX z4LsK!yRsFIhfa9Hb)rc6!cMu3cbH1@qjk(1T|Rd_O$zRK*6I6kwUXIUAiL(>^w~v> zvvgjZ`w{;28qgi8C9V-ADTyViR>?)FK#IZ0z|ch30Emo249%9nO2EggXnga2|x`Dp00i_>zopr0J+|PcmMzZ literal 0 HcmV?d00001 diff --git a/static_new/silk/lib/images/ui-bg_flat_10_000000_40x100.png b/static_new/silk/lib/images/ui-bg_flat_10_000000_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..c5d10e6570cbfc4ade4bcdc227937aa3e7ac452e GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F2qYNp$opRhQY`6?zK#qG8~eHcB(ehejKx9j zP7LeL$-D$|6p}rHd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9 z$=lt9f$?sa@Dd=8v%n*=7)X17vD?XPJ0OGK)5S4F<9u?01nc4kpkYiA42-2_ZRJ2I z)e_f;l9a@fRIB8oR3OD*WMF8bYXC$>A%BP literal 0 HcmV?d00001 diff --git a/static_new/silk/lib/images/ui-bg_glass_100_f6f6f6_1x400.png b/static_new/silk/lib/images/ui-bg_glass_100_f6f6f6_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..ae8f555ac443b2b8803797eb65e152f13dfdee5d GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq*&4&eH|GXHuiJ>Nn`~nC=POW zVpw-h<|UA$kn9oU%fL{j#=y|f!octgDAe$RfuYoZf#FpG1B2BJ1_tqhIlBUFfD%ke z-tI2{|BI|PJPYJ;7I;J!18EO1b~~AE2V{79x;TbdoKF5x)0-&LtF&tI^?ZqY5r%sz z4}T~VKD=A6?Yk|H{4Ys6z2qNTra%0w*rtD6a^Jg@A7*nO?&d%IJ(=fze($0{7ak^t z?F-JbORP}b2sBi+#5JNMC9x#cD!C{XNHG{07@FuB0FhCMp_!GTv6Z2Pu7RkU>Zaaakb06~*V%a=1**<1 zpKiP5#QX5+mqg~r?x}Vy@b0u?`@*rP?O*&7-oplUC)lO_8HKvW>}UkKQnkc2q9i4; zB-JXpC>2OC7#SFv=o$c#QHY_Lm7%efp@pu2v6X>A%Bwv(C>nC}Q!>*kacdCW&N2b0 Ofx*+&&t;ucLK6U>ijBtr literal 0 HcmV?d00001 diff --git a/static_new/silk/lib/images/ui-bg_glass_65_ffffff_1x400.png b/static_new/silk/lib/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..b559b14a93a875ba7e98aa41810f986bc06fe899 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI2NH8$CE1Q=ADVB6cUq=Rpjs4tz5?MhCii6yp z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R1iUAylk>D z6DX-#;u=wsl30>zm0Xkxq!^403{7+mfXFDs(9Fuv*vimC*TC4yz#!$-9vu`7x%nxX YX_dG&h;C<@0Mx+X>FVdQ&MBb@06e5c3;+NC literal 0 HcmV?d00001 diff --git a/static_new/silk/lib/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/static_new/silk/lib/images/ui-bg_gloss-wave_35_f6a828_500x100.png new file mode 100644 index 0000000000000000000000000000000000000000..f8b3d6802526b214c6067d51129a892929cdeceb GIT binary patch literal 5888 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 literal 0 HcmV?d00001 diff --git a/static_new/silk/lib/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/static_new/silk/lib/images/ui-bg_highlight-soft_100_eeeeee_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..c121135c6dff4d8d5898372f1d610e8c2638f999 GIT binary patch literal 353 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 literal 0 HcmV?d00001 diff --git a/static_new/silk/lib/images/ui-icons_ffd27a_256x240.png b/static_new/silk/lib/images/ui-icons_ffd27a_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..21fd40e9c6c9772496089cb1f47cab62d5f7455b GIT binary patch literal 4653 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 literal 0 HcmV?d00001 diff --git a/static_new/silk/lib/jquery-ui-1.10.4.min.css b/static_new/silk/lib/jquery-ui-1.10.4.min.css new file mode 100644 index 00000000..3c6d34c0 --- /dev/null +++ b/static_new/silk/lib/jquery-ui-1.10.4.min.css @@ -0,0 +1,7 @@ +/*! jQuery UI - v1.10.4 - 2014-04-02 +* http://jqueryui.com +* Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("images/animated-overlay.gif");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#eee url("images/ui-bg_highlight-soft_100_eeeeee_1x100.png") 50% top repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url("images/ui-bg_gloss-wave_35_f6a828_500x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:#f6f6f6 url("images/ui-bg_glass_100_f6f6f6_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #fbcb09;background:#fdf5ce url("images/ui-bg_glass_100_fdf5ce_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url("images/ui-bg_highlight-soft_75_ffe45c_1x100.png") 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_228ef1_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffd27a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;opacity:.5;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url("images/ui-bg_flat_10_000000_40x100.png") 50% 50% repeat-x;opacity:.2;filter:Alpha(Opacity=20);border-radius:5px} \ No newline at end of file diff --git a/static_new/silk/lib/jquery-ui-1.10.4.min.js.REMOVED.git-id b/static_new/silk/lib/jquery-ui-1.10.4.min.js.REMOVED.git-id new file mode 100644 index 00000000..020c93a8 --- /dev/null +++ b/static_new/silk/lib/jquery-ui-1.10.4.min.js.REMOVED.git-id @@ -0,0 +1 @@ +d2da7b53a9f74112f77c2dc42e3f8312c6287e0b \ No newline at end of file diff --git a/static_new/silk/lib/jquery.datetimepicker.css b/static_new/silk/lib/jquery.datetimepicker.css new file mode 100644 index 00000000..a26fccec --- /dev/null +++ b/static_new/silk/lib/jquery.datetimepicker.css @@ -0,0 +1,545 @@ +.xdsoft_datetimepicker { + box-shadow: 0 5px 15px -5px rgba(0, 0, 0, 0.506); + background: #fff; + border-bottom: 1px solid #bbb; + border-left: 1px solid #ccc; + border-right: 1px solid #ccc; + border-top: 1px solid #ccc; + color: #333; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + padding: 8px; + padding-left: 0; + padding-top: 2px; + position: absolute; + z-index: 9999; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: none; +} + +.xdsoft_datetimepicker iframe { + position: absolute; + left: 0; + top: 0; + width: 75px; + height: 210px; + background: transparent; + border: none; +} + +/*For IE8 or lower*/ +.xdsoft_datetimepicker button { + border: none !important; +} + +.xdsoft_noselect { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; +} + +.xdsoft_noselect::selection { background: transparent } +.xdsoft_noselect::-moz-selection { background: transparent } + +.xdsoft_datetimepicker.xdsoft_inline { + display: inline-block; + position: static; + box-shadow: none; +} + +.xdsoft_datetimepicker * { + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; + margin: 0; +} + +.xdsoft_datetimepicker .xdsoft_datepicker, .xdsoft_datetimepicker .xdsoft_timepicker { + display: none; +} + +.xdsoft_datetimepicker .xdsoft_datepicker.active, .xdsoft_datetimepicker .xdsoft_timepicker.active { + display: block; +} + +.xdsoft_datetimepicker .xdsoft_datepicker { + width: 224px; + float: left; + margin-left: 8px; +} + +.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_datepicker { + width: 256px; +} + +.xdsoft_datetimepicker .xdsoft_timepicker { + width: 58px; + float: left; + text-align: center; + margin-left: 8px; + margin-top: 0; +} + +.xdsoft_datetimepicker .xdsoft_datepicker.active+.xdsoft_timepicker { + margin-top: 8px; + margin-bottom: 3px +} + +.xdsoft_datetimepicker .xdsoft_mounthpicker { + position: relative; + text-align: center; +} + +.xdsoft_datetimepicker .xdsoft_label i, +.xdsoft_datetimepicker .xdsoft_prev, +.xdsoft_datetimepicker .xdsoft_next, +.xdsoft_datetimepicker .xdsoft_today_button { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0NBRjI1NjM0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0NBRjI1NjQ0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDQ0FGMjU2MTQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDQ0FGMjU2MjQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoNEP54AAAIOSURBVHja7Jq9TsMwEMcxrZD4WpBYeKUCe+kTMCACHZh4BFfHO/AAIHZGFhYkBBsSEqxsLCAgXKhbXYOTxh9pfJVP+qutnZ5s/5Lz2Y5I03QhWji2GIcgAokWgfCxNvcOCCGKqiSqhUp0laHOne05vdEyGMfkdxJDVjgwDlEQgYQBgx+ULJaWSXXS6r/ER5FBVR8VfGftTKcITNs+a1XpcFoExREIDF14AVIFxgQUS+h520cdud6wNkC0UBw6BCO/HoCYwBhD8QCkQ/x1mwDyD4plh4D6DDV0TAGyo4HcawLIBBSLDkHeH0Mg2yVP3l4TQMZQDDsEOl/MgHQqhMNuE0D+oBh0CIr8MAKyazBH9WyBuKxDWgbXfjNf32TZ1KWm/Ap1oSk/R53UtQ5xTh3LUlMmT8gt6g51Q9p+SobxgJQ/qmsfZhWywGFSl0yBjCLJCMgXail3b7+rumdVJ2YRss4cN+r6qAHDkPWjPjdJCF4n9RmAD/V9A/Wp4NQassDjwlB6XBiCxcJQWmZZb8THFilfy/lfrTvLghq2TqTHrRMTKNJ0sIhdo15RT+RpyWwFdY96UZ/LdQKBGjcXpcc1AlSFEfLmouD+1knuxBDUVrvOBmoOC/rEcN7OQxKVeJTCiAdUzUJhA2Oez9QTkp72OTVcxDcXY8iKNkxGAJXmJCOQwOa6dhyXsOa6XwEGAKdeb5ET3rQdAAAAAElFTkSuQmCC); +} + +.xdsoft_datetimepicker .xdsoft_label i { + opacity: 0.5; + background-position: -92px -19px; + display: inline-block; + width: 9px; + height: 20px; + vertical-align: middle; +} + +.xdsoft_datetimepicker .xdsoft_prev { + float: left; + background-position: -20px 0; +} +.xdsoft_datetimepicker .xdsoft_today_button { + float: left; + background-position: -70px 0; + margin-left: 5px; +} + +.xdsoft_datetimepicker .xdsoft_next { + float: right; + background-position: 0 0; +} + +.xdsoft_datetimepicker .xdsoft_next, +.xdsoft_datetimepicker .xdsoft_prev , +.xdsoft_datetimepicker .xdsoft_today_button { + background-color: transparent; + background-repeat: no-repeat; + border: 0 none; + cursor: pointer; + display: block; + height: 30px; + opacity: 0.5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + outline: medium none; + overflow: hidden; + padding: 0; + position: relative; + text-indent: 100%; + white-space: nowrap; + width: 20px; + min-width: 0; +} + +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev, +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next { + float: none; + background-position: -40px -15px; + height: 15px; + width: 30px; + display: block; + margin-left: 14px; + margin-top: 7px; +} + +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev { + background-position: -40px 0; + margin-bottom: 7px; + margin-top: 0; +} + +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box { + height: 151px; + overflow: hidden; + border-bottom: 1px solid #ddd; +} + +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div { + background: #f5f5f5; + border-top: 1px solid #ddd; + color: #666; + font-size: 12px; + text-align: center; + border-collapse: collapse; + cursor: pointer; + border-bottom-width: 0; + height: 25px; + line-height: 25px; +} + +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div > div:first-child { + border-top-width: 0; +} + +.xdsoft_datetimepicker .xdsoft_today_button:hover, +.xdsoft_datetimepicker .xdsoft_next:hover, +.xdsoft_datetimepicker .xdsoft_prev:hover { + opacity: 1; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; +} + +.xdsoft_datetimepicker .xdsoft_label { + display: inline; + position: relative; + z-index: 9999; + margin: 0; + padding: 5px 3px; + font-size: 14px; + line-height: 20px; + font-weight: bold; + background-color: #fff; + float: left; + width: 182px; + text-align: center; + cursor: pointer; +} + +.xdsoft_datetimepicker .xdsoft_label:hover>span { + text-decoration: underline; +} + +.xdsoft_datetimepicker .xdsoft_label:hover i { + opacity: 1.0; +} + +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select { + border: 1px solid #ccc; + position: absolute; + right: 0; + top: 30px; + z-index: 101; + display: none; + background: #fff; + max-height: 160px; + overflow-y: hidden; +} + +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_monthselect{ right: -7px } +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_yearselect{ right: 2px } +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover { + color: #fff; + background: #ff8000; +} + +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option { + padding: 2px 10px 2px 5px; + text-decoration: none !important; +} + +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current { + background: #33aaff; + box-shadow: #178fe5 0 1px 3px 0 inset; + color: #fff; + font-weight: 700; +} + +.xdsoft_datetimepicker .xdsoft_month { + width: 100px; + text-align: right; +} + +.xdsoft_datetimepicker .xdsoft_calendar { + clear: both; +} + +.xdsoft_datetimepicker .xdsoft_year{ + width: 48px; + margin-left: 5px; +} + +.xdsoft_datetimepicker .xdsoft_calendar table { + border-collapse: collapse; + width: 100%; + +} + +.xdsoft_datetimepicker .xdsoft_calendar td > div { + padding-right: 5px; +} + +.xdsoft_datetimepicker .xdsoft_calendar th { + height: 25px; +} + +.xdsoft_datetimepicker .xdsoft_calendar td,.xdsoft_datetimepicker .xdsoft_calendar th { + width: 14.2857142%; + background: #f5f5f5; + border: 1px solid #ddd; + color: #666; + font-size: 12px; + text-align: right; + vertical-align: middle; + padding: 0; + border-collapse: collapse; + cursor: pointer; + height: 25px; +} +.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar th { + width: 12.5%; +} + +.xdsoft_datetimepicker .xdsoft_calendar th { + background: #f1f1f1; +} + +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today { + color: #33aaff; +} + +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_default { + background: #ffe9d2; + box-shadow: #ffb871 0 1px 4px 0 inset; + color: #000; +} +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_mint { + background: #c1ffc9; + box-shadow: #00dd1c 0 1px 4px 0 inset; + color: #000; +} + +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default, +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current, +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current { + background: #33aaff; + box-shadow: #178fe5 0 1px 3px 0 inset; + color: #fff; + font-weight: 700; +} + +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month, +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled, +.xdsoft_datetimepicker .xdsoft_time_box >div >div.xdsoft_disabled { + opacity: 0.5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + cursor: default; +} + +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled { + opacity: 0.2; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)"; +} + +.xdsoft_datetimepicker .xdsoft_calendar td:hover, +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div:hover { + color: #fff !important; + background: #ff8000 !important; + box-shadow: none !important; +} + +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current.xdsoft_disabled:hover, +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current.xdsoft_disabled:hover { + background: #33aaff !important; + box-shadow: #178fe5 0 1px 3px 0 inset !important; + color: #fff !important; +} + +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover, +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_disabled:hover { + color: inherit !important; + background: inherit !important; + box-shadow: inherit !important; +} + +.xdsoft_datetimepicker .xdsoft_calendar th { + font-weight: 700; + text-align: center; + color: #999; + cursor: default; +} + +.xdsoft_datetimepicker .xdsoft_copyright { + color: #ccc !important; + font-size: 10px; + clear: both; + float: none; + margin-left: 8px; +} + +.xdsoft_datetimepicker .xdsoft_copyright a { color: #eee !important } +.xdsoft_datetimepicker .xdsoft_copyright a:hover { color: #aaa !important } + +.xdsoft_time_box { + position: relative; + border: 1px solid #ccc; +} +.xdsoft_scrollbar >.xdsoft_scroller { + background: #ccc !important; + height: 20px; + border-radius: 3px; +} +.xdsoft_scrollbar { + position: absolute; + width: 7px; + right: 0; + top: 0; + bottom: 0; + cursor: pointer; +} +.xdsoft_scroller_box { + position: relative; +} + +.xdsoft_datetimepicker.xdsoft_dark { + box-shadow: 0 5px 15px -5px rgba(255, 255, 255, 0.506); + background: #000; + border-bottom: 1px solid #444; + border-left: 1px solid #333; + border-right: 1px solid #333; + border-top: 1px solid #333; + color: #ccc; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box { + border-bottom: 1px solid #222; +} +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div { + background: #0a0a0a; + border-top: 1px solid #222; + color: #999; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label { + background-color: #000; +} +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select { + border: 1px solid #333; + background: #000; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover { + color: #000; + background: #007fff; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current { + background: #cc5500; + box-shadow: #b03e00 0 1px 3px 0 inset; + color: #000; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label i, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_prev, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_next, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_today_button { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUExQUUzOTA0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUExQUUzOTE0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQTFBRTM4RTQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQTFBRTM4RjQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp0VxGEAAAIASURBVHja7JrNSgMxEMebtgh+3MSLr1T1Xn2CHoSKB08+QmR8Bx9A8e7RixdB9CKCoNdexIugxFlJa7rNZneTbLIpM/CnNLsdMvNjM8l0mRCiQ9Ye61IKCAgZAUnH+mU3MMZaHYChBnJUDzWOFZdVfc5+ZFLbrWDeXPwbxIqrLLfaeS0hEBVGIRQCEiZoHQwtlGSByCCdYBl8g8egTTAWoKQMRBRBcZxYlhzhKegqMOageErsCHVkk3hXIFooDgHB1KkHIHVgzKB4ADJQ/A1jAFmAYhkQqA5TOBtocrKrgXwQA8gcFIuAIO8sQSA7hidvPwaQGZSaAYHOUWJABhWWw2EMIH9QagQERU4SArJXo0ZZL18uvaxejXt/Em8xjVBXmvFr1KVm/AJ10tRe2XnraNqaJvKE3KHuUbfK1E+VHB0q40/y3sdQSxY4FHWeKJCunP8UyDdqJZenT3ntVV5jIYCAh20vT7ioP8tpf6E2lfEMwERe+whV1MHjwZB7PBiCxcGQWwKZKD62lfGNnP/1poFAA60T7rF1UgcKd2id3KDeUS+oLWV8DfWAepOfq00CgQabi9zjcgJVYVD7PVzQUAUGAQkbNJTBICDhgwYTjDYD6XeW08ZKh+A4pYkzenOxXUbvZcWz7E8ykRMnIHGX1XPl+1m2vPYpL+2qdb8CDAARlKFEz/ZVkAAAAABJRU5ErkJggg==); +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th { + background: #0a0a0a; + border: 1px solid #222; + color: #999; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th { + background: #0e0e0e; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_today { + color: #cc5500; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_default { + background: #ffe9d2; + box-shadow: #ffb871 0 1px 4px 0 inset; + color:#000; +} +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_mint { + background: #c1ffc9; + box-shadow: #00dd1c 0 1px 4px 0 inset; + color:#000; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_default, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_current, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current { + background: #cc5500; + box-shadow: #b03e00 0 1px 3px 0 inset; + color: #000; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td:hover, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div:hover { + color: #000 !important; + background: #007fff !important; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th { + color: #666; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright { color: #333 !important } +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a { color: #111 !important } +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a:hover { color: #555 !important } + +.xdsoft_dark .xdsoft_time_box { + border: 1px solid #333; +} + +.xdsoft_dark .xdsoft_scrollbar >.xdsoft_scroller { + background: #333 !important; +} +.xdsoft_datetimepicker .xdsoft_save_selected { + display: block; + border: 1px solid #dddddd !important; + margin-top: 5px; + width: 100%; + color: #454551; + font-size: 13px; +} +.xdsoft_datetimepicker .blue-gradient-button { + font-family: "museo-sans", "Book Antiqua", sans-serif; + font-size: 12px; + font-weight: 300; + color: #82878c; + height: 28px; + position: relative; + padding: 4px 17px 4px 33px; + border: 1px solid #d7d8da; + background: -moz-linear-gradient(top, #fff 0%, #f4f8fa 73%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(73%, #f4f8fa)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #fff 0%, #f4f8fa 73%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #fff 0%, #f4f8fa 73%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #fff 0%, #f4f8fa 73%); + /* IE10+ */ + background: linear-gradient(to bottom, #fff 0%, #f4f8fa 73%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff', endColorstr='#f4f8fa',GradientType=0 ); +/* IE6-9 */ +} +.xdsoft_datetimepicker .blue-gradient-button:hover, .xdsoft_datetimepicker .blue-gradient-button:focus, .xdsoft_datetimepicker .blue-gradient-button:hover span, .xdsoft_datetimepicker .blue-gradient-button:focus span { + color: #454551; + background: -moz-linear-gradient(top, #f4f8fa 0%, #FFF 73%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f4f8fa), color-stop(73%, #FFF)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #f4f8fa 0%, #FFF 73%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #f4f8fa 0%, #FFF 73%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #f4f8fa 0%, #FFF 73%); + /* IE10+ */ + background: linear-gradient(to bottom, #f4f8fa 0%, #FFF 73%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f8fa', endColorstr='#FFF',GradientType=0 ); + /* IE6-9 */ +} diff --git a/static_new/silk/lib/jquery.datetimepicker.js b/static_new/silk/lib/jquery.datetimepicker.js new file mode 100644 index 00000000..40b32c71 --- /dev/null +++ b/static_new/silk/lib/jquery.datetimepicker.js @@ -0,0 +1,2026 @@ +/** + * @preserve jQuery DateTimePicker plugin v2.4.3 + * @homepage http://xdsoft.net/jqplugins/datetimepicker/ + * (c) 2014, Chupurnov Valeriy. + */ +/*global document,window,jQuery,setTimeout,clearTimeout,HighlightedDate,getCurrentValue*/ +(function ($) { + 'use strict'; + var default_options = { + i18n: { + ar: { // Arabic + months: [ + "كانون الثاني", "شباط", "آذار", "نيسان", "مايو", "حزيران", "تموز", "آب", "أيلول", "تشرين الأول", "تشرين الثاني", "كانون الأول" + ], + dayOfWeek: [ + "ن", "ث", "ع", "خ", "ج", "س", "ح" + ] + }, + ro: { // Romanian + months: [ + "ianuarie", "februarie", "martie", "aprilie", "mai", "iunie", "iulie", "august", "septembrie", "octombrie", "noiembrie", "decembrie" + ], + dayOfWeek: [ + "l", "ma", "mi", "j", "v", "s", "d" + ] + }, + id: { // Indonesian + months: [ + "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember" + ], + dayOfWeek: [ + "Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab" + ] + }, + bg: { // Bulgarian + months: [ + "Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември" + ], + dayOfWeek: [ + "Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" + ] + }, + fa: { // Persian/Farsi + months: [ + 'فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند' + ], + dayOfWeek: [ + 'یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه' + ] + }, + ru: { // Russian + months: [ + 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь' + ], + dayOfWeek: [ + "Вск", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" + ] + }, + uk: { // Ukrainian + months: [ + 'Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Липень', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень' + ], + dayOfWeek: [ + "Ндл", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Сбт" + ] + }, + en: { // English + months: [ + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" + ], + dayOfWeek: [ + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" + ] + }, + el: { // Ελληνικά + months: [ + "Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος" + ], + dayOfWeek: [ + "Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ" + ] + }, + de: { // German + months: [ + 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember' + ], + dayOfWeek: [ + "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa" + ] + }, + nl: { // Dutch + months: [ + "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december" + ], + dayOfWeek: [ + "zo", "ma", "di", "wo", "do", "vr", "za" + ] + }, + tr: { // Turkish + months: [ + "Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık" + ], + dayOfWeek: [ + "Paz", "Pts", "Sal", "Çar", "Per", "Cum", "Cts" + ] + }, + fr: { //French + months: [ + "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" + ], + dayOfWeek: [ + "Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam" + ] + }, + es: { // Spanish + months: [ + "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre" + ], + dayOfWeek: [ + "Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb" + ] + }, + th: { // Thai + months: [ + 'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม' + ], + dayOfWeek: [ + 'อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.' + ] + }, + pl: { // Polish + months: [ + "styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad", "grudzień" + ], + dayOfWeek: [ + "nd", "pn", "wt", "śr", "cz", "pt", "sb" + ] + }, + pt: { // Portuguese + months: [ + "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" + ], + dayOfWeek: [ + "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab" + ] + }, + ch: { // Simplified Chinese + months: [ + "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" + ], + dayOfWeek: [ + "日", "一", "二", "三", "四", "五", "六" + ] + }, + se: { // Swedish + months: [ + "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December" + ], + dayOfWeek: [ + "Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör" + ] + }, + kr: { // Korean + months: [ + "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월" + ], + dayOfWeek: [ + "일", "월", "화", "수", "목", "금", "토" + ] + }, + it: { // Italian + months: [ + "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre" + ], + dayOfWeek: [ + "Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab" + ] + }, + da: { // Dansk + months: [ + "January", "Februar", "Marts", "April", "Maj", "Juni", "July", "August", "September", "Oktober", "November", "December" + ], + dayOfWeek: [ + "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør" + ] + }, + no: { // Norwegian + months: [ + "Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember" + ], + dayOfWeek: [ + "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør" + ] + }, + ja: { // Japanese + months: [ + "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月" + ], + dayOfWeek: [ + "日", "月", "火", "水", "木", "金", "土" + ] + }, + vi: { // Vietnamese + months: [ + "Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6", "Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11", "Tháng 12" + ], + dayOfWeek: [ + "CN", "T2", "T3", "T4", "T5", "T6", "T7" + ] + }, + sl: { // Slovenščina + months: [ + "Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December" + ], + dayOfWeek: [ + "Ned", "Pon", "Tor", "Sre", "Čet", "Pet", "Sob" + ] + }, + cs: { // Čeština + months: [ + "Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec" + ], + dayOfWeek: [ + "Ne", "Po", "Út", "St", "Čt", "Pá", "So" + ] + }, + hu: { // Hungarian + months: [ + "Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December" + ], + dayOfWeek: [ + "Va", "Hé", "Ke", "Sze", "Cs", "Pé", "Szo" + ] + }, + az: { //Azerbaijanian (Azeri) + months: [ + "Yanvar", "Fevral", "Mart", "Aprel", "May", "Iyun", "Iyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr" + ], + dayOfWeek: [ + "B", "Be", "Ça", "Ç", "Ca", "C", "Ş" + ] + }, + bs: { //Bosanski + months: [ + "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar" + ], + dayOfWeek: [ + "Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub" + ] + }, + ca: { //Català + months: [ + "Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre" + ], + dayOfWeek: [ + "Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds" + ] + }, + 'en-GB': { //English (British) + months: [ + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" + ], + dayOfWeek: [ + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" + ] + }, + et: { //"Eesti" + months: [ + "Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember" + ], + dayOfWeek: [ + "P", "E", "T", "K", "N", "R", "L" + ] + }, + eu: { //Euskara + months: [ + "Urtarrila", "Otsaila", "Martxoa", "Apirila", "Maiatza", "Ekaina", "Uztaila", "Abuztua", "Iraila", "Urria", "Azaroa", "Abendua" + ], + dayOfWeek: [ + "Ig.", "Al.", "Ar.", "Az.", "Og.", "Or.", "La." + ] + }, + fi: { //Finnish (Suomi) + months: [ + "Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu" + ], + dayOfWeek: [ + "Su", "Ma", "Ti", "Ke", "To", "Pe", "La" + ] + }, + gl: { //Galego + months: [ + "Xan", "Feb", "Maz", "Abr", "Mai", "Xun", "Xul", "Ago", "Set", "Out", "Nov", "Dec" + ], + dayOfWeek: [ + "Dom", "Lun", "Mar", "Mer", "Xov", "Ven", "Sab" + ] + }, + hr: { //Hrvatski + months: [ + "Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac" + ], + dayOfWeek: [ + "Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub" + ] + }, + ko: { //Korean (한국어) + months: [ + "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월" + ], + dayOfWeek: [ + "일", "월", "화", "수", "목", "금", "토" + ] + }, + lt: { //Lithuanian (lietuvių) + months: [ + "Sausio", "Vasario", "Kovo", "Balandžio", "Gegužės", "Birželio", "Liepos", "Rugpjūčio", "Rugsėjo", "Spalio", "Lapkričio", "Gruodžio" + ], + dayOfWeek: [ + "Sek", "Pir", "Ant", "Tre", "Ket", "Pen", "Šeš" + ] + }, + lv: { //Latvian (Latviešu) + months: [ + "Janvāris", "Februāris", "Marts", "Aprīlis ", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris" + ], + dayOfWeek: [ + "Sv", "Pr", "Ot", "Tr", "Ct", "Pk", "St" + ] + }, + mk: { //Macedonian (Македонски) + months: [ + "јануари", "февруари", "март", "април", "мај", "јуни", "јули", "август", "септември", "октомври", "ноември", "декември" + ], + dayOfWeek: [ + "нед", "пон", "вто", "сре", "чет", "пет", "саб" + ] + }, + mn: { //Mongolian (Монгол) + months: [ + "1-р сар", "2-р сар", "3-р сар", "4-р сар", "5-р сар", "6-р сар", "7-р сар", "8-р сар", "9-р сар", "10-р сар", "11-р сар", "12-р сар" + ], + dayOfWeek: [ + "Дав", "Мяг", "Лха", "Пүр", "Бсн", "Бям", "Ням" + ] + }, + 'pt-BR': { //Português(Brasil) + months: [ + "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" + ], + dayOfWeek: [ + "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb" + ] + }, + sk: { //Slovenčina + months: [ + "Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December" + ], + dayOfWeek: [ + "Ne", "Po", "Ut", "St", "Št", "Pi", "So" + ] + }, + sq: { //Albanian (Shqip) + months: [ + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" + ], + dayOfWeek: [ + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" + ] + }, + 'sr-YU': { //Serbian (Srpski) + months: [ + "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar" + ], + dayOfWeek: [ + "Ned", "Pon", "Uto", "Sre", "čet", "Pet", "Sub" + ] + }, + sr: { //Serbian Cyrillic (Српски) + months: [ + "јануар", "фебруар", "март", "април", "мај", "јун", "јул", "август", "септембар", "октобар", "новембар", "децембар" + ], + dayOfWeek: [ + "нед", "пон", "уто", "сре", "чет", "пет", "суб" + ] + }, + sv: { //Svenska + months: [ + "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December" + ], + dayOfWeek: [ + "Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör" + ] + }, + 'zh-TW': { //Traditional Chinese (繁體中文) + months: [ + "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" + ], + dayOfWeek: [ + "日", "一", "二", "三", "四", "五", "六" + ] + }, + zh: { //Simplified Chinese (简体中文) + months: [ + "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" + ], + dayOfWeek: [ + "日", "一", "二", "三", "四", "五", "六" + ] + }, + he: { //Hebrew (עברית) + months: [ + 'ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר' + ], + dayOfWeek: [ + 'א\'', 'ב\'', 'ג\'', 'ד\'', 'ה\'', 'ו\'', 'שבת' + ] + }, + hy: { // Armenian + months: [ + "Հունվար", "Փետրվար", "Մարտ", "Ապրիլ", "Մայիս", "Հունիս", "Հուլիս", "Օգոստոս", "Սեպտեմբեր", "Հոկտեմբեր", "Նոյեմբեր", "Դեկտեմբեր" + ], + dayOfWeek: [ + "Կի", "Երկ", "Երք", "Չոր", "Հնգ", "Ուրբ", "Շբթ" + ] + }, + kg: { // Kyrgyz + months: [ + 'Үчтүн айы', 'Бирдин айы', 'Жалган Куран', 'Чын Куран', 'Бугу', 'Кулжа', 'Теке', 'Баш Оона', 'Аяк Оона', 'Тогуздун айы', 'Жетинин айы', 'Бештин айы' + ], + dayOfWeek: [ + "Жек", "Дүй", "Шей", "Шар", "Бей", "Жум", "Ише" + ] + } + }, + value: '', + lang: 'en', + + format: 'Y/m/d H:i', + formatTime: 'H:i', + formatDate: 'Y/m/d', + + startDate: false, // new Date(), '1986/12/08', '-1970/01/05','-1970/01/05', + step: 60, + monthChangeSpinner: true, + + closeOnDateSelect: false, + closeOnTimeSelect: true, + closeOnWithoutClick: true, + closeOnInputClick: true, + + timepicker: true, + datepicker: true, + weeks: false, + + defaultTime: false, // use formatTime format (ex. '10:00' for formatTime: 'H:i') + defaultDate: false, // use formatDate format (ex new Date() or '1986/12/08' or '-1970/01/05' or '-1970/01/05') + + minDate: false, + maxDate: false, + minTime: false, + maxTime: false, + + allowTimes: [], + opened: false, + initTime: true, + inline: false, + theme: '', + + onSelectDate: function () {}, + onSelectTime: function () {}, + onChangeMonth: function () {}, + onChangeYear: function () {}, + onChangeDateTime: function () {}, + onShow: function () {}, + onClose: function () {}, + onGenerate: function () {}, + + withoutCopyright: true, + inverseButton: false, + hours12: false, + next: 'xdsoft_next', + prev : 'xdsoft_prev', + dayOfWeekStart: 0, + parentID: 'body', + timeHeightInTimePicker: 25, + timepickerScrollbar: true, + todayButton: true, + prevButton: true, + nextButton: true, + defaultSelect: true, + + scrollMonth: true, + scrollTime: true, + scrollInput: true, + + lazyInit: false, + mask: false, + validateOnBlur: true, + allowBlank: true, + yearStart: 1950, + yearEnd: 2050, + monthStart: 0, + monthEnd: 11, + style: '', + id: '', + fixed: false, + roundTime: 'round', // ceil, floor + className: '', + weekends: [], + highlightedDates: [], + highlightedPeriods: [], + disabledDates : [], + yearOffset: 0, + beforeShowDay: null, + + enterLikeTab: true, + showApplyButton: false + }; + // fix for ie8 + if (!Array.prototype.indexOf) { + Array.prototype.indexOf = function (obj, start) { + var i, j; + for (i = (start || 0), j = this.length; i < j; i += 1) { + if (this[i] === obj) { return i; } + } + return -1; + }; + } + Date.prototype.countDaysInMonth = function () { + return new Date(this.getFullYear(), this.getMonth() + 1, 0).getDate(); + }; + $.fn.xdsoftScroller = function (percent) { + return this.each(function () { + var timeboxparent = $(this), + pointerEventToXY = function (e) { + var out = {x: 0, y: 0}, + touch; + if (e.type === 'touchstart' || e.type === 'touchmove' || e.type === 'touchend' || e.type === 'touchcancel') { + touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0]; + out.x = touch.clientX; + out.y = touch.clientY; + } else if (e.type === 'mousedown' || e.type === 'mouseup' || e.type === 'mousemove' || e.type === 'mouseover' || e.type === 'mouseout' || e.type === 'mouseenter' || e.type === 'mouseleave') { + out.x = e.clientX; + out.y = e.clientY; + } + return out; + }, + move = 0, + timebox, + parentHeight, + height, + scrollbar, + scroller, + maximumOffset = 100, + start = false, + startY = 0, + startTop = 0, + h1 = 0, + touchStart = false, + startTopScroll = 0, + calcOffset = function () {}; + if (percent === 'hide') { + timeboxparent.find('.xdsoft_scrollbar').hide(); + return; + } + if (!$(this).hasClass('xdsoft_scroller_box')) { + timebox = timeboxparent.children().eq(0); + parentHeight = timeboxparent[0].clientHeight; + height = timebox[0].offsetHeight; + scrollbar = $('
      '); + scroller = $('
      '); + scrollbar.append(scroller); + + timeboxparent.addClass('xdsoft_scroller_box').append(scrollbar); + calcOffset = function calcOffset(event) { + var offset = pointerEventToXY(event).y - startY + startTopScroll; + if (offset < 0) { + offset = 0; + } + if (offset + scroller[0].offsetHeight > h1) { + offset = h1 - scroller[0].offsetHeight; + } + timeboxparent.trigger('scroll_element.xdsoft_scroller', [maximumOffset ? offset / maximumOffset : 0]); + }; + + scroller + .on('touchstart.xdsoft_scroller mousedown.xdsoft_scroller', function (event) { + if (!parentHeight) { + timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]); + } + + startY = pointerEventToXY(event).y; + startTopScroll = parseInt(scroller.css('margin-top'), 10); + h1 = scrollbar[0].offsetHeight; + + if (event.type === 'mousedown') { + if (document) { + $(document.body).addClass('xdsoft_noselect'); + } + $([document.body, window]).on('mouseup.xdsoft_scroller', function arguments_callee() { + $([document.body, window]).off('mouseup.xdsoft_scroller', arguments_callee) + .off('mousemove.xdsoft_scroller', calcOffset) + .removeClass('xdsoft_noselect'); + }); + $(document.body).on('mousemove.xdsoft_scroller', calcOffset); + } else { + touchStart = true; + event.stopPropagation(); + event.preventDefault(); + } + }) + .on('touchmove', function (event) { + if (touchStart) { + event.preventDefault(); + calcOffset(event); + } + }) + .on('touchend touchcancel', function (event) { + touchStart = false; + startTopScroll = 0; + }); + + timeboxparent + .on('scroll_element.xdsoft_scroller', function (event, percentage) { + if (!parentHeight) { + timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percentage, true]); + } + percentage = percentage > 1 ? 1 : (percentage < 0 || isNaN(percentage)) ? 0 : percentage; + + scroller.css('margin-top', maximumOffset * percentage); + + setTimeout(function () { + timebox.css('marginTop', -parseInt((timebox[0].offsetHeight - parentHeight) * percentage, 10)); + }, 10); + }) + .on('resize_scroll.xdsoft_scroller', function (event, percentage, noTriggerScroll) { + var percent, sh; + parentHeight = timeboxparent[0].clientHeight; + height = timebox[0].offsetHeight; + percent = parentHeight / height; + sh = percent * scrollbar[0].offsetHeight; + if (percent > 1) { + scroller.hide(); + } else { + scroller.show(); + scroller.css('height', parseInt(sh > 10 ? sh : 10, 10)); + maximumOffset = scrollbar[0].offsetHeight - scroller[0].offsetHeight; + if (noTriggerScroll !== true) { + timeboxparent.trigger('scroll_element.xdsoft_scroller', [percentage || Math.abs(parseInt(timebox.css('marginTop'), 10)) / (height - parentHeight)]); + } + } + }); + + timeboxparent.on('mousewheel', function (event) { + var top = Math.abs(parseInt(timebox.css('marginTop'), 10)); + + top = top - (event.deltaY * 20); + if (top < 0) { + top = 0; + } + + timeboxparent.trigger('scroll_element.xdsoft_scroller', [top / (height - parentHeight)]); + event.stopPropagation(); + return false; + }); + + timeboxparent.on('touchstart', function (event) { + start = pointerEventToXY(event); + startTop = Math.abs(parseInt(timebox.css('marginTop'), 10)); + }); + + timeboxparent.on('touchmove', function (event) { + if (start) { + event.preventDefault(); + var coord = pointerEventToXY(event); + timeboxparent.trigger('scroll_element.xdsoft_scroller', [(startTop - (coord.y - start.y)) / (height - parentHeight)]); + } + }); + + timeboxparent.on('touchend touchcancel', function (event) { + start = false; + startTop = 0; + }); + } + timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]); + }); + }; + + $.fn.datetimepicker = function (opt) { + var KEY0 = 48, + KEY9 = 57, + _KEY0 = 96, + _KEY9 = 105, + CTRLKEY = 17, + DEL = 46, + ENTER = 13, + ESC = 27, + BACKSPACE = 8, + ARROWLEFT = 37, + ARROWUP = 38, + ARROWRIGHT = 39, + ARROWDOWN = 40, + TAB = 9, + F5 = 116, + AKEY = 65, + CKEY = 67, + VKEY = 86, + ZKEY = 90, + YKEY = 89, + ctrlDown = false, + options = ($.isPlainObject(opt) || !opt) ? $.extend(true, {}, default_options, opt) : $.extend(true, {}, default_options), + + lazyInitTimer = 0, + createDateTimePicker, + destroyDateTimePicker, + + lazyInit = function (input) { + input + .on('open.xdsoft focusin.xdsoft mousedown.xdsoft', function initOnActionCallback(event) { + if (input.is(':disabled') || input.data('xdsoft_datetimepicker')) { + return; + } + clearTimeout(lazyInitTimer); + lazyInitTimer = setTimeout(function () { + + if (!input.data('xdsoft_datetimepicker')) { + createDateTimePicker(input); + } + input + .off('open.xdsoft focusin.xdsoft mousedown.xdsoft', initOnActionCallback) + .trigger('open.xdsoft'); + }, 100); + }); + }; + + createDateTimePicker = function (input) { + var datetimepicker = $('
      '), + xdsoft_copyright = $('
      '), + datepicker = $('
      '), + mounth_picker = $('
      ' + + '
      ' + + '
      ' + + '
      '), + calendar = $('
      '), + timepicker = $('
      '), + timeboxparent = timepicker.find('.xdsoft_time_box').eq(0), + timebox = $('
      '), + applyButton = $(''), + /*scrollbar = $('
      '), + scroller = $('
      '),*/ + monthselect = $('
      '), + yearselect = $('
      '), + triggerAfterOpen = false, + XDSoft_datetime, + //scroll_element, + xchangeTimer, + timerclick, + current_time_index, + setPos, + timer = 0, + timer1 = 0, + _xdsoft_datetime; + + if (options.id) datetimepicker.attr('id', options.id); + if (options.style) datetimepicker.attr('style', options.style); + if (options.weeks) datetimepicker.addClass('xdsoft_showweeks'); + + datetimepicker.addClass('xdsoft_' + options.theme); + datetimepicker.addClass(options.className); + + mounth_picker + .find('.xdsoft_month span') + .after(monthselect); + mounth_picker + .find('.xdsoft_year span') + .after(yearselect); + + mounth_picker + .find('.xdsoft_month,.xdsoft_year') + .on('mousedown.xdsoft', function (event) { + var select = $(this).find('.xdsoft_select').eq(0), + val = 0, + top = 0, + visible = select.is(':visible'), + items, + i; + + mounth_picker + .find('.xdsoft_select') + .hide(); + if (_xdsoft_datetime.currentTime) { + val = _xdsoft_datetime.currentTime[$(this).hasClass('xdsoft_month') ? 'getMonth' : 'getFullYear'](); + } + + select[visible ? 'hide' : 'show'](); + for (items = select.find('div.xdsoft_option'), i = 0; i < items.length; i += 1) { + if (items.eq(i).data('value') === val) { + break; + } else { + top += items[0].offsetHeight; + } + } + + select.xdsoftScroller(top / (select.children()[0].offsetHeight - (select[0].clientHeight))); + event.stopPropagation(); + return false; + }); + + mounth_picker + .find('.xdsoft_select') + .xdsoftScroller() + .on('mousedown.xdsoft', function (event) { + event.stopPropagation(); + event.preventDefault(); + }) + .on('mousedown.xdsoft', '.xdsoft_option', function (event) { + + if (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) { + _xdsoft_datetime.currentTime = _xdsoft_datetime.now(); + } + + var year = _xdsoft_datetime.currentTime.getFullYear(); + if (_xdsoft_datetime && _xdsoft_datetime.currentTime) { + _xdsoft_datetime.currentTime[$(this).parent().parent().hasClass('xdsoft_monthselect') ? 'setMonth' : 'setFullYear']($(this).data('value')); + } + + $(this).parent().parent().hide(); + + datetimepicker.trigger('xchange.xdsoft'); + if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) { + options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); + } + + if (year !== _xdsoft_datetime.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) { + options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); + } + }); + + datetimepicker.setOptions = function (_options) { + var highlightedDates = {}, + getCaretPos = function (input) { + try { + if (document.selection && document.selection.createRange) { + var range = document.selection.createRange(); + return range.getBookmark().charCodeAt(2) - 2; + } + if (input.setSelectionRange) { + return input.selectionStart; + } + } catch (e) { + return 0; + } + }, + setCaretPos = function (node, pos) { + node = (typeof node === "string" || node instanceof String) ? document.getElementById(node) : node; + if (!node) { + return false; + } + if (node.createTextRange) { + var textRange = node.createTextRange(); + textRange.collapse(true); + textRange.moveEnd('character', pos); + textRange.moveStart('character', pos); + textRange.select(); + return true; + } + if (node.setSelectionRange) { + node.setSelectionRange(pos, pos); + return true; + } + return false; + }, + isValidValue = function (mask, value) { + var reg = mask + .replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g, '\\$1') + .replace(/_/g, '{digit+}') + .replace(/([0-9]{1})/g, '{digit$1}') + .replace(/\{digit([0-9]{1})\}/g, '[0-$1_]{1}') + .replace(/\{digit[\+]\}/g, '[0-9_]{1}'); + return (new RegExp(reg)).test(value); + }; + options = $.extend(true, {}, options, _options); + + if (_options.allowTimes && $.isArray(_options.allowTimes) && _options.allowTimes.length) { + options.allowTimes = $.extend(true, [], _options.allowTimes); + } + + if (_options.weekends && $.isArray(_options.weekends) && _options.weekends.length) { + options.weekends = $.extend(true, [], _options.weekends); + } + + if (_options.highlightedDates && $.isArray(_options.highlightedDates) && _options.highlightedDates.length) { + $.each(_options.highlightedDates, function (index, value) { + var splitData = $.map(value.split(','), $.trim), + exDesc, + hDate = new HighlightedDate(Date.parseDate(splitData[0], options.formatDate), splitData[1], splitData[2]), // date, desc, style + keyDate = hDate.date.dateFormat(options.formatDate); + if (highlightedDates[keyDate] !== undefined) { + exDesc = highlightedDates[keyDate].desc; + if (exDesc && exDesc.length && hDate.desc && hDate.desc.length) { + highlightedDates[keyDate].desc = exDesc + "\n" + hDate.desc; + } + } else { + highlightedDates[keyDate] = hDate; + } + }); + + options.highlightedDates = $.extend(true, [], highlightedDates); + } + + if (_options.highlightedPeriods && $.isArray(_options.highlightedPeriods) && _options.highlightedPeriods.length) { + highlightedDates = $.extend(true, [], options.highlightedDates); + $.each(_options.highlightedPeriods, function (index, value) { + var splitData = $.map(value.split(','), $.trim), + dateTest = Date.parseDate(splitData[0], options.formatDate), // start date + dateEnd = Date.parseDate(splitData[1], options.formatDate), + desc = splitData[2], + hDate, + keyDate, + exDesc, + style = splitData[3]; + + while (dateTest <= dateEnd) { + hDate = new HighlightedDate(dateTest, desc, style); + keyDate = dateTest.dateFormat(options.formatDate); + dateTest.setDate(dateTest.getDate() + 1); + if (highlightedDates[keyDate] !== undefined) { + exDesc = highlightedDates[keyDate].desc; + if (exDesc && exDesc.length && hDate.desc && hDate.desc.length) { + highlightedDates[keyDate].desc = exDesc + "\n" + hDate.desc; + } + } else { + highlightedDates[keyDate] = hDate; + } + } + }); + + options.highlightedDates = $.extend(true, [], highlightedDates); + } + + if (_options.disabledDates && $.isArray(_options.disabledDates) && _options.disabledDates.length) { + options.disabledDates = $.extend(true, [], _options.disabledDates); + } + + if ((options.open || options.opened) && (!options.inline)) { + input.trigger('open.xdsoft'); + } + + if (options.inline) { + triggerAfterOpen = true; + datetimepicker.addClass('xdsoft_inline'); + input.after(datetimepicker).hide(); + } + + if (options.inverseButton) { + options.next = 'xdsoft_prev'; + options.prev = 'xdsoft_next'; + } + + if (options.datepicker) { + datepicker.addClass('active'); + } else { + datepicker.removeClass('active'); + } + + if (options.timepicker) { + timepicker.addClass('active'); + } else { + timepicker.removeClass('active'); + } + + if (options.value) { + _xdsoft_datetime.setCurrentTime(options.value); + if (input && input.val) { + input.val(_xdsoft_datetime.str); + } + } + + if (isNaN(options.dayOfWeekStart)) { + options.dayOfWeekStart = 0; + } else { + options.dayOfWeekStart = parseInt(options.dayOfWeekStart, 10) % 7; + } + + if (!options.timepickerScrollbar) { + timeboxparent.xdsoftScroller('hide'); + } + + if (options.minDate && /^-(.*)$/.test(options.minDate)) { + options.minDate = _xdsoft_datetime.strToDateTime(options.minDate).dateFormat(options.formatDate); + } + + if (options.maxDate && /^\+(.*)$/.test(options.maxDate)) { + options.maxDate = _xdsoft_datetime.strToDateTime(options.maxDate).dateFormat(options.formatDate); + } + + applyButton.toggle(options.showApplyButton); + + mounth_picker + .find('.xdsoft_today_button') + .css('visibility', !options.todayButton ? 'hidden' : 'visible'); + + mounth_picker + .find('.' + options.prev) + .css('visibility', !options.prevButton ? 'hidden' : 'visible'); + + mounth_picker + .find('.' + options.next) + .css('visibility', !options.nextButton ? 'hidden' : 'visible'); + + if (options.mask) { + input.off('keydown.xdsoft'); + + if (options.mask === true) { + options.mask = options.format + .replace(/Y/g, '9999') + .replace(/F/g, '9999') + .replace(/m/g, '19') + .replace(/d/g, '39') + .replace(/H/g, '29') + .replace(/i/g, '59') + .replace(/s/g, '59'); + } + + if ($.type(options.mask) === 'string') { + if (!isValidValue(options.mask, input.val())) { + input.val(options.mask.replace(/[0-9]/g, '_')); + } + + input.on('keydown.xdsoft', function (event) { + var val = this.value, + key = event.which, + pos, + digit; + + if (((key >= KEY0 && key <= KEY9) || (key >= _KEY0 && key <= _KEY9)) || (key === BACKSPACE || key === DEL)) { + pos = getCaretPos(this); + digit = (key !== BACKSPACE && key !== DEL) ? String.fromCharCode((_KEY0 <= key && key <= _KEY9) ? key - KEY0 : key) : '_'; + + if ((key === BACKSPACE || key === DEL) && pos) { + pos -= 1; + digit = '_'; + } + + while (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) { + pos += (key === BACKSPACE || key === DEL) ? -1 : 1; + } + + val = val.substr(0, pos) + digit + val.substr(pos + 1); + if ($.trim(val) === '') { + val = options.mask.replace(/[0-9]/g, '_'); + } else { + if (pos === options.mask.length) { + event.preventDefault(); + return false; + } + } + + pos += (key === BACKSPACE || key === DEL) ? 0 : 1; + while (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) { + pos += (key === BACKSPACE || key === DEL) ? -1 : 1; + } + + if (isValidValue(options.mask, val)) { + this.value = val; + setCaretPos(this, pos); + } else if ($.trim(val) === '') { + this.value = options.mask.replace(/[0-9]/g, '_'); + } else { + input.trigger('error_input.xdsoft'); + } + } else { + if (([AKEY, CKEY, VKEY, ZKEY, YKEY].indexOf(key) !== -1 && ctrlDown) || [ESC, ARROWUP, ARROWDOWN, ARROWLEFT, ARROWRIGHT, F5, CTRLKEY, TAB, ENTER].indexOf(key) !== -1) { + return true; + } + } + + event.preventDefault(); + return false; + }); + } + } + if (options.validateOnBlur) { + input + .off('blur.xdsoft') + .on('blur.xdsoft', function () { + if (options.allowBlank && !$.trim($(this).val()).length) { + $(this).val(null); + datetimepicker.data('xdsoft_datetime').empty(); + } else if (!Date.parseDate($(this).val(), options.format)) { + var splittedHours = +([$(this).val()[0], $(this).val()[1]].join('')), + splittedMinutes = +([$(this).val()[2], $(this).val()[3]].join('')); + + // parse the numbers as 0312 => 03:12 + if (!options.datepicker && options.timepicker && splittedHours >= 0 && splittedHours < 24 && splittedMinutes >= 0 && splittedMinutes < 60) { + $(this).val([splittedHours, splittedMinutes].map(function (item) { + return item > 9 ? item : '0' + item; + }).join(':')); + } else { + $(this).val((_xdsoft_datetime.now()).dateFormat(options.format)); + } + + datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val()); + } else { + datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val()); + } + + datetimepicker.trigger('changedatetime.xdsoft'); + }); + } + options.dayOfWeekStartPrev = (options.dayOfWeekStart === 0) ? 6 : options.dayOfWeekStart - 1; + + datetimepicker + .trigger('xchange.xdsoft') + .trigger('afterOpen.xdsoft'); + }; + + datetimepicker + .data('options', options) + .on('mousedown.xdsoft', function (event) { + event.stopPropagation(); + event.preventDefault(); + yearselect.hide(); + monthselect.hide(); + return false; + }); + + //scroll_element = timepicker.find('.xdsoft_time_box'); + timeboxparent.append(timebox); + timeboxparent.xdsoftScroller(); + + datetimepicker.on('afterOpen.xdsoft', function () { + timeboxparent.xdsoftScroller(); + }); + + datetimepicker + .append(datepicker) + .append(timepicker); + + if (options.withoutCopyright !== true) { + datetimepicker + .append(xdsoft_copyright); + } + + datepicker + .append(mounth_picker) + .append(calendar) + .append(applyButton); + + $(options.parentID) + .append(datetimepicker); + + XDSoft_datetime = function () { + var _this = this; + _this.now = function (norecursion) { + var d = new Date(), + date, + time; + + if (!norecursion && options.defaultDate) { + date = _this.strToDateTime(options.defaultDate); + d.setFullYear(date.getFullYear()); + d.setMonth(date.getMonth()); + d.setDate(date.getDate()); + } + + if (options.yearOffset) { + d.setFullYear(d.getFullYear() + options.yearOffset); + } + + if (!norecursion && options.defaultTime) { + time = _this.strtotime(options.defaultTime); + d.setHours(time.getHours()); + d.setMinutes(time.getMinutes()); + } + return d; + }; + + _this.isValidDate = function (d) { + if (Object.prototype.toString.call(d) !== "[object Date]") { + return false; + } + return !isNaN(d.getTime()); + }; + + _this.setCurrentTime = function (dTime) { + _this.currentTime = (typeof dTime === 'string') ? _this.strToDateTime(dTime) : _this.isValidDate(dTime) ? dTime : _this.now(); + datetimepicker.trigger('xchange.xdsoft'); + }; + + _this.empty = function () { + _this.currentTime = null; + }; + + _this.getCurrentTime = function (dTime) { + return _this.currentTime; + }; + + _this.nextMonth = function () { + + if (_this.currentTime === undefined || _this.currentTime === null) { + _this.currentTime = _this.now(); + } + + var month = _this.currentTime.getMonth() + 1, + year; + if (month === 12) { + _this.currentTime.setFullYear(_this.currentTime.getFullYear() + 1); + month = 0; + } + + year = _this.currentTime.getFullYear(); + + _this.currentTime.setDate( + Math.min( + new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(), + _this.currentTime.getDate() + ) + ); + _this.currentTime.setMonth(month); + + if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) { + options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); + } + + if (year !== _this.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) { + options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); + } + + datetimepicker.trigger('xchange.xdsoft'); + return month; + }; + + _this.prevMonth = function () { + + if (_this.currentTime === undefined || _this.currentTime === null) { + _this.currentTime = _this.now(); + } + + var month = _this.currentTime.getMonth() - 1; + if (month === -1) { + _this.currentTime.setFullYear(_this.currentTime.getFullYear() - 1); + month = 11; + } + _this.currentTime.setDate( + Math.min( + new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(), + _this.currentTime.getDate() + ) + ); + _this.currentTime.setMonth(month); + if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) { + options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); + } + datetimepicker.trigger('xchange.xdsoft'); + return month; + }; + + _this.getWeekOfYear = function (datetime) { + var onejan = new Date(datetime.getFullYear(), 0, 1); + return Math.ceil((((datetime - onejan) / 86400000) + onejan.getDay() + 1) / 7); + }; + + _this.strToDateTime = function (sDateTime) { + var tmpDate = [], timeOffset, currentTime; + + if (sDateTime && sDateTime instanceof Date && _this.isValidDate(sDateTime)) { + return sDateTime; + } + + tmpDate = /^(\+|\-)(.*)$/.exec(sDateTime); + if (tmpDate) { + tmpDate[2] = Date.parseDate(tmpDate[2], options.formatDate); + } + if (tmpDate && tmpDate[2]) { + timeOffset = tmpDate[2].getTime() - (tmpDate[2].getTimezoneOffset()) * 60000; + currentTime = new Date((_this.now(true)).getTime() + parseInt(tmpDate[1] + '1', 10) * timeOffset); + } else { + currentTime = sDateTime ? Date.parseDate(sDateTime, options.format) : _this.now(); + } + + if (!_this.isValidDate(currentTime)) { + currentTime = _this.now(); + } + + return currentTime; + }; + + _this.strToDate = function (sDate) { + if (sDate && sDate instanceof Date && _this.isValidDate(sDate)) { + return sDate; + } + + var currentTime = sDate ? Date.parseDate(sDate, options.formatDate) : _this.now(true); + if (!_this.isValidDate(currentTime)) { + currentTime = _this.now(true); + } + return currentTime; + }; + + _this.strtotime = function (sTime) { + if (sTime && sTime instanceof Date && _this.isValidDate(sTime)) { + return sTime; + } + var currentTime = sTime ? Date.parseDate(sTime, options.formatTime) : _this.now(true); + if (!_this.isValidDate(currentTime)) { + currentTime = _this.now(true); + } + return currentTime; + }; + + _this.str = function () { + return _this.currentTime.dateFormat(options.format); + }; + _this.currentTime = this.now(); + }; + + _xdsoft_datetime = new XDSoft_datetime(); + + applyButton.on('click', function (e) {//pathbrite + e.preventDefault(); + datetimepicker.data('changed', true); + _xdsoft_datetime.setCurrentTime(getCurrentValue()); + input.val(_xdsoft_datetime.str()); + datetimepicker.trigger('close.xdsoft'); + }); + mounth_picker + .find('.xdsoft_today_button') + .on('mousedown.xdsoft', function () { + datetimepicker.data('changed', true); + _xdsoft_datetime.setCurrentTime(0); + datetimepicker.trigger('afterOpen.xdsoft'); + }).on('dblclick.xdsoft', function () { + var currentDate = _xdsoft_datetime.getCurrentTime(); + currentDate = new Date(currentDate.getFullYear(),currentDate.getMonth(),currentDate.getDate()); + var minDate = _xdsoft_datetime.strToDate(options.minDate); + minDate = new Date(minDate.getFullYear(),minDate.getMonth(),minDate.getDate()); + if(currentDate < minDate) { + return; + } + var maxDate = _xdsoft_datetime.strToDate(options.maxDate); + maxDate = new Date(maxDate.getFullYear(),maxDate.getMonth(),maxDate.getDate()); + if(currentDate > maxDate) { + return; + } + input.val(_xdsoft_datetime.str()); + datetimepicker.trigger('close.xdsoft'); + }); + mounth_picker + .find('.xdsoft_prev,.xdsoft_next') + .on('mousedown.xdsoft', function () { + var $this = $(this), + timer = 0, + stop = false; + + (function arguments_callee1(v) { + if ($this.hasClass(options.next)) { + _xdsoft_datetime.nextMonth(); + } else if ($this.hasClass(options.prev)) { + _xdsoft_datetime.prevMonth(); + } + if (options.monthChangeSpinner) { + if (!stop) { + timer = setTimeout(arguments_callee1, v || 100); + } + } + }(500)); + + $([document.body, window]).on('mouseup.xdsoft', function arguments_callee2() { + clearTimeout(timer); + stop = true; + $([document.body, window]).off('mouseup.xdsoft', arguments_callee2); + }); + }); + + timepicker + .find('.xdsoft_prev,.xdsoft_next') + .on('mousedown.xdsoft', function () { + var $this = $(this), + timer = 0, + stop = false, + period = 110; + (function arguments_callee4(v) { + var pheight = timeboxparent[0].clientHeight, + height = timebox[0].offsetHeight, + top = Math.abs(parseInt(timebox.css('marginTop'), 10)); + if ($this.hasClass(options.next) && (height - pheight) - options.timeHeightInTimePicker >= top) { + timebox.css('marginTop', '-' + (top + options.timeHeightInTimePicker) + 'px'); + } else if ($this.hasClass(options.prev) && top - options.timeHeightInTimePicker >= 0) { + timebox.css('marginTop', '-' + (top - options.timeHeightInTimePicker) + 'px'); + } + timeboxparent.trigger('scroll_element.xdsoft_scroller', [Math.abs(parseInt(timebox.css('marginTop'), 10) / (height - pheight))]); + period = (period > 10) ? 10 : period - 10; + if (!stop) { + timer = setTimeout(arguments_callee4, v || period); + } + }(500)); + $([document.body, window]).on('mouseup.xdsoft', function arguments_callee5() { + clearTimeout(timer); + stop = true; + $([document.body, window]) + .off('mouseup.xdsoft', arguments_callee5); + }); + }); + + xchangeTimer = 0; + // base handler - generating a calendar and timepicker + datetimepicker + .on('xchange.xdsoft', function (event) { + clearTimeout(xchangeTimer); + xchangeTimer = setTimeout(function () { + + if (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) { + _xdsoft_datetime.currentTime = _xdsoft_datetime.now(); + } + + var table = '', + start = new Date(_xdsoft_datetime.currentTime.getFullYear(), _xdsoft_datetime.currentTime.getMonth(), 1, 12, 0, 0), + i = 0, + j, + today = _xdsoft_datetime.now(), + maxDate = false, + minDate = false, + hDate, + d, + y, + m, + w, + classes = [], + customDateSettings, + newRow = true, + time = '', + h = '', + line_time, + description; + + while (start.getDay() !== options.dayOfWeekStart) { + start.setDate(start.getDate() - 1); + } + + table += ''; + + if (options.weeks) { + table += ''; + } + + for (j = 0; j < 7; j += 1) { + table += ''; + } + + table += ''; + table += ''; + + if (options.maxDate !== false) { + maxDate = _xdsoft_datetime.strToDate(options.maxDate); + maxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate(), 23, 59, 59, 999); + } + + if (options.minDate !== false) { + minDate = _xdsoft_datetime.strToDate(options.minDate); + minDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()); + } + + while (i < _xdsoft_datetime.currentTime.countDaysInMonth() || start.getDay() !== options.dayOfWeekStart || _xdsoft_datetime.currentTime.getMonth() === start.getMonth()) { + classes = []; + i += 1; + + d = start.getDate(); + y = start.getFullYear(); + m = start.getMonth(); + w = _xdsoft_datetime.getWeekOfYear(start); + description = ''; + + classes.push('xdsoft_date'); + + if (options.beforeShowDay && $.isFunction(options.beforeShowDay.call)) { + customDateSettings = options.beforeShowDay.call(datetimepicker, start); + } else { + customDateSettings = null; + } + + if ((maxDate !== false && start > maxDate) || (minDate !== false && start < minDate) || (customDateSettings && customDateSettings[0] === false)) { + classes.push('xdsoft_disabled'); + } else if (options.disabledDates.indexOf(start.dateFormat(options.formatDate)) !== -1) { + classes.push('xdsoft_disabled'); + } + + if (customDateSettings && customDateSettings[1] !== "") { + classes.push(customDateSettings[1]); + } + + if (_xdsoft_datetime.currentTime.getMonth() !== m) { + classes.push('xdsoft_other_month'); + } + + if ((options.defaultSelect || datetimepicker.data('changed')) && _xdsoft_datetime.currentTime.dateFormat(options.formatDate) === start.dateFormat(options.formatDate)) { + classes.push('xdsoft_current'); + } + + if (today.dateFormat(options.formatDate) === start.dateFormat(options.formatDate)) { + classes.push('xdsoft_today'); + } + + if (start.getDay() === 0 || start.getDay() === 6 || options.weekends.indexOf(start.dateFormat(options.formatDate)) !== -1) { + classes.push('xdsoft_weekend'); + } + + if (options.highlightedDates[start.dateFormat(options.formatDate)] !== undefined) { + hDate = options.highlightedDates[start.dateFormat(options.formatDate)]; + classes.push(hDate.style === undefined ? 'xdsoft_highlighted_default' : hDate.style); + description = hDate.desc === undefined ? '' : hDate.desc; + } + + if (options.beforeShowDay && $.isFunction(options.beforeShowDay)) { + classes.push(options.beforeShowDay(start)); + } + + if (newRow) { + table += ''; + newRow = false; + if (options.weeks) { + table += ''; + } + } + + table += ''; + + if (start.getDay() === options.dayOfWeekStartPrev) { + table += ''; + newRow = true; + } + + start.setDate(d + 1); + } + table += '
      ' + options.i18n[options.lang].dayOfWeek[(j + options.dayOfWeekStart) % 7] + '
      ' + w + '' + + '
      ' + d + '
      ' + + '
      '; + + calendar.html(table); + + mounth_picker.find('.xdsoft_label span').eq(0).text(options.i18n[options.lang].months[_xdsoft_datetime.currentTime.getMonth()]); + mounth_picker.find('.xdsoft_label span').eq(1).text(_xdsoft_datetime.currentTime.getFullYear()); + + // generate timebox + time = ''; + h = ''; + m = ''; + line_time = function line_time(h, m) { + var now = _xdsoft_datetime.now(), optionDateTime, current_time; + now.setHours(h); + h = parseInt(now.getHours(), 10); + now.setMinutes(m); + m = parseInt(now.getMinutes(), 10); + optionDateTime = new Date(_xdsoft_datetime.currentTime); + optionDateTime.setHours(h); + optionDateTime.setMinutes(m); + classes = []; + if ((options.minDateTime !== false && options.minDateTime > optionDateTime) || (options.maxTime !== false && _xdsoft_datetime.strtotime(options.maxTime).getTime() < now.getTime()) || (options.minTime !== false && _xdsoft_datetime.strtotime(options.minTime).getTime() > now.getTime())) { + classes.push('xdsoft_disabled'); + } + + current_time = new Date(_xdsoft_datetime.currentTime); + current_time.setHours(parseInt(_xdsoft_datetime.currentTime.getHours(), 10)); + current_time.setMinutes(Math[options.roundTime](_xdsoft_datetime.currentTime.getMinutes() / options.step) * options.step); + + if ((options.initTime || options.defaultSelect || datetimepicker.data('changed')) && current_time.getHours() === parseInt(h, 10) && (options.step > 59 || current_time.getMinutes() === parseInt(m, 10))) { + if (options.defaultSelect || datetimepicker.data('changed')) { + classes.push('xdsoft_current'); + } else if (options.initTime) { + classes.push('xdsoft_init_time'); + } + } + if (parseInt(today.getHours(), 10) === parseInt(h, 10) && parseInt(today.getMinutes(), 10) === parseInt(m, 10)) { + classes.push('xdsoft_today'); + } + time += '
      ' + now.dateFormat(options.formatTime) + '
      '; + }; + + if (!options.allowTimes || !$.isArray(options.allowTimes) || !options.allowTimes.length) { + for (i = 0, j = 0; i < (options.hours12 ? 12 : 24); i += 1) { + for (j = 0; j < 60; j += options.step) { + h = (i < 10 ? '0' : '') + i; + m = (j < 10 ? '0' : '') + j; + line_time(h, m); + } + } + } else { + for (i = 0; i < options.allowTimes.length; i += 1) { + h = _xdsoft_datetime.strtotime(options.allowTimes[i]).getHours(); + m = _xdsoft_datetime.strtotime(options.allowTimes[i]).getMinutes(); + line_time(h, m); + } + } + + timebox.html(time); + + opt = ''; + i = 0; + + for (i = parseInt(options.yearStart, 10) + options.yearOffset; i <= parseInt(options.yearEnd, 10) + options.yearOffset; i += 1) { + opt += '
      ' + i + '
      '; + } + yearselect.children().eq(0) + .html(opt); + + for (i = parseInt(options.monthStart, 10), opt = ''; i <= parseInt(options.monthEnd, 10); i += 1) { + opt += '
      ' + options.i18n[options.lang].months[i] + '
      '; + } + monthselect.children().eq(0).html(opt); + $(datetimepicker) + .trigger('generate.xdsoft'); + }, 10); + event.stopPropagation(); + }) + .on('afterOpen.xdsoft', function () { + if (options.timepicker) { + var classType, pheight, height, top; + if (timebox.find('.xdsoft_current').length) { + classType = '.xdsoft_current'; + } else if (timebox.find('.xdsoft_init_time').length) { + classType = '.xdsoft_init_time'; + } + if (classType) { + pheight = timeboxparent[0].clientHeight; + height = timebox[0].offsetHeight; + top = timebox.find(classType).index() * options.timeHeightInTimePicker + 1; + if ((height - pheight) < top) { + top = height - pheight; + } + timeboxparent.trigger('scroll_element.xdsoft_scroller', [parseInt(top, 10) / (height - pheight)]); + } else { + timeboxparent.trigger('scroll_element.xdsoft_scroller', [0]); + } + } + }); + + timerclick = 0; + calendar + .on('click.xdsoft', 'td', function (xdevent) { + xdevent.stopPropagation(); // Prevents closing of Pop-ups, Modals and Flyouts in Bootstrap + timerclick += 1; + var $this = $(this), + currentTime = _xdsoft_datetime.currentTime; + + if (currentTime === undefined || currentTime === null) { + _xdsoft_datetime.currentTime = _xdsoft_datetime.now(); + currentTime = _xdsoft_datetime.currentTime; + } + + if ($this.hasClass('xdsoft_disabled')) { + return false; + } + + currentTime.setDate(1); + currentTime.setFullYear($this.data('year')); + currentTime.setMonth($this.data('month')); + currentTime.setDate($this.data('date')); + + datetimepicker.trigger('select.xdsoft', [currentTime]); + + input.val(_xdsoft_datetime.str()); + if ((timerclick > 1 || (options.closeOnDateSelect === true || (options.closeOnDateSelect === 0 && !options.timepicker))) && !options.inline) { + datetimepicker.trigger('close.xdsoft'); + } + + if (options.onSelectDate && $.isFunction(options.onSelectDate)) { + options.onSelectDate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent); + } + + datetimepicker.data('changed', true); + datetimepicker.trigger('xchange.xdsoft'); + datetimepicker.trigger('changedatetime.xdsoft'); + setTimeout(function () { + timerclick = 0; + }, 200); + }); + + timebox + .on('click.xdsoft', 'div', function (xdevent) { + xdevent.stopPropagation(); + var $this = $(this), + currentTime = _xdsoft_datetime.currentTime; + + if (currentTime === undefined || currentTime === null) { + _xdsoft_datetime.currentTime = _xdsoft_datetime.now(); + currentTime = _xdsoft_datetime.currentTime; + } + + if ($this.hasClass('xdsoft_disabled')) { + return false; + } + currentTime.setHours($this.data('hour')); + currentTime.setMinutes($this.data('minute')); + datetimepicker.trigger('select.xdsoft', [currentTime]); + + datetimepicker.data('input').val(_xdsoft_datetime.str()); + + if (options.inline !== true && options.closeOnTimeSelect === true) { + datetimepicker.trigger('close.xdsoft'); + } + + if (options.onSelectTime && $.isFunction(options.onSelectTime)) { + options.onSelectTime.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent); + } + datetimepicker.data('changed', true); + datetimepicker.trigger('xchange.xdsoft'); + datetimepicker.trigger('changedatetime.xdsoft'); + }); + + + datepicker + .on('mousewheel.xdsoft', function (event) { + if (!options.scrollMonth) { + return true; + } + if (event.deltaY < 0) { + _xdsoft_datetime.nextMonth(); + } else { + _xdsoft_datetime.prevMonth(); + } + return false; + }); + + input + .on('mousewheel.xdsoft', function (event) { + if (!options.scrollInput) { + return true; + } + if (!options.datepicker && options.timepicker) { + current_time_index = timebox.find('.xdsoft_current').length ? timebox.find('.xdsoft_current').eq(0).index() : 0; + if (current_time_index + event.deltaY >= 0 && current_time_index + event.deltaY < timebox.children().length) { + current_time_index += event.deltaY; + } + if (timebox.children().eq(current_time_index).length) { + timebox.children().eq(current_time_index).trigger('mousedown'); + } + return false; + } + if (options.datepicker && !options.timepicker) { + datepicker.trigger(event, [event.deltaY, event.deltaX, event.deltaY]); + if (input.val) { + input.val(_xdsoft_datetime.str()); + } + datetimepicker.trigger('changedatetime.xdsoft'); + return false; + } + }); + + datetimepicker + .on('changedatetime.xdsoft', function (event) { + if (options.onChangeDateTime && $.isFunction(options.onChangeDateTime)) { + var $input = datetimepicker.data('input'); + options.onChangeDateTime.call(datetimepicker, _xdsoft_datetime.currentTime, $input, event); + delete options.value; + $input.trigger('change'); + } + }) + .on('generate.xdsoft', function () { + if (options.onGenerate && $.isFunction(options.onGenerate)) { + options.onGenerate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); + } + if (triggerAfterOpen) { + datetimepicker.trigger('afterOpen.xdsoft'); + triggerAfterOpen = false; + } + }) + .on('click.xdsoft', function (xdevent) { + xdevent.stopPropagation(); + }); + + current_time_index = 0; + + setPos = function () { + var offset = datetimepicker.data('input').offset(), top = offset.top + datetimepicker.data('input')[0].offsetHeight - 1, left = offset.left, position = "absolute"; + if (options.fixed) { + top -= $(window).scrollTop(); + left -= $(window).scrollLeft(); + position = "fixed"; + } else { + if (top + datetimepicker[0].offsetHeight > $(window).height() + $(window).scrollTop()) { + top = offset.top - datetimepicker[0].offsetHeight + 1; + } + if (top < 0) { + top = 0; + } + if (left + datetimepicker[0].offsetWidth > $(window).width()) { + left = $(window).width() - datetimepicker[0].offsetWidth; + } + } + var node = datetimepicker[0] + do { + node = node.parentNode; + if(window.getComputedStyle(node).getPropertyValue('position') === 'relative' && $(window).width() >= node.offsetWidth) { + left = left - (($(window).width() - node.offsetWidth)/2) + break + } + } while(node.nodeName != 'HTML') + datetimepicker.css({ + left: left, + top: top, + position: position + }); + }; + datetimepicker + .on('open.xdsoft', function (event) { + var onShow = true; + if (options.onShow && $.isFunction(options.onShow)) { + onShow = options.onShow.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event); + } + if (onShow !== false) { + datetimepicker.show(); + setPos(); + $(window) + .off('resize.xdsoft', setPos) + .on('resize.xdsoft', setPos); + + if (options.closeOnWithoutClick) { + $([document.body, window]).on('mousedown.xdsoft', function arguments_callee6() { + datetimepicker.trigger('close.xdsoft'); + $([document.body, window]).off('mousedown.xdsoft', arguments_callee6); + }); + } + } + }) + .on('close.xdsoft', function (event) { + var onClose = true; + mounth_picker + .find('.xdsoft_month,.xdsoft_year') + .find('.xdsoft_select') + .hide(); + if (options.onClose && $.isFunction(options.onClose)) { + onClose = options.onClose.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event); + } + if (onClose !== false && !options.opened && !options.inline) { + datetimepicker.hide(); + } + event.stopPropagation(); + }) + .on('toggle.xdsoft', function (event) { + if (datetimepicker.is(':visible')) { + datetimepicker.trigger('close.xdsoft'); + } else { + datetimepicker.trigger('open.xdsoft'); + } + }) + .data('input', input); + + timer = 0; + timer1 = 0; + + datetimepicker.data('xdsoft_datetime', _xdsoft_datetime); + datetimepicker.setOptions(options); + + function getCurrentValue() { + var ct = false, time; + + if (options.startDate) { + ct = _xdsoft_datetime.strToDate(options.startDate); + } else { + ct = options.value || ((input && input.val && input.val()) ? input.val() : ''); + if (ct) { + ct = _xdsoft_datetime.strToDateTime(ct); + } else if (options.defaultDate) { + ct = _xdsoft_datetime.strToDateTime(options.defaultDate); + if (options.defaultTime) { + time = _xdsoft_datetime.strtotime(options.defaultTime); + ct.setHours(time.getHours()); + ct.setMinutes(time.getMinutes()); + } + } + } + + if (ct && _xdsoft_datetime.isValidDate(ct)) { + datetimepicker.data('changed', true); + } else { + ct = ''; + } + + return ct || 0; + } + + _xdsoft_datetime.setCurrentTime(getCurrentValue()); + + input + .data('xdsoft_datetimepicker', datetimepicker) + .on('open.xdsoft focusin.xdsoft mousedown.xdsoft', function (event) { + if (input.is(':disabled') || (input.data('xdsoft_datetimepicker').is(':visible') && options.closeOnInputClick)) { + return; + } + clearTimeout(timer); + timer = setTimeout(function () { + if (input.is(':disabled')) { + return; + } + + triggerAfterOpen = true; + _xdsoft_datetime.setCurrentTime(getCurrentValue()); + + datetimepicker.trigger('open.xdsoft'); + }, 100); + }) + .on('keydown.xdsoft', function (event) { + var val = this.value, elementSelector, + key = event.which; + if ([ENTER].indexOf(key) !== -1 && options.enterLikeTab) { + elementSelector = $("input:visible,textarea:visible"); + datetimepicker.trigger('close.xdsoft'); + elementSelector.eq(elementSelector.index(this) + 1).focus(); + return false; + } + if ([TAB].indexOf(key) !== -1) { + datetimepicker.trigger('close.xdsoft'); + return true; + } + }); + }; + destroyDateTimePicker = function (input) { + var datetimepicker = input.data('xdsoft_datetimepicker'); + if (datetimepicker) { + datetimepicker.data('xdsoft_datetime', null); + datetimepicker.remove(); + input + .data('xdsoft_datetimepicker', null) + .off('.xdsoft'); + $(window).off('resize.xdsoft'); + $([window, document.body]).off('mousedown.xdsoft'); + if (input.unmousewheel) { + input.unmousewheel(); + } + } + }; + $(document) + .off('keydown.xdsoftctrl keyup.xdsoftctrl') + .on('keydown.xdsoftctrl', function (e) { + if (e.keyCode === CTRLKEY) { + ctrlDown = true; + } + }) + .on('keyup.xdsoftctrl', function (e) { + if (e.keyCode === CTRLKEY) { + ctrlDown = false; + } + }); + return this.each(function () { + var datetimepicker = $(this).data('xdsoft_datetimepicker'), $input; + if (datetimepicker) { + if ($.type(opt) === 'string') { + switch (opt) { + case 'show': + $(this).select().focus(); + datetimepicker.trigger('open.xdsoft'); + break; + case 'hide': + datetimepicker.trigger('close.xdsoft'); + break; + case 'toggle': + datetimepicker.trigger('toggle.xdsoft'); + break; + case 'destroy': + destroyDateTimePicker($(this)); + break; + case 'reset': + this.value = this.defaultValue; + if (!this.value || !datetimepicker.data('xdsoft_datetime').isValidDate(Date.parseDate(this.value, options.format))) { + datetimepicker.data('changed', false); + } + datetimepicker.data('xdsoft_datetime').setCurrentTime(this.value); + break; + case 'validate': + $input = datetimepicker.data('input'); + $input.trigger('blur.xdsoft'); + break; + } + } else { + datetimepicker + .setOptions(opt); + } + return 0; + } + if ($.type(opt) !== 'string') { + if (!options.lazyInit || options.open || options.inline) { + createDateTimePicker($(this)); + } else { + lazyInit($(this)); + } + } + }); + }; + $.fn.datetimepicker.defaults = default_options; +}(jQuery)); + +function HighlightedDate(date, desc, style) { + "use strict"; + this.date = date; + this.desc = desc; + this.style = style; +} + +(function () { + +/*! Copyright (c) 2013 Brandon Aaron (http://brandon.aaron.sh) + * Licensed under the MIT License (LICENSE.txt). + * + * Version: 3.1.12 + * + * Requires: jQuery 1.2.2+ + */ +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}); + +// Parse and Format Library +//http://www.xaprb.com/blog/2005/12/12/javascript-closures-for-runtime-efficiency/ +/* + * Copyright (C) 2004 Baron Schwartz + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, version 2.1. + * + * This program 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 GNU Lesser General Public License for more + * details. + */ +Date.parseFunctions={count:0};Date.parseRegexes=[];Date.formatFunctions={count:0};Date.prototype.dateFormat=function(b){if(b=="unixtime"){return parseInt(this.getTime()/1000);}if(Date.formatFunctions[b]==null){Date.createNewFormat(b);}var a=Date.formatFunctions[b];return this[a]();};Date.createNewFormat=function(format){var funcName="format"+Date.formatFunctions.count++;Date.formatFunctions[format]=funcName;var codePrefix="Date.prototype."+funcName+" = function() {return ";var code="";var special=false;var ch="";for(var i=0;i 0) {";var regex="";var special=false;var ch="";for(var i=0;i 0 && z > 0){\nvar doyDate = new Date(y,0);\ndoyDate.setDate(z);\nm = doyDate.getMonth();\nd = doyDate.getDate();\n}";code+="if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n{return new Date(y, m, d, h, i, s);}\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n{return new Date(y, m, d, h, i);}\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0)\n{return new Date(y, m, d, h);}\nelse if (y > 0 && m >= 0 && d > 0)\n{return new Date(y, m, d);}\nelse if (y > 0 && m >= 0)\n{return new Date(y, m);}\nelse if (y > 0)\n{return new Date(y);}\n}return null;}";Date.parseRegexes[regexNum]=new RegExp("^"+regex+"$",'i');eval(code);};Date.formatCodeToRegex=function(b,a){switch(b){case"D":return{g:0,c:null,s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};case"j":case"d":return{g:1,c:"d = parseInt(results["+a+"], 10);\n",s:"(\\d{1,2})"};case"l":return{g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"};case"S":return{g:0,c:null,s:"(?:st|nd|rd|th)"};case"w":return{g:0,c:null,s:"\\d"};case"z":return{g:1,c:"z = parseInt(results["+a+"], 10);\n",s:"(\\d{1,3})"};case"W":return{g:0,c:null,s:"(?:\\d{2})"};case"F":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+a+"].substring(0, 3)], 10);\n",s:"("+Date.monthNames.join("|")+")"};case"M":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+a+"]], 10);\n",s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};case"n":case"m":return{g:1,c:"m = parseInt(results["+a+"], 10) - 1;\n",s:"(\\d{1,2})"};case"t":return{g:0,c:null,s:"\\d{1,2}"};case"L":return{g:0,c:null,s:"(?:1|0)"};case"Y":return{g:1,c:"y = parseInt(results["+a+"], 10);\n",s:"(\\d{4})"};case"y":return{g:1,c:"var ty = parseInt(results["+a+"], 10);\ny = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"};case"a":return{g:1,c:"if (results["+a+"] == 'am') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(am|pm)"};case"A":return{g:1,c:"if (results["+a+"] == 'AM') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(AM|PM)"};case"g":case"G":case"h":case"H":return{g:1,c:"h = parseInt(results["+a+"], 10);\n",s:"(\\d{1,2})"};case"i":return{g:1,c:"i = parseInt(results["+a+"], 10);\n",s:"(\\d{2})"};case"s":return{g:1,c:"s = parseInt(results["+a+"], 10);\n",s:"(\\d{2})"};case"O":return{g:0,c:null,s:"[+-]\\d{4}"};case"T":return{g:0,c:null,s:"[A-Z]{3}"};case"Z":return{g:0,c:null,s:"[+-]\\d{1,5}"};default:return{g:0,c:null,s:String.escape(b)};}};Date.prototype.getTimezone=function(){return this.toString().replace(/^.*? ([A-Z]{3}) [0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3");};Date.prototype.getGMTOffset=function(){return(this.getTimezoneOffset()>0?"-":"+")+String.leftPad(Math.floor(Math.abs(this.getTimezoneOffset())/60),2,"0")+String.leftPad(Math.abs(this.getTimezoneOffset())%60,2,"0");};Date.prototype.getDayOfYear=function(){var a=0;Date.daysInMonth[1]=this.isLeapYear()?29:28;for(var b=0;ba?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="
      ",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(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 g.call(b,a)>=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=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},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=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.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:l,!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}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,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))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}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=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))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?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):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 D(a,b){while((a=a[b])&&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 D(a,"nextSibling")},prev:function(a){return D(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 a.contentDocument||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&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(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&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};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 H;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){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;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};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+Math.random()}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),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){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b) +},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),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=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(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 L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.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=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=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(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.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=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(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,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!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(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*\s*$/g,ib={option:[1,""],thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(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 kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=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=jb(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=jb(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(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(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(ob(a,!1)),a.textContent="");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 J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(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(ob(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,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.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(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}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=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("
    • 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 E0D4MZ&;S4c literal 0 HcmV?d00001 diff --git a/static_new/silk/fonts/fantasque/FantasqueSansMono-BoldItalic.woff b/static_new/silk/fonts/fantasque/FantasqueSansMono-BoldItalic.woff new file mode 100644 index 0000000000000000000000000000000000000000..13d252a9874a0c402d1e9a7b2029245b9cf0782e GIT binary patch literal 55648 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 X__yn3r{^G9JyN6mOX4rVune03M!q14 literal 0 HcmV?d00001 diff --git a/static_new/silk/fonts/fantasque/FantasqueSansMono-RegItalic.woff b/static_new/silk/fonts/fantasque/FantasqueSansMono-RegItalic.woff new file mode 100644 index 0000000000000000000000000000000000000000..1a19705bfe25f8a18c2ee7bfd33049653c60ba91 GIT binary patch literal 56336 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 literal 0 HcmV?d00001 diff --git a/static_new/silk/fonts/fantasque/FantasqueSansMono-Regular.woff b/static_new/silk/fonts/fantasque/FantasqueSansMono-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..02ebd95aca993d45a8db82bb19204fa7651f898e GIT binary patch literal 52092 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�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�SAfeAp&YbVJHO!xxKzVls+ZmIOtBEd~Mj^`%JE; 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 literal 0 HcmV?d00001 diff --git a/static_new/admin/fonts/Roboto-Regular-webfont.woff b/static_new/admin/fonts/Roboto-Regular-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..96c1986f01459bc3b7ca8e18fc06785e5e35dc45 GIT binary patch literal 85876 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 YL6htZCcLmfC1Z!aXXnWeQyf*20Ac;`*Z=?k literal 0 HcmV?d00001 diff --git a/static_new/admin/img/LICENSE b/static_new/admin/img/LICENSE new file mode 100644 index 00000000..a4faaa1d --- /dev/null +++ b/static_new/admin/img/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2014 Code Charm Ltd + +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/static_new/admin/img/README.txt b/static_new/admin/img/README.txt new file mode 100644 index 00000000..4eb2e492 --- /dev/null +++ b/static_new/admin/img/README.txt @@ -0,0 +1,7 @@ +All icons are taken from Font Awesome (http://fontawesome.io/) project. +The Font Awesome font is licensed under the SIL OFL 1.1: +- https://scripts.sil.org/OFL + +SVG icons source: https://github.com/encharm/Font-Awesome-SVG-PNG +Font-Awesome-SVG-PNG is licensed under the MIT license (see file license +in current folder). diff --git a/static_new/admin/img/calendar-icons.svg b/static_new/admin/img/calendar-icons.svg new file mode 100644 index 00000000..dbf21c39 --- /dev/null +++ b/static_new/admin/img/calendar-icons.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/static_new/admin/img/gis/move_vertex_off.svg b/static_new/admin/img/gis/move_vertex_off.svg new file mode 100644 index 00000000..228854f3 --- /dev/null +++ b/static_new/admin/img/gis/move_vertex_off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static_new/admin/img/gis/move_vertex_on.svg b/static_new/admin/img/gis/move_vertex_on.svg new file mode 100644 index 00000000..96b87fdd --- /dev/null +++ b/static_new/admin/img/gis/move_vertex_on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static_new/admin/img/icon-addlink.svg b/static_new/admin/img/icon-addlink.svg new file mode 100644 index 00000000..e004fb16 --- /dev/null +++ b/static_new/admin/img/icon-addlink.svg @@ -0,0 +1,3 @@ + + + diff --git a/static_new/admin/img/icon-alert.svg b/static_new/admin/img/icon-alert.svg new file mode 100644 index 00000000..e51ea83f --- /dev/null +++ b/static_new/admin/img/icon-alert.svg @@ -0,0 +1,3 @@ + + + diff --git a/static_new/admin/img/icon-calendar.svg b/static_new/admin/img/icon-calendar.svg new file mode 100644 index 00000000..97910a99 --- /dev/null +++ b/static_new/admin/img/icon-calendar.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static_new/admin/img/icon-changelink.svg b/static_new/admin/img/icon-changelink.svg new file mode 100644 index 00000000..bbb137aa --- /dev/null +++ b/static_new/admin/img/icon-changelink.svg @@ -0,0 +1,3 @@ + + + diff --git a/static_new/admin/img/icon-clock.svg b/static_new/admin/img/icon-clock.svg new file mode 100644 index 00000000..bf9985d3 --- /dev/null +++ b/static_new/admin/img/icon-clock.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static_new/admin/img/icon-deletelink.svg b/static_new/admin/img/icon-deletelink.svg new file mode 100644 index 00000000..4059b155 --- /dev/null +++ b/static_new/admin/img/icon-deletelink.svg @@ -0,0 +1,3 @@ + + + diff --git a/static_new/admin/img/icon-no.svg b/static_new/admin/img/icon-no.svg new file mode 100644 index 00000000..2e0d3832 --- /dev/null +++ b/static_new/admin/img/icon-no.svg @@ -0,0 +1,3 @@ + + + diff --git a/static_new/admin/img/icon-unknown-alt.svg b/static_new/admin/img/icon-unknown-alt.svg new file mode 100644 index 00000000..1c6b99fc --- /dev/null +++ b/static_new/admin/img/icon-unknown-alt.svg @@ -0,0 +1,3 @@ + + + diff --git a/static_new/admin/img/icon-unknown.svg b/static_new/admin/img/icon-unknown.svg new file mode 100644 index 00000000..50b4f972 --- /dev/null +++ b/static_new/admin/img/icon-unknown.svg @@ -0,0 +1,3 @@ + + + diff --git a/static_new/admin/img/icon-viewlink.svg b/static_new/admin/img/icon-viewlink.svg new file mode 100644 index 00000000..a1ca1d3f --- /dev/null +++ b/static_new/admin/img/icon-viewlink.svg @@ -0,0 +1,3 @@ + + + diff --git a/static_new/admin/img/icon-yes.svg b/static_new/admin/img/icon-yes.svg new file mode 100644 index 00000000..5883d877 --- /dev/null +++ b/static_new/admin/img/icon-yes.svg @@ -0,0 +1,3 @@ + + + diff --git a/static_new/admin/img/inline-delete.svg b/static_new/admin/img/inline-delete.svg new file mode 100644 index 00000000..17d1ad67 --- /dev/null +++ b/static_new/admin/img/inline-delete.svg @@ -0,0 +1,3 @@ + + + diff --git a/static_new/admin/img/search.svg b/static_new/admin/img/search.svg new file mode 100644 index 00000000..c8c69b2a --- /dev/null +++ b/static_new/admin/img/search.svg @@ -0,0 +1,3 @@ + + + diff --git a/static_new/admin/img/selector-icons.svg b/static_new/admin/img/selector-icons.svg new file mode 100644 index 00000000..926b8e21 --- /dev/null +++ b/static_new/admin/img/selector-icons.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static_new/admin/img/sorting-icons.svg b/static_new/admin/img/sorting-icons.svg new file mode 100644 index 00000000..7c31ec91 --- /dev/null +++ b/static_new/admin/img/sorting-icons.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/static_new/admin/img/tooltag-add.svg b/static_new/admin/img/tooltag-add.svg new file mode 100644 index 00000000..1ca64ae5 --- /dev/null +++ b/static_new/admin/img/tooltag-add.svg @@ -0,0 +1,3 @@ + + + diff --git a/static_new/admin/img/tooltag-arrowright.svg b/static_new/admin/img/tooltag-arrowright.svg new file mode 100644 index 00000000..b664d619 --- /dev/null +++ b/static_new/admin/img/tooltag-arrowright.svg @@ -0,0 +1,3 @@ + + + diff --git a/static_new/admin/js/SelectBox.js b/static_new/admin/js/SelectBox.js new file mode 100644 index 00000000..1927b4ce --- /dev/null +++ b/static_new/admin/js/SelectBox.js @@ -0,0 +1,110 @@ +'use strict'; +{ + const SelectBox = { + cache: {}, + init: function(id) { + const box = document.getElementById(id); + SelectBox.cache[id] = []; + const cache = SelectBox.cache[id]; + for (const node of box.options) { + cache.push({value: node.value, text: node.text, displayed: 1}); + } + }, + redisplay: function(id) { + // Repopulate HTML select box from cache + const box = document.getElementById(id); + box.innerHTML = ''; + for (const node of SelectBox.cache[id]) { + if (node.displayed) { + const new_option = new Option(node.text, node.value, false, false); + // Shows a tooltip when hovering over the option + new_option.title = node.text; + box.appendChild(new_option); + } + } + }, + filter: function(id, text) { + // Redisplay the HTML select box, displaying only the choices containing ALL + // the words in text. (It's an AND search.) + const tokens = text.toLowerCase().split(/\s+/); + for (const node of SelectBox.cache[id]) { + node.displayed = 1; + const node_text = node.text.toLowerCase(); + for (const token of tokens) { + if (node_text.indexOf(token) === -1) { + node.displayed = 0; + break; // Once the first token isn't found we're done + } + } + } + SelectBox.redisplay(id); + }, + delete_from_cache: function(id, value) { + let delete_index = null; + const cache = SelectBox.cache[id]; + for (const [i, node] of cache.entries()) { + if (node.value === value) { + delete_index = i; + break; + } + } + cache.splice(delete_index, 1); + }, + add_to_cache: function(id, option) { + SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1}); + }, + cache_contains: function(id, value) { + // Check if an item is contained in the cache + for (const node of SelectBox.cache[id]) { + if (node.value === value) { + return true; + } + } + return false; + }, + move: function(from, to) { + const from_box = document.getElementById(from); + for (const option of from_box.options) { + const option_value = option.value; + if (option.selected && SelectBox.cache_contains(from, option_value)) { + SelectBox.add_to_cache(to, {value: option_value, text: option.text, displayed: 1}); + SelectBox.delete_from_cache(from, option_value); + } + } + SelectBox.redisplay(from); + SelectBox.redisplay(to); + }, + move_all: function(from, to) { + const from_box = document.getElementById(from); + for (const option of from_box.options) { + const option_value = option.value; + if (SelectBox.cache_contains(from, option_value)) { + SelectBox.add_to_cache(to, {value: option_value, text: option.text, displayed: 1}); + SelectBox.delete_from_cache(from, option_value); + } + } + SelectBox.redisplay(from); + SelectBox.redisplay(to); + }, + sort: function(id) { + SelectBox.cache[id].sort(function(a, b) { + a = a.text.toLowerCase(); + b = b.text.toLowerCase(); + if (a > b) { + return 1; + } + if (a < b) { + return -1; + } + return 0; + } ); + }, + select_all: function(id) { + const box = document.getElementById(id); + for (const option of box.options) { + option.selected = true; + } + } + }; + window.SelectBox = SelectBox; +} diff --git a/static_new/admin/js/SelectFilter2.js b/static_new/admin/js/SelectFilter2.js new file mode 100644 index 00000000..6c709a08 --- /dev/null +++ b/static_new/admin/js/SelectFilter2.js @@ -0,0 +1,236 @@ +/*global SelectBox, gettext, interpolate, quickElement, SelectFilter*/ +/* +SelectFilter2 - Turns a multiple-select box into a filter interface. + +Requires core.js and SelectBox.js. +*/ +'use strict'; +{ + window.SelectFilter = { + init: function(field_id, field_name, is_stacked) { + if (field_id.match(/__prefix__/)) { + // Don't initialize on empty forms. + return; + } + const from_box = document.getElementById(field_id); + from_box.id += '_from'; // change its ID + from_box.className = 'filtered'; + + for (const p of from_box.parentNode.getElementsByTagName('p')) { + if (p.classList.contains("info")) { + // Remove