Compare commits
13 Commits
Author | SHA1 | Date |
---|---|---|
陈秀川 | 8340ec1aaf | 1 year ago |
陈秀川 | b390e17968 | 1 year ago |
陈秀川 | 0403f28529 | 1 year ago |
陈秀川 | 1773d2257a | 1 year ago |
陈秀川 | 1ad23c10b0 | 1 year ago |
陈秀川 | 73a7b471b4 | 1 year ago |
陈秀川 | c42e49ba7c | 1 year ago |
陈秀川 | cf27dc387b | 1 year ago |
陈秀川 | 9a7bfa8583 | 1 year ago |
陈秀川 | 9d1257a5de | 1 year ago |
陈秀川 | 0cfc10603a | 1 year ago |
pa9pff53x | 9bac728076 | 1 year ago |
pa9pff53x | 608f652538 | 1 year ago |
@ -1 +0,0 @@
|
|||||||
111
|
|
After Width: | Height: | Size: 514 KiB |
@ -0,0 +1,8 @@
|
|||||||
|
# 默认忽略的文件
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# 基于编辑器的 HTTP 客户端请求
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
@ -0,0 +1 @@
|
|||||||
|
asset.html
|
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||||
|
<data-source source="LOCAL" name="@localhost" uuid="4bbf9ab7-43eb-4fc4-af55-9d24b64eada3">
|
||||||
|
<driver-ref>mysql.8</driver-ref>
|
||||||
|
<synchronize>true</synchronize>
|
||||||
|
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
|
||||||
|
<jdbc-url>jdbc:mysql://localhost:3306</jdbc-url>
|
||||||
|
<working-dir>$ProjectFileDir$</working-dir>
|
||||||
|
</data-source>
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,13 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="lib">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/culture v1.0(2)/Back-office management/Widget/ueditor/1.4.3/jsp/lib/json.jar!/" />
|
||||||
|
<root url="jar://$PROJECT_DIR$/culture v1.0(2)/Back-office management/Widget/ueditor/1.4.3/jsp/lib/commons-codec-1.9.jar!/" />
|
||||||
|
<root url="jar://$PROJECT_DIR$/culture v1.0(2)/Back-office management/Widget/ueditor/1.4.3/jsp/lib/commons-io-2.4.jar!/" />
|
||||||
|
<root url="jar://$PROJECT_DIR$/culture v1.0(2)/Back-office management/Widget/ueditor/1.4.3/jsp/lib/ueditor-1.1.1.jar!/" />
|
||||||
|
<root url="jar://$PROJECT_DIR$/culture v1.0(2)/Back-office management/Widget/ueditor/1.4.3/jsp/lib/commons-fileupload-1.3.1.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES />
|
||||||
|
</library>
|
||||||
|
</component>
|
@ -0,0 +1,5 @@
|
|||||||
|
<project version="4">
|
||||||
|
<component name="ProjectRootManager">
|
||||||
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/wenchaung.iml" filepath="$PROJECT_DIR$/wenchaung.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="SqlDialectMappings">
|
||||||
|
<file url="file://$PROJECT_DIR$/Go/main.go" dialect="GenericSQL" />
|
||||||
|
<file url="PROJECT" dialect="MySQL" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,6 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
@ -0,0 +1 @@
|
|||||||
|
wenchuang.sql
|
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="Go" enabled="true" />
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://$MODULE_DIR$" />
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||||
|
<data-source source="LOCAL" name="wenchuang@localhost" uuid="1c8584d2-1bef-468b-9022-cf4da1eb7bf0">
|
||||||
|
<driver-ref>mysql.8</driver-ref>
|
||||||
|
<synchronize>true</synchronize>
|
||||||
|
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
|
||||||
|
<jdbc-url>jdbc:mysql://localhost:3306/wenchuang</jdbc-url>
|
||||||
|
<working-dir>$ProjectFileDir$</working-dir>
|
||||||
|
</data-source>
|
||||||
|
<data-source source="LOCAL" name="@localhost" uuid="b525260c-27c3-4d4a-a1ad-d07d39d94694">
|
||||||
|
<driver-ref>mysql.8</driver-ref>
|
||||||
|
<synchronize>true</synchronize>
|
||||||
|
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
|
||||||
|
<jdbc-url>jdbc:mysql://localhost:3306</jdbc-url>
|
||||||
|
<working-dir>$ProjectFileDir$</working-dir>
|
||||||
|
</data-source>
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/Go.iml" filepath="$PROJECT_DIR$/.idea/Go.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="SqlDialectMappings">
|
||||||
|
<file url="file://$PROJECT_DIR$/wenchuang.sql" dialect="MySQL" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,56 @@
|
|||||||
|
module wechuang
|
||||||
|
|
||||||
|
go 1.21.1
|
||||||
|
|
||||||
|
require github.com/qiniu/go-sdk/v7 v7.18.2
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/gin-contrib/cors v1.4.0
|
||||||
|
github.com/gin-gonic/gin v1.9.1
|
||||||
|
github.com/go-sql-driver/mysql v1.7.1
|
||||||
|
github.com/jinzhu/gorm v1.9.16
|
||||||
|
github.com/minio/minio-go/v7 v7.0.63
|
||||||
|
github.com/qwxingzhe/go-object-storage v0.0.0-20211008003114-a2b816ceeacf
|
||||||
|
gorm.io/driver/mysql v1.5.2
|
||||||
|
)
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/bytedance/sonic v1.10.1 // indirect
|
||||||
|
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d // indirect
|
||||||
|
github.com/chenzhuoyu/iasm v0.9.0 // indirect
|
||||||
|
github.com/dustin/go-humanize v1.0.1 // indirect
|
||||||
|
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
|
||||||
|
github.com/gin-contrib/sse v0.1.0 // indirect
|
||||||
|
github.com/go-playground/locales v0.14.1 // indirect
|
||||||
|
github.com/go-playground/universal-translator v0.18.1 // indirect
|
||||||
|
github.com/go-playground/validator/v10 v10.15.4 // indirect
|
||||||
|
github.com/goccy/go-json v0.10.2 // indirect
|
||||||
|
github.com/google/uuid v1.3.1 // indirect
|
||||||
|
github.com/jinzhu/inflection v1.0.0 // indirect
|
||||||
|
github.com/jinzhu/now v1.1.5 // indirect
|
||||||
|
github.com/json-iterator/go v1.1.12 // indirect
|
||||||
|
github.com/klauspost/compress v1.16.7 // indirect
|
||||||
|
github.com/klauspost/cpuid/v2 v2.2.5 // indirect
|
||||||
|
github.com/leodido/go-urn v1.2.4 // indirect
|
||||||
|
github.com/mattn/go-isatty v0.0.19 // indirect
|
||||||
|
github.com/minio/md5-simd v1.1.2 // indirect
|
||||||
|
github.com/minio/sha256-simd v1.0.1 // indirect
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||||
|
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||||
|
github.com/pelletier/go-toml/v2 v2.1.0 // indirect
|
||||||
|
github.com/qwxingzhe/go-file-type v0.0.0-20210904033909-9eb7f61e24f1 // indirect
|
||||||
|
github.com/rs/xid v1.5.0 // indirect
|
||||||
|
github.com/sirupsen/logrus v1.9.3 // indirect
|
||||||
|
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
|
||||||
|
github.com/ugorji/go/codec v1.2.11 // indirect
|
||||||
|
golang.org/x/arch v0.5.0 // indirect
|
||||||
|
golang.org/x/crypto v0.13.0 // indirect
|
||||||
|
golang.org/x/net v0.15.0 // indirect
|
||||||
|
golang.org/x/sync v0.4.0 // indirect
|
||||||
|
golang.org/x/sys v0.12.0 // indirect
|
||||||
|
golang.org/x/text v0.13.0 // indirect
|
||||||
|
google.golang.org/protobuf v1.31.0 // indirect
|
||||||
|
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
|
gorm.io/gorm v1.25.2-0.20230530020048-26663ab9bf55 // indirect
|
||||||
|
)
|
@ -0,0 +1,226 @@
|
|||||||
|
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
|
||||||
|
github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
|
||||||
|
github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
|
||||||
|
github.com/bytedance/sonic v1.10.0-rc/go.mod h1:ElCzW+ufi8qKqNW0FY314xriJhyJhuoJ3gFZdAHF7NM=
|
||||||
|
github.com/bytedance/sonic v1.10.1 h1:7a1wuFXL1cMy7a3f7/VFcEtriuXQnUBhtoVfOZiaysc=
|
||||||
|
github.com/bytedance/sonic v1.10.1/go.mod h1:iZcSUejdk5aukTND/Eu/ivjQuEL0Cu9/rf50Hi0u/g4=
|
||||||
|
github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY=
|
||||||
|
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
|
||||||
|
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d h1:77cEq6EriyTZ0g/qfRdp61a3Uu/AWrgIq2s0ClJV1g0=
|
||||||
|
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d/go.mod h1:8EPpVsBuRksnlj1mLy4AWzRNQYxauNi62uWcE3to6eA=
|
||||||
|
github.com/chenzhuoyu/iasm v0.9.0 h1:9fhXjVzq5hUy2gkhhgHl95zG2cEAhw9OSGs8toWWAwo=
|
||||||
|
github.com/chenzhuoyu/iasm v0.9.0/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog=
|
||||||
|
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd h1:83Wprp6ROGeiHFAP8WJdI2RoxALQYgdllERc3N5N2DM=
|
||||||
|
github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
|
||||||
|
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
||||||
|
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
||||||
|
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 h1:Yzb9+7DPaBjB8zlTR87/ElzFsnQfuHnVUVqpZZIcV5Y=
|
||||||
|
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0=
|
||||||
|
github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU=
|
||||||
|
github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA=
|
||||||
|
github.com/gin-contrib/cors v1.4.0 h1:oJ6gwtUl3lqV0WEIwM/LxPF1QZ5qe2lGWdY2+bz7y0g=
|
||||||
|
github.com/gin-contrib/cors v1.4.0/go.mod h1:bs9pNM0x/UsmHPBWT2xZz9ROh8xYjYkiURUfmBoMlcs=
|
||||||
|
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
|
||||||
|
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
|
||||||
|
github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk=
|
||||||
|
github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg=
|
||||||
|
github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
|
||||||
|
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
|
||||||
|
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
|
||||||
|
github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
|
||||||
|
github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
|
||||||
|
github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
|
||||||
|
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
|
||||||
|
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
|
||||||
|
github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
|
||||||
|
github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
|
||||||
|
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
|
||||||
|
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
|
||||||
|
github.com/go-playground/validator/v10 v10.8.0/go.mod h1:9JhgTzTaE31GZDpH/HSvHiRJrJ3iKAgqqH0Bl/Ocjdk=
|
||||||
|
github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos=
|
||||||
|
github.com/go-playground/validator/v10 v10.15.4 h1:zMXza4EpOdooxPel5xDqXEdXG5r+WggpvnAKMsalBjs=
|
||||||
|
github.com/go-playground/validator/v10 v10.15.4/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
|
||||||
|
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
||||||
|
github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
|
||||||
|
github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=
|
||||||
|
github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
|
||||||
|
github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
|
||||||
|
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
|
||||||
|
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
|
||||||
|
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY=
|
||||||
|
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
|
||||||
|
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||||
|
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
||||||
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||||
|
github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4=
|
||||||
|
github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o=
|
||||||
|
github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs=
|
||||||
|
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
|
||||||
|
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
|
||||||
|
github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
|
||||||
|
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
|
||||||
|
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
|
||||||
|
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||||
|
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||||
|
github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I=
|
||||||
|
github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
|
||||||
|
github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||||
|
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||||
|
github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg=
|
||||||
|
github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
|
||||||
|
github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
|
||||||
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
|
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
||||||
|
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
|
||||||
|
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
|
||||||
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
|
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||||
|
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||||
|
github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
|
||||||
|
github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q=
|
||||||
|
github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
|
||||||
|
github.com/lib/pq v1.1.1 h1:sJZmqHoEaY7f+NPP8pgLB/WxulyR3fewgCM2qaSlBb4=
|
||||||
|
github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
||||||
|
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
|
||||||
|
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
|
||||||
|
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||||
|
github.com/mattn/go-sqlite3 v1.14.0 h1:mLyGNKR8+Vv9CAU7PphKa2hkEqxxhn8i32J6FPj1/QA=
|
||||||
|
github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
|
||||||
|
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
|
||||||
|
github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
|
||||||
|
github.com/minio/minio-go/v7 v7.0.63 h1:GbZ2oCvaUdgT5640WJOpyDhhDxvknAJU2/T3yurwcbQ=
|
||||||
|
github.com/minio/minio-go/v7 v7.0.63/go.mod h1:Q6X7Qjb7WMhvG65qKf4gUgA5XaiSox74kR1uAEjxRS4=
|
||||||
|
github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
|
||||||
|
github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||||
|
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
|
||||||
|
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||||
|
github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo=
|
||||||
|
github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4=
|
||||||
|
github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
|
||||||
|
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/qiniu/dyn v1.3.0/go.mod h1:E8oERcm8TtwJiZvkQPbcAh0RL8jO1G0VXJMW3FAWdkk=
|
||||||
|
github.com/qiniu/go-sdk/v7 v7.18.2 h1:vk9eo5OO7aqgAOPF0Ytik/gt7CMKuNgzC/IPkhda6rk=
|
||||||
|
github.com/qiniu/go-sdk/v7 v7.18.2/go.mod h1:nqoYCNo53ZlGA521RvRethvxUDvXKt4gtYXOwye868w=
|
||||||
|
github.com/qiniu/x v1.10.5/go.mod h1:03Ni9tj+N2h2aKnAz+6N0Xfl8FwMEDRC2PAlxekASDs=
|
||||||
|
github.com/qwxingzhe/go-file-type v0.0.0-20210904033909-9eb7f61e24f1 h1:Y1q/Kv60666A8DGWBlUIUjwlXmu1dgypH4PVwSf3tUE=
|
||||||
|
github.com/qwxingzhe/go-file-type v0.0.0-20210904033909-9eb7f61e24f1/go.mod h1:Bpduqz+NKm2imxr5InLA61iSgVvXwIbB3WIk0+gYXHY=
|
||||||
|
github.com/qwxingzhe/go-object-storage v0.0.0-20211008003114-a2b816ceeacf h1:O83ZO3ZTJp8RI/AwQnRLAPOfPZsQg45r0w3cROKEIhU=
|
||||||
|
github.com/qwxingzhe/go-object-storage v0.0.0-20211008003114-a2b816ceeacf/go.mod h1:VHniFqA9a4TNxS5htWLLkwuXgUMAsRqNC6WNrm6wfMU=
|
||||||
|
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
|
||||||
|
github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
|
||||||
|
github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
|
||||||
|
github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc=
|
||||||
|
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
||||||
|
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
||||||
|
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||||
|
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||||
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
|
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||||
|
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
|
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
|
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
||||||
|
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||||
|
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
|
||||||
|
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
|
||||||
|
github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
|
||||||
|
github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
|
||||||
|
github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU=
|
||||||
|
github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
|
||||||
|
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||||
|
golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
|
||||||
|
golang.org/x/arch v0.5.0 h1:jpGode6huXQxcskEIpOCvrU+tzo81b6+oFLUYXWtH/Y=
|
||||||
|
golang.org/x/arch v0.5.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
|
||||||
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
|
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
|
golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
|
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
|
golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
|
||||||
|
golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck=
|
||||||
|
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
|
||||||
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||||
|
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||||
|
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
|
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
|
||||||
|
golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8=
|
||||||
|
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
|
||||||
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ=
|
||||||
|
golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
||||||
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
|
||||||
|
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
|
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||||
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
|
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||||
|
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
|
||||||
|
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
||||||
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||||
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||||
|
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||||
|
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
|
||||||
|
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||||
|
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||||
|
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
|
||||||
|
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||||
|
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
gorm.io/driver/mysql v1.5.2 h1:QC2HRskSE75wBuOxe0+iCkyJZ+RqpudsQtqkp+IMuXs=
|
||||||
|
gorm.io/driver/mysql v1.5.2/go.mod h1:pQLhh1Ut/WUAySdTHwBpBv6+JKcj+ua4ZFx1QQTBzb8=
|
||||||
|
gorm.io/gorm v1.25.2-0.20230530020048-26663ab9bf55 h1:sC1Xj4TYrLqg1n3AN10w871An7wJM0gzgcm8jkIkECQ=
|
||||||
|
gorm.io/gorm v1.25.2-0.20230530020048-26663ab9bf55/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
|
||||||
|
nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
|
||||||
|
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
|
@ -0,0 +1,751 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/qiniu/go-sdk/v7/auth/qbox"
|
||||||
|
"github.com/qiniu/go-sdk/v7/storage"
|
||||||
|
"golang.org/x/net/context"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
|
//"golang.org/x/crypto/openpgp/packet"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
_ "database/sql"
|
||||||
|
|
||||||
|
_ "gorm.io/driver/mysql"
|
||||||
|
_ "os"
|
||||||
|
|
||||||
|
_ "github.com/qwxingzhe/go-object-storage"
|
||||||
|
_ "github.com/qwxingzhe/go-object-storage/drives"
|
||||||
|
|
||||||
|
"github.com/gin-contrib/cors"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
_ "github.com/go-sql-driver/mysql"
|
||||||
|
"github.com/jinzhu/gorm"
|
||||||
|
|
||||||
|
_ "github.com/qiniu/go-sdk/v7/auth"
|
||||||
|
_ "github.com/qiniu/go-sdk/v7/storage"
|
||||||
|
)
|
||||||
|
|
||||||
|
type User struct {
|
||||||
|
gorm.Model
|
||||||
|
Name string `gorm:"varchar(255);not null"`
|
||||||
|
Password string `gorm:"size:255;not null"`
|
||||||
|
//status string `gorm:"size:255"`
|
||||||
|
//set_passage_number string `gorm:"size:255"`
|
||||||
|
//look_passage_number string `gorm:"size:255"`
|
||||||
|
//_level string `gorm:"size:255"`
|
||||||
|
Profilepicture string `gorm:"varchar(255);not null"`
|
||||||
|
Phone string `gorm:"size:255;not null"`
|
||||||
|
Type string `gorm:"size:255;not null"`
|
||||||
|
Mail string `gorm:"size:255;not null"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Passages struct {
|
||||||
|
gorm.Model
|
||||||
|
Name string `gorm:"varchar(255);not null"`
|
||||||
|
Title string `gorm:"varchar(255);not null"`
|
||||||
|
Passage string `gorm:"varchar(15000);not null"`
|
||||||
|
Type string `gorm:"varchar(255);not null"`
|
||||||
|
User_id int `gorm:" int ;not null"`
|
||||||
|
Cover string `gorm:"varchar(255);not null"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Managers struct {
|
||||||
|
gorm.Model
|
||||||
|
Name string `gorm:"varchar(255);not null"`
|
||||||
|
Password string `gorm:"size:255;not null"`
|
||||||
|
Phone string `gorm:"size:255;not null"`
|
||||||
|
Type string `gorm:"size:255;not null"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Advertisements struct {
|
||||||
|
gorm.Model
|
||||||
|
Title string `gorm:"varchar(255);not null"`
|
||||||
|
Cover string `gorm:"varchar(255);not null"`
|
||||||
|
Targetadd string `gorm:"varchar(255);not null"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Pictures struct {
|
||||||
|
gorm.Model
|
||||||
|
Userid string `gorm:"varchar(255);not null"`
|
||||||
|
Username string `gorm:"varchar(255);not null"`
|
||||||
|
Title string `gorm:"varchar(255);not null"`
|
||||||
|
Plocation string `gorm:"varchar(255);not null"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Passage struct {
|
||||||
|
gorm.Model
|
||||||
|
Name string `gorm:"varchar(255);not null"`
|
||||||
|
Title string `gorm:"varchar(255);not null"`
|
||||||
|
Type string `gorm:"varchar(255);not null"`
|
||||||
|
User_id int `gorm:" int ;not null"`
|
||||||
|
Cover string `gorm:"varchar(255);not null"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// var db1 *sql.DB //连接池对象
|
||||||
|
//func GetObjectStorage(isAutomaticProductionPath bool) *objectstorage.ObjectStorage {
|
||||||
|
// return &objectstorage.ObjectStorage{
|
||||||
|
// Drive: objectstoragedrives.Kodo{
|
||||||
|
// AccessKey: "GURPB1jK8_mxGBSgUlnWJUKERNMBmOX07iu23MmK",
|
||||||
|
// SecretKey: "vjWUkGFrKvuhuUj_ep8D-kgF9PBw0dC7pmIhDzvc",
|
||||||
|
// Bucket: "wenchuangbucket",
|
||||||
|
// },
|
||||||
|
// IsAutomaticProductionPath: isAutomaticProductionPath,
|
||||||
|
// FilePathPrefix: "image/",
|
||||||
|
// IsAppendExt: false,
|
||||||
|
// BaseUrl: "http://qynr9haq9.hd-bkt.clouddn.com/",
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
|
||||||
|
//获取初始化的数据库
|
||||||
|
db := InitDB()
|
||||||
|
//延迟关闭数据库
|
||||||
|
defer db.Close()
|
||||||
|
|
||||||
|
//创建一个默认的路由引擎
|
||||||
|
r := gin.Default()
|
||||||
|
|
||||||
|
config := cors.DefaultConfig()
|
||||||
|
config.AllowOrigins = []string{"*"}
|
||||||
|
r.Use(cors.New(config))
|
||||||
|
|
||||||
|
// 上传图片到七牛云存储
|
||||||
|
accessKey := "GURPB1jK8_mxGBSgUlnWJUKERNMBmOX07iu23MmK"
|
||||||
|
secretKey := "vjWUkGFrKvuhuUj_ep8D-kgF9PBw0dC7pmIhDzvc"
|
||||||
|
bucket := "wenchuangbucket"
|
||||||
|
|
||||||
|
putPolicy := storage.PutPolicy{
|
||||||
|
Scope: bucket,
|
||||||
|
ReturnBody: `{"key":"$(key)","hash":"$(etag)","fsize":$(fsize),"bucket":"$(bucket)","name":"$(x:name)"}`,
|
||||||
|
}
|
||||||
|
|
||||||
|
putPolicy.Expires = 2592000
|
||||||
|
mac := qbox.NewMac(accessKey, secretKey)
|
||||||
|
upToken := putPolicy.UploadToken(mac)
|
||||||
|
cfg := storage.Config{}
|
||||||
|
cfg.Region = &storage.ZoneHuabei
|
||||||
|
// 是否使用https域名
|
||||||
|
cfg.UseHTTPS = true
|
||||||
|
// 上传是否使用CDN上传加速
|
||||||
|
cfg.UseCdnDomains = false
|
||||||
|
formUploader := storage.NewFormUploader(&cfg)
|
||||||
|
putExtra := storage.PutExtra{}
|
||||||
|
ret := storage.PutRet{}
|
||||||
|
ImgUrl := "http://s3qgokzi8.hb-bkt.clouddn.com/"
|
||||||
|
|
||||||
|
//注册
|
||||||
|
r.POST("/register", func(ctx *gin.Context) {
|
||||||
|
|
||||||
|
//获取参数
|
||||||
|
name := ctx.PostForm("name")
|
||||||
|
password := ctx.PostForm("password")
|
||||||
|
picture, _ := ctx.FormFile("profilepicture")
|
||||||
|
phone := ctx.PostForm("phone")
|
||||||
|
type1 := ctx.PostForm("type")
|
||||||
|
mail := ctx.PostForm("mail")
|
||||||
|
|
||||||
|
//数据验证
|
||||||
|
if len(name) == 0 {
|
||||||
|
ctx.JSON(http.StatusUnprocessableEntity, gin.H{
|
||||||
|
"code": 422,
|
||||||
|
"message": "用户名不能为空",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(password) < 6 {
|
||||||
|
ctx.JSON(http.StatusUnprocessableEntity, gin.H{
|
||||||
|
"code": 422,
|
||||||
|
"message": "密码不能少于6位",
|
||||||
|
"password": password,
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(phone) < 11 {
|
||||||
|
ctx.JSON(http.StatusUnprocessableEntity, gin.H{
|
||||||
|
"code": 422,
|
||||||
|
"message": "电话不能少于11位",
|
||||||
|
"phone": phone,
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
src, err1 := picture.Open()
|
||||||
|
if err1 != nil {
|
||||||
|
ctx.JSON(http.StatusInternalServerError, gin.H{"error2": "result.Error.Error()"})
|
||||||
|
}
|
||||||
|
key := "profilepicture/" + phone
|
||||||
|
err := formUploader.Put(context.Background(), &ret, upToken, key, src, picture.Size, &putExtra)
|
||||||
|
if err != nil {
|
||||||
|
ctx.JSON(500, gin.H{"error1": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var profilepicture = ImgUrl + ret.Key
|
||||||
|
|
||||||
|
//创建用户
|
||||||
|
|
||||||
|
newUser := User{
|
||||||
|
Name: name,
|
||||||
|
Password: password,
|
||||||
|
Profilepicture: profilepicture,
|
||||||
|
Phone: phone,
|
||||||
|
Type: type1,
|
||||||
|
Mail: mail,
|
||||||
|
}
|
||||||
|
db.Create(&newUser)
|
||||||
|
|
||||||
|
//返回结果
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"code": 200,
|
||||||
|
"message": "注册成功",
|
||||||
|
"newUser": newUser,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
//用户登录
|
||||||
|
r.POST("/login", func(ctx *gin.Context) {
|
||||||
|
|
||||||
|
//获取参数
|
||||||
|
phone := ctx.PostForm("phone")
|
||||||
|
password := ctx.PostForm("password")
|
||||||
|
|
||||||
|
//数据验证
|
||||||
|
if len(password) < 6 {
|
||||||
|
ctx.JSON(http.StatusUnprocessableEntity, gin.H{
|
||||||
|
"code": 422,
|
||||||
|
"message": "密码不能少于6位",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var user User
|
||||||
|
db.Where("phone = ?", phone).First(&user)
|
||||||
|
if password != user.Password {
|
||||||
|
ctx.JSON(http.StatusUnprocessableEntity, gin.H{
|
||||||
|
"code": 422,
|
||||||
|
"message": "密码错误",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := ctx.ShouldBind(&user); err == nil {
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"message": "登录成功",
|
||||||
|
"user": user,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
ctx.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
//管理员注册
|
||||||
|
r.POST("/manageregister", func(ctx *gin.Context) {
|
||||||
|
|
||||||
|
//获取参数
|
||||||
|
name := ctx.PostForm("name")
|
||||||
|
password := ctx.PostForm("password")
|
||||||
|
phone := ctx.PostForm("phone")
|
||||||
|
type1 := ctx.PostForm("type")
|
||||||
|
|
||||||
|
//数据验证
|
||||||
|
if len(name) == 0 {
|
||||||
|
ctx.JSON(http.StatusUnprocessableEntity, gin.H{
|
||||||
|
"code": 422,
|
||||||
|
"message": "用户名不能为空",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(password) < 6 {
|
||||||
|
ctx.JSON(http.StatusUnprocessableEntity, gin.H{
|
||||||
|
"code": 422,
|
||||||
|
"message": "密码不能少于6位",
|
||||||
|
"password": password,
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//创建用户
|
||||||
|
|
||||||
|
newUser := Managers{
|
||||||
|
Name: name,
|
||||||
|
Password: password,
|
||||||
|
Phone: phone,
|
||||||
|
Type: type1,
|
||||||
|
}
|
||||||
|
db.Create(&newUser)
|
||||||
|
|
||||||
|
//返回结果
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"code": 200,
|
||||||
|
"message": "注册成功",
|
||||||
|
"manager": newUser,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
//管理员登陆
|
||||||
|
r.POST("/managerlogin", func(ctx *gin.Context) {
|
||||||
|
|
||||||
|
//获取参数
|
||||||
|
phone := ctx.PostForm("phone")
|
||||||
|
password := ctx.PostForm("password")
|
||||||
|
|
||||||
|
//数据验证
|
||||||
|
if len(password) < 6 {
|
||||||
|
ctx.JSON(http.StatusUnprocessableEntity, gin.H{
|
||||||
|
"code": 422,
|
||||||
|
"message": "密码不能少于6位",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var user Managers
|
||||||
|
db.Where("phone = ?", phone).First(&user)
|
||||||
|
if password != user.Password {
|
||||||
|
ctx.JSON(http.StatusUnprocessableEntity, gin.H{
|
||||||
|
"code": 422,
|
||||||
|
"message": "密码错误",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := ctx.ShouldBind(&user); err == nil {
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"manger": user,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
ctx.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
//删除用户
|
||||||
|
r.POST("/delete1", func(ctx *gin.Context) {
|
||||||
|
|
||||||
|
/////改成查询password
|
||||||
|
id := ctx.PostForm("id")
|
||||||
|
sqlStr := `delete from users where id=?`
|
||||||
|
err := db.Exec(sqlStr, id)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("delete faild,err:%v\n", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//返回结果
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"code": 200,
|
||||||
|
"message": "删除成功",
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
/////返回个人信息
|
||||||
|
r.GET("/information", func(ctx *gin.Context) {
|
||||||
|
phone := ctx.PostForm("phone")
|
||||||
|
var user User
|
||||||
|
db.Where("phone = ?", phone).First(&user)
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"user": user,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
//更新个人信息
|
||||||
|
r.POST("/upload", func(ctx *gin.Context) {
|
||||||
|
|
||||||
|
/////改成查询password
|
||||||
|
id := ctx.PostForm("id")
|
||||||
|
name := ctx.PostForm("name")
|
||||||
|
phone := ctx.PostForm("phone")
|
||||||
|
//true_name := ctx.PostForm("true_name")
|
||||||
|
mail := ctx.PostForm("mail")
|
||||||
|
picture, _ := ctx.FormFile("profilepicture")
|
||||||
|
|
||||||
|
src, err1 := picture.Open()
|
||||||
|
if err1 != nil {
|
||||||
|
ctx.JSON(http.StatusInternalServerError, gin.H{"error2": "result.Error.Error()"})
|
||||||
|
}
|
||||||
|
key := "profilepicture/" + phone
|
||||||
|
err := formUploader.Put(context.Background(), &ret, upToken, key, src, picture.Size, &putExtra)
|
||||||
|
if err != nil {
|
||||||
|
ctx.JSON(500, gin.H{"error1": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var profilepicture = ImgUrl + ret.Key
|
||||||
|
var users User
|
||||||
|
db.First(&users, "id = ?", id)
|
||||||
|
db.Model(&users).Updates(
|
||||||
|
User{
|
||||||
|
Name: name,
|
||||||
|
Phone: phone,
|
||||||
|
Profilepicture: profilepicture,
|
||||||
|
Mail: mail,
|
||||||
|
})
|
||||||
|
|
||||||
|
var user User
|
||||||
|
db.First(&user, "id = ?", id)
|
||||||
|
//返回结果
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"code": 200,
|
||||||
|
"message": "更新成功",
|
||||||
|
"user": user,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
//(管理员查找全部用户)
|
||||||
|
r.POST("/allinformation", func(ctx *gin.Context) {
|
||||||
|
var user []User
|
||||||
|
db.Find(&user)
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"user": user,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
//所有管理员
|
||||||
|
r.GET("/allmanager", func(ctx *gin.Context) {
|
||||||
|
var manager []Managers
|
||||||
|
db.Find(&manager)
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"manager": manager,
|
||||||
|
"number": len(manager),
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
/////上传文章(*****)
|
||||||
|
r.POST("/passage", func(ctx *gin.Context) {
|
||||||
|
|
||||||
|
//获取参数
|
||||||
|
user_id := ctx.PostForm("user_id")
|
||||||
|
passage := ctx.PostForm("passage")
|
||||||
|
title := ctx.PostForm("title")
|
||||||
|
types := ctx.PostForm("type")
|
||||||
|
name := ctx.PostForm("name")
|
||||||
|
picture, _ := ctx.FormFile("cover")
|
||||||
|
|
||||||
|
//file := map[string]string{
|
||||||
|
// "passage": passage,
|
||||||
|
//}
|
||||||
|
//bytes, _ := json.Marshal(file)
|
||||||
|
|
||||||
|
src, err1 := picture.Open()
|
||||||
|
if err1 != nil {
|
||||||
|
ctx.JSON(http.StatusInternalServerError, gin.H{"error2": "result.Error.Error()"})
|
||||||
|
}
|
||||||
|
|
||||||
|
key := "cover/" + title
|
||||||
|
err := formUploader.Put(context.Background(), &ret, upToken, key, src, picture.Size, &putExtra)
|
||||||
|
if err != nil {
|
||||||
|
ctx.JSON(500, gin.H{"error1": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
cover := ImgUrl + ret.Key
|
||||||
|
//创建文章
|
||||||
|
|
||||||
|
l, _ := strconv.Atoi(user_id)
|
||||||
|
newUser := Passages{
|
||||||
|
User_id: l,
|
||||||
|
Passage: passage,
|
||||||
|
Title: title,
|
||||||
|
Type: types,
|
||||||
|
Name: name,
|
||||||
|
Cover: cover,
|
||||||
|
}
|
||||||
|
db.Create(&newUser)
|
||||||
|
|
||||||
|
//返回结果
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"passage": newUser,
|
||||||
|
"code": 200,
|
||||||
|
"message": "保存成功",
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
//打开指定文章
|
||||||
|
r.POST("/passageinformation", func(ctx *gin.Context) {
|
||||||
|
id := ctx.PostForm("id")
|
||||||
|
var passage Passages
|
||||||
|
|
||||||
|
db.Where("id = ?", id).First(&passage)
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"passage": passage,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
//用户文章
|
||||||
|
r.POST("/userpassageinformation", func(ctx *gin.Context) {
|
||||||
|
|
||||||
|
var passage []Passages
|
||||||
|
user_id := ctx.PostForm("user_id")
|
||||||
|
|
||||||
|
db.Where("User_id = ?", user_id).Find(&passage)
|
||||||
|
//user_id := ctx.PostForm("user_id ")
|
||||||
|
//db.Find(&passage, "user_id = ?", user_id)
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"passage": passage,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
//文章编辑
|
||||||
|
r.POST("/uploadpassage", func(ctx *gin.Context) {
|
||||||
|
|
||||||
|
/////改成查询password
|
||||||
|
id := ctx.PostForm("id")
|
||||||
|
user_id := ctx.GetInt("user_id")
|
||||||
|
passage := ctx.PostForm("passage")
|
||||||
|
title := ctx.PostForm("title")
|
||||||
|
types := ctx.PostForm("type")
|
||||||
|
picture, _ := ctx.FormFile("cover")
|
||||||
|
|
||||||
|
var user Passages
|
||||||
|
db.First(&user, "id = ?", id)
|
||||||
|
|
||||||
|
src, err1 := picture.Open()
|
||||||
|
if err1 != nil {
|
||||||
|
ctx.JSON(http.StatusInternalServerError, gin.H{"error2": "result.Error.Error()"})
|
||||||
|
}
|
||||||
|
|
||||||
|
key := "cover/" + title
|
||||||
|
err := formUploader.Put(context.Background(), &ret, upToken, key, src, picture.Size, &putExtra)
|
||||||
|
if err != nil {
|
||||||
|
ctx.JSON(500, gin.H{"error1": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
cover := ImgUrl + ret.Key
|
||||||
|
|
||||||
|
db.Model(&user).Updates(
|
||||||
|
Passages{
|
||||||
|
User_id: user_id,
|
||||||
|
Passage: passage,
|
||||||
|
Title: title,
|
||||||
|
Type: types,
|
||||||
|
Cover: cover,
|
||||||
|
})
|
||||||
|
|
||||||
|
//返回结果
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"code": 200,
|
||||||
|
"message": "更新成功",
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
//删除文章
|
||||||
|
r.POST("/delete", func(ctx *gin.Context) {
|
||||||
|
id := ctx.PostForm("id")
|
||||||
|
sqlStr := `delete from passages where id=?`
|
||||||
|
err := db.Exec(sqlStr, id)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("delete faild,err:%v\n", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//返回结果
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"code": 200,
|
||||||
|
"message": "删除成功",
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
//文章查询()查全部////////////////////////
|
||||||
|
r.GET("/allpassageinformation", func(ctx *gin.Context) {
|
||||||
|
var passage []Passage
|
||||||
|
db.Table("passages").Find(&passage)
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"passage": passage,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
//上传图片
|
||||||
|
r.POST("/picture", func(ctx *gin.Context) {
|
||||||
|
username := ctx.PostForm("username")
|
||||||
|
userid := ctx.PostForm("userid")
|
||||||
|
picture, _ := ctx.FormFile("plocation")
|
||||||
|
title := ctx.PostForm("title")
|
||||||
|
|
||||||
|
src, err1 := picture.Open()
|
||||||
|
if err1 != nil {
|
||||||
|
ctx.JSON(http.StatusInternalServerError, gin.H{"error2": "result.Error.Error()"})
|
||||||
|
}
|
||||||
|
|
||||||
|
key := "image/" + title
|
||||||
|
err := formUploader.Put(context.Background(), &ret, upToken, key, src, picture.Size, &putExtra)
|
||||||
|
if err != nil {
|
||||||
|
ctx.JSON(500, gin.H{"error1": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
plocation := ImgUrl + ret.Key
|
||||||
|
// 存储图片路径到数据库
|
||||||
|
pictures := Pictures{
|
||||||
|
Userid: userid,
|
||||||
|
Username: username,
|
||||||
|
Plocation: plocation,
|
||||||
|
Title: title,
|
||||||
|
}
|
||||||
|
result := db.Create(&pictures)
|
||||||
|
if result.Error != nil {
|
||||||
|
ctx.JSON(http.StatusInternalServerError, gin.H{"error3": "result.Error.Error()"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := ctx.ShouldBind(&pictures); err == nil {
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"code": 200,
|
||||||
|
"picture": pictures,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
ctx.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
//用户图片
|
||||||
|
r.POST("/userpicture", func(ctx *gin.Context) {
|
||||||
|
userid := ctx.PostForm("userid")
|
||||||
|
|
||||||
|
var picture []Pictures
|
||||||
|
|
||||||
|
db.Where("userid = ?", userid).Find(&picture)
|
||||||
|
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"picture": picture,
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
//指定图片信息
|
||||||
|
r.POST("/pictureinformation", func(ctx *gin.Context) {
|
||||||
|
id := ctx.PostForm("id")
|
||||||
|
|
||||||
|
var picture Pictures
|
||||||
|
|
||||||
|
db.Where("id = ?", id).Find(&picture)
|
||||||
|
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"picture": picture,
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
//删除图片
|
||||||
|
r.POST("/deletepicture", func(ctx *gin.Context) {
|
||||||
|
|
||||||
|
id := ctx.PostForm("id")
|
||||||
|
sqlStr := `delete from pictures where id=?`
|
||||||
|
err := db.Exec(sqlStr, id)
|
||||||
|
if err != nil {
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
//返回结果
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"code": 200,
|
||||||
|
"message": "删除成功",
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
//所有图片
|
||||||
|
r.POST("/allpicture", func(ctx *gin.Context) {
|
||||||
|
var picture []Pictures
|
||||||
|
db.Find(&picture)
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"pictures": picture,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
//上传广告
|
||||||
|
r.POST("/advertisements", func(ctx *gin.Context) {
|
||||||
|
title := ctx.PostForm("title")
|
||||||
|
picture, _ := ctx.FormFile("cover")
|
||||||
|
targetadd := ctx.PostForm("targetadd")
|
||||||
|
|
||||||
|
src, err1 := picture.Open()
|
||||||
|
if err1 != nil {
|
||||||
|
ctx.JSON(http.StatusInternalServerError, gin.H{"error2": "result.Error.Error()"})
|
||||||
|
}
|
||||||
|
|
||||||
|
key := "acvertise/" + title
|
||||||
|
err := formUploader.Put(context.Background(), &ret, upToken, key, src, picture.Size, &putExtra)
|
||||||
|
if err != nil {
|
||||||
|
ctx.JSON(500, gin.H{"error1": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
cover := ImgUrl + ret.Key
|
||||||
|
// 存储图片路径到数据库
|
||||||
|
advertises := Advertisements{
|
||||||
|
Title: title,
|
||||||
|
Cover: cover,
|
||||||
|
Targetadd: targetadd,
|
||||||
|
}
|
||||||
|
result := db.Create(&advertises)
|
||||||
|
if result.Error != nil {
|
||||||
|
ctx.JSON(http.StatusInternalServerError, gin.H{"error3": "result.Error.Error()"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := ctx.ShouldBind(&advertises); err == nil {
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"code": 200,
|
||||||
|
"picture": advertises,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
ctx.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
//删除广告
|
||||||
|
r.POST("/deleteadvertise", func(ctx *gin.Context) {
|
||||||
|
id := ctx.PostForm("id")
|
||||||
|
sqlStr := `delete from advertisements where id=?`
|
||||||
|
err := db.Exec(sqlStr, id)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("delete faild,err:%v\n", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
//返回结果
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"code": 200,
|
||||||
|
"message": "删除成功",
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
r.POST("/alladvertisements", func(ctx *gin.Context) {
|
||||||
|
var advertise []Advertisements
|
||||||
|
db.Find(&advertise)
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{
|
||||||
|
"Code": 200,
|
||||||
|
"advertisements": advertise,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
//在88800端口启动服务
|
||||||
|
panic(r.Run(":8880"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func InitDB() *gorm.DB {
|
||||||
|
driverName := "mysql"
|
||||||
|
host := "127.0.0.1"
|
||||||
|
port := "3306"
|
||||||
|
database := "wenchuang"
|
||||||
|
username := "root"
|
||||||
|
password := "098poi..."
|
||||||
|
charset := "utf8"
|
||||||
|
args := fmt.Sprintf("%s:%s@(%s:%s)/%s?charset=%s&parseTime=true",
|
||||||
|
username,
|
||||||
|
password,
|
||||||
|
host,
|
||||||
|
port,
|
||||||
|
database,
|
||||||
|
charset)
|
||||||
|
|
||||||
|
db, _ := gorm.Open(driverName, args)
|
||||||
|
// if err != nil {
|
||||||
|
// // if strings.Split(err.Error(), " ")=="" {
|
||||||
|
|
||||||
|
// // }
|
||||||
|
// // dsn := "root:Wozai3ban@tcp(127.0.0.1:3306)/wenchuang"
|
||||||
|
// // db1, err = sql.Open("mysql", dsn) //open不会检验用户名和密码
|
||||||
|
// panic("failed to connect database, err:" + err.Error())
|
||||||
|
// }
|
||||||
|
|
||||||
|
//迁移
|
||||||
|
db.AutoMigrate(&User{}, &Passages{}, &Managers{})
|
||||||
|
|
||||||
|
return db
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
Navicat Premium Data Transfer
|
||||||
|
|
||||||
|
Source Server : cxc_wc
|
||||||
|
Source Server Type : MySQL
|
||||||
|
Source Server Version : 80034
|
||||||
|
Source Host : localhost:3306
|
||||||
|
Source Schema : wenchuang
|
||||||
|
|
||||||
|
Target Server Type : MySQL
|
||||||
|
Target Server Version : 80034
|
||||||
|
File Encoding : 65001
|
||||||
|
|
||||||
|
Date: 24/09/2023 21:07:33
|
||||||
|
*/
|
||||||
|
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for user
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `user`;
|
||||||
|
CREATE TABLE `user` (
|
||||||
|
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`password` int NOT NULL,
|
||||||
|
PRIMARY KEY (`username`) USING BTREE
|
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of user
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `user` VALUES ('cgj', 123456);
|
||||||
|
INSERT INTO `user` VALUES ('clj', 123456);
|
||||||
|
INSERT INTO `user` VALUES ('cqh', 123456);
|
||||||
|
INSERT INTO `user` VALUES ('cxc', 123456);
|
||||||
|
INSERT INTO `user` VALUES ('czk', 123456);
|
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"extends": [
|
||||||
|
"development"
|
||||||
|
],
|
||||||
|
"hints": {
|
||||||
|
"meta-viewport": "off",
|
||||||
|
"axe/forms": [
|
||||||
|
"default",
|
||||||
|
{
|
||||||
|
"label": "off",
|
||||||
|
"select-name": "off"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"no-inline-styles": "off",
|
||||||
|
"axe/text-alternatives": [
|
||||||
|
"default",
|
||||||
|
{
|
||||||
|
"image-alt": "off"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"axe/language": [
|
||||||
|
"default",
|
||||||
|
{
|
||||||
|
"html-has-lang": "off"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"apple-touch-icons": "off",
|
||||||
|
"button-type": "off"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,138 @@
|
|||||||
|
<!DOCTYPE html
|
||||||
|
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<link href="assets/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
<link rel="stylesheet" href="css/style.css" />
|
||||||
|
<link href="assets/css/codemirror.css" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="assets/css/ace.min.css" />
|
||||||
|
<link rel="stylesheet" href="Widget/zTree/css/zTreeStyle/zTreeStyle.css" type="text/css">
|
||||||
|
<link rel="stylesheet" href="assets/css/font-awesome.min.css" />
|
||||||
|
<script src="assets/js/jquery.min.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
window.jQuery || document.write("<script src='assets/js/jquery-2.0.3.min.js'>" + "<" + "/script>");
|
||||||
|
</script>
|
||||||
|
<script src="assets/js/ace-elements.min.js"></script>
|
||||||
|
<script src="assets/js/ace.min.js"></script>
|
||||||
|
<script src="assets/js/bootstrap.min.js"></script>
|
||||||
|
<script src="assets/js/typeahead-bs2.min.js"></script>
|
||||||
|
<script type="text/javascript" src="Widget/zTree/js/jquery.ztree.all-3.5.min.js"></script>
|
||||||
|
<script src="js/lrtk.js" type="text/javascript"></script>
|
||||||
|
<title>分类管理</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class=" clearfix">
|
||||||
|
<div id="category">
|
||||||
|
<div id="scrollsidebar" class="left_Treeview">
|
||||||
|
<div class="show_btn" id="rightArrow"><span></span></div>
|
||||||
|
<div class="widget-box side_content">
|
||||||
|
<div class="side_title"><a title="隐藏" class="close_btn"><span></span></a></div>
|
||||||
|
<div class="side_list">
|
||||||
|
<div class="widget-header header-color-green2">
|
||||||
|
<h4 class="lighter smaller">产品类型列表</h4>
|
||||||
|
</div>
|
||||||
|
<div class="widget-body">
|
||||||
|
<div class="widget-main padding-8">
|
||||||
|
<div id="treeDemo" class="ztree"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<iframe ID="testIframe" Name="testIframe" FRAMEBORDER=0 SCROLLING=AUTO SRC="product-category-add.html"
|
||||||
|
class="page_right_style"></iframe>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(function () {
|
||||||
|
$("#category").fix({
|
||||||
|
float: 'left',
|
||||||
|
//minStatue : true,
|
||||||
|
skin: 'green',
|
||||||
|
durationTime: false
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
//初始化宽度、高度
|
||||||
|
$(".widget-box").height($(window).height());
|
||||||
|
$(".page_right_style").width($(window).width() - 220);
|
||||||
|
//当文档窗口发生改变时 触发
|
||||||
|
$(window).resize(function () {
|
||||||
|
$(".widget-box").height($(window).height());
|
||||||
|
$(".page_right_style").width($(window).width() - 220);
|
||||||
|
})
|
||||||
|
|
||||||
|
/**************/
|
||||||
|
var setting = {
|
||||||
|
view: {
|
||||||
|
dblClickExpand: false,
|
||||||
|
showLine: false,
|
||||||
|
selectedMulti: false
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
simpleData: {
|
||||||
|
enable: true,
|
||||||
|
idKey: "id",
|
||||||
|
pIdKey: "pId",
|
||||||
|
rootPId: ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
callback: {
|
||||||
|
beforeClick: function (treeId, treeNode) {
|
||||||
|
var zTree = $.fn.zTree.getZTreeObj("tree");
|
||||||
|
if (treeNode.isParent) {
|
||||||
|
zTree.expandNode(treeNode);
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
demoIframe.attr("src", treeNode.file + ".html");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var zNodes = [
|
||||||
|
{ id: 1, pId: 0, name: "文章分类列表", open: true },
|
||||||
|
{ id: 11, pId: 1, name: "旅游纪念品" },
|
||||||
|
// { id: 111, pId: 11, name: "蔬菜" },
|
||||||
|
// { id: 112, pId: 11, name: "苹果" },
|
||||||
|
// { id: 113, pId: 11, name: "大蒜" },
|
||||||
|
// { id: 114, pId: 11, name: "白菜" },
|
||||||
|
// { id: 115, pId: 11, name: "青菜" },
|
||||||
|
{ id: 12, pId: 1, name: "动漫游戏" },
|
||||||
|
// { id: 121, pId: 12, name: "手机 " },
|
||||||
|
// { id: 122, pId: 12, name: "照相机 " },
|
||||||
|
{ id: 13, pId: 1, name: "影视音像" },
|
||||||
|
// { id: 131, pId: 13, name: "手机 " },
|
||||||
|
// { id: 122, pId: 13, name: "照相机 " },
|
||||||
|
{ id: 14, pId: 1, name: "书画艺术" },
|
||||||
|
// { id: 141, pId: 14, name: "手机 " },
|
||||||
|
// { id: 42, pId: 14, name: "照相机 " },
|
||||||
|
{ id: 15, pId: 1, name: "传媒出版" },
|
||||||
|
{ id: 16, pId: 1, name: "工艺美术" },
|
||||||
|
];
|
||||||
|
|
||||||
|
var code;
|
||||||
|
|
||||||
|
function showCode(str) {
|
||||||
|
if (!code) code = $("#code");
|
||||||
|
code.empty();
|
||||||
|
code.append("<li>" + str + "</li>");
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).ready(function () {
|
||||||
|
var t = $("#treeDemo");
|
||||||
|
t = $.fn.zTree.init(t, setting, zNodes);
|
||||||
|
demoIframe = $("#testIframe");
|
||||||
|
demoIframe.bind("load", loadReady);
|
||||||
|
var zTree = $.fn.zTree.getZTreeObj("tree");
|
||||||
|
zTree.selectNode(zTree.getNodeByParam("id", '11'));
|
||||||
|
});
|
||||||
|
</script>
|
@ -0,0 +1,147 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="renderer" content="webkit|ie-comp|ie-stand">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
|
<meta http-equiv="Cache-Control" content="no-siteapp" />
|
||||||
|
<link href="assets/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
<link rel="stylesheet" href="css/style.css"/>
|
||||||
|
<link href="assets/css/codemirror.css" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="assets/css/ace.min.css" />
|
||||||
|
<link rel="stylesheet" href="font/css/font-awesome.min.css" />
|
||||||
|
<script src="js/jquery-1.9.1.min.js"></script>
|
||||||
|
<script src="assets/js/bootstrap.min.js"></script>
|
||||||
|
<script src="assets/js/typeahead-bs2.min.js"></script>
|
||||||
|
<script src="assets/js/jquery.dataTables.min.js"></script>
|
||||||
|
<script src="assets/js/jquery.dataTables.bootstrap.js"></script>
|
||||||
|
<script src="assets/layer/layer.js" type="text/javascript" ></script>
|
||||||
|
<script src="assets/laydate/laydate.js" type="text/javascript"></script>
|
||||||
|
<script src="js/lrtk.js" type="text/javascript" ></script>
|
||||||
|
<title>个人账户</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="margin clearfix">
|
||||||
|
<div class="cover_style" id="cover_style">
|
||||||
|
<div class="search_style">
|
||||||
|
|
||||||
|
<ul class="search_content clearfix">
|
||||||
|
<li><label class="l_f">用户</label><input name="" type="text" class="text_add" placeholder="用户名称" style=" width:250px"></li>
|
||||||
|
<li style="width:90px;"><button type="button" class="btn_search"><i class="fa fa-search"></i>查询</button></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!--操作-->
|
||||||
|
<div class="border clearfix">
|
||||||
|
<span class="l_f">
|
||||||
|
<a href="javascript:ovid()" class="btn btn-danger"><i class="fa fa-bar-chart"></i> 图表展示</a>
|
||||||
|
</span>
|
||||||
|
<span class="r_f">共:<b>2334</b>个账户</span>
|
||||||
|
</div>
|
||||||
|
<!--账户管理-->
|
||||||
|
<div class="">
|
||||||
|
<table class="table table-striped table-bordered table-hover" id="sample-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width=""><label><input type="checkbox" class="ace"><span class="lbl"></span></label></th>
|
||||||
|
<th width="">ID</th>
|
||||||
|
<th width="">用户名</th>
|
||||||
|
<th width="">账户余额</th>
|
||||||
|
<th width="">最新消费</th>
|
||||||
|
<th width="">消费时间</th>
|
||||||
|
<th width="">账户状态</th>
|
||||||
|
<th width="">操作</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<!-- <tr>
|
||||||
|
<td> <label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
|
||||||
|
<td>1</td>
|
||||||
|
<td><u style="cursor:pointer" class="text-primary" onclick="member_show('张小泉','member-show.html','1031','500','400')">张奶奶</u></td>
|
||||||
|
<td>345.2</td>
|
||||||
|
<td>购买商品消费122元</td>
|
||||||
|
<td>2016-7-21 12:45</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">启用</span></td>
|
||||||
|
<td class="td-manage">
|
||||||
|
<a onClick="member_stop(this,'10001')" href="javascript:;" title="启用" class="btn btn-xs btn-success"><i class="fa fa-check bigger-120"></i></a>
|
||||||
|
<a href="javascript:ovid()" name="Account_Details.html" class="btn btn-xs btn-warning Account_Details" onclick="generateOrders('511');" title="张奶奶账户详细" >
|
||||||
|
<i class="fa fa-list-ul bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> <label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
|
||||||
|
<td>12</td>
|
||||||
|
<td><u style="cursor:pointer" class="text-primary" onclick="member_show('张小泉','member-show.html','1031','500','400')">张小泉</u></td>
|
||||||
|
<td>345.2</td>
|
||||||
|
<td>购买商品消费122元</td>
|
||||||
|
<td>2016-7-21 12:45</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">启用</span></td>
|
||||||
|
<td class="td-manage">
|
||||||
|
<a onClick="member_stop(this,'10001')" href="javascript:;" title="启用" class="btn btn-xs btn-success"><i class="fa fa-check bigger-120"></i></a>
|
||||||
|
<a href="javascript:ovid()" name="Account_Details.html" class="btn btn-xs btn-warning Account_Details" onclick="generateOrders('561');" title="张小泉账户详细" >
|
||||||
|
<i class="fa fa-list-ul bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr> -->
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
<script type="text/javascript">
|
||||||
|
/*用户-停用*/
|
||||||
|
function member_stop(obj,id){
|
||||||
|
layer.confirm('确认要停用该账户吗?',function(index){
|
||||||
|
$(obj).parents("tr").find(".td-manage").prepend('<a style="text-decoration:none" class="btn btn-xs " onClick="member_start(this,id)" href="javascript:;" title="启用"><i class="fa fa-close bigger-120"></i></a>');
|
||||||
|
$(obj).parents("tr").find(".td-status").html('<span class="label label-defaunt radius">停用</span>');
|
||||||
|
$(obj).remove();
|
||||||
|
layer.msg('停用!',{icon: 5,time:1000});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/*用户-启用*/
|
||||||
|
function member_start(obj,id){
|
||||||
|
layer.confirm('确认要启用该账户吗?',function(index){
|
||||||
|
$(obj).parents("tr").find(".td-manage").prepend('<a style="text-decoration:none" class="btn btn-xs btn-success" onClick="member_stop(this,id)" href="javascript:;" title="停用"><i class="fa fa-check bigger-120"></i></a>');
|
||||||
|
$(obj).parents("tr").find(".td-status").html('<span class="label label-success radius">启用</span>');
|
||||||
|
$(obj).remove();
|
||||||
|
layer.msg('启用!',{icon: 6,time:1000});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
jQuery(function($) {
|
||||||
|
var oTable1 = $('#sample-table').dataTable( {
|
||||||
|
"aaSorting": [[ 1, "desc" ]],//默认第几个排序
|
||||||
|
"bStateSave": true,//状态保存
|
||||||
|
"bAutoWidth":true,
|
||||||
|
"aoColumnDefs": [
|
||||||
|
//{"bVisible": false, "aTargets": [ 3 ]} //控制列的隐藏显示
|
||||||
|
{"orderable":false,"aTargets":[0,2,3,4,6,7,8,9]}// 制定列不参与排序
|
||||||
|
] } );
|
||||||
|
$('table th input:checkbox').on('click' , function(){
|
||||||
|
var that = this;
|
||||||
|
$(this).closest('table').find('tr > td:first-child input:checkbox')
|
||||||
|
.each(function(){
|
||||||
|
this.checked = that.checked;
|
||||||
|
$(this).closest('tr').toggleClass('selected');
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
var index = parent.layer.getFrameIndex(window.name);
|
||||||
|
parent.layer.iframeAuto(index);
|
||||||
|
$('.Order_form ,.Account_Details').on('click', function(){
|
||||||
|
var cname = $(this).attr("title");
|
||||||
|
var cnames = parent.$('.Current_page').html();
|
||||||
|
var herf = parent.$("#iframe").attr("src");
|
||||||
|
parent.$('#parentIframe span').html(cname);
|
||||||
|
parent.$('#parentIframe').css("display","inline-block");
|
||||||
|
parent.$('.Current_page').attr("name",herf).css({"color":"#4c8fbd","cursor":"pointer"});
|
||||||
|
//parent.$('.Current_page').html("<a href='javascript:void(0)' name="+herf+">" + cnames + "</a>");
|
||||||
|
parent.layer.close(index);
|
||||||
|
|
||||||
|
});
|
||||||
|
function generateOrders(id){
|
||||||
|
window.location.href = "Account_Details.html?="+id;
|
||||||
|
};
|
||||||
|
</script>
|
@ -0,0 +1,265 @@
|
|||||||
|
<!DOCTYPE html
|
||||||
|
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="renderer" content="webkit|ie-comp|ie-stand">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
|
<meta http-equiv="Cache-Control" content="no-siteapp" />
|
||||||
|
<link href="assets/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
<link rel="stylesheet" href="css/style.css" />
|
||||||
|
<link href="assets/css/codemirror.css" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="assets/css/ace.min.css" />
|
||||||
|
<link rel="stylesheet" href="font/css/font-awesome.min.css" />
|
||||||
|
<script src="js/jquery-1.9.1.min.js"></script>
|
||||||
|
<script src="assets/js/bootstrap.min.js"></script>
|
||||||
|
<script src="assets/js/typeahead-bs2.min.js"></script>
|
||||||
|
<script src="assets/js/jquery.dataTables.min.js"></script>
|
||||||
|
<script src="assets/js/jquery.dataTables.bootstrap.js"></script>
|
||||||
|
<script src="assets/layer/layer.js" type="text/javascript"></script>
|
||||||
|
<script src="assets/laydate/laydate.js" type="text/javascript"></script>
|
||||||
|
<script src="js/lrtk.js" type="text/javascript"></script>
|
||||||
|
<title>订单处理</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="clearfix">
|
||||||
|
<div class="handling_style" id="order_hand">
|
||||||
|
<div id="scrollsidebar" class="left_Treeview">
|
||||||
|
<div class="show_btn" id="rightArrow"><span></span></div>
|
||||||
|
<div class="widget-box side_content">
|
||||||
|
<div class="side_title"><a title="隐藏" class="close_btn"><span></span></a></div>
|
||||||
|
<div class="side_list">
|
||||||
|
<div class="widget-header header-color-green2">
|
||||||
|
<h4 class="lighter smaller">订单操作</h4>
|
||||||
|
</div>
|
||||||
|
<div class="widget-body">
|
||||||
|
<ul class="b_P_Sort_list">
|
||||||
|
<li><i class="orange fa fa-reorder"></i><a href="#">全部订单(235)</a></li>
|
||||||
|
<li><i class="fa fa-sticky-note pink "></i> <a href="#">已完成(235)</a></li>
|
||||||
|
<li><i class="fa fa-sticky-note pink "></i> <a href="#">代付款(15)</a> </li>
|
||||||
|
<li><i class="fa fa-sticky-note pink "></i> <a href="#">代发货(56)</a></li>
|
||||||
|
<li><i class="fa fa-sticky-note pink "></i> <a href="#">代收货(32)</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="order_list_style" id="order_list_style">
|
||||||
|
<div class="search_style">
|
||||||
|
|
||||||
|
<ul class="search_content clearfix">
|
||||||
|
<li><label class="l_f">订单编号</label><input name="" type="text" class="text_add" placeholder="输入订单编号"
|
||||||
|
style=" width:250px" /></li>
|
||||||
|
<li><label class="l_f">交易时间</label><input class="inline laydate-icon" id="start" style=" margin-left:10px;">
|
||||||
|
</li>
|
||||||
|
<li style="width:90px;"><button type="button" class="btn_search"><i class="fa fa-search"></i>查询</button>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!--交易订单列表-->
|
||||||
|
<div class="Orderform_list">
|
||||||
|
<table class="table table-striped table-bordered table-hover" id="sample-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="25px"><label><input type="checkbox" class="ace"><span class="lbl"></span></label></th>
|
||||||
|
<th width="120px">订单编号</th>
|
||||||
|
<th width="250px">产品名称</th>
|
||||||
|
<th width="100px">交易金额</th>
|
||||||
|
<th width="100px">交易时间</th>
|
||||||
|
<th width="180px">所属分类</th>
|
||||||
|
<th width="80px">数量</th>
|
||||||
|
<th width="70px">状态</th>
|
||||||
|
<th width="100px">说明</th>
|
||||||
|
<th width="200px">操作</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td><label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
|
||||||
|
<td>20160705445622</td>
|
||||||
|
<td class="order_product_name">
|
||||||
|
<a href="#" class="product_Display"><img src="products/p_1.jpg" title="产品名称" /></a>
|
||||||
|
<i class="fa fa-plus"></i>
|
||||||
|
<a href="#" class="product_Display"><img src="products/p_2.jpg" title="产品名称" /></a>
|
||||||
|
</td>
|
||||||
|
<td>456.5</td>
|
||||||
|
|
||||||
|
<td>2016-7-5</td>
|
||||||
|
<td>食品</td>
|
||||||
|
<td>2</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">代发货</span></td>
|
||||||
|
<td></td>
|
||||||
|
<td>
|
||||||
|
<a onClick="Delivery_stop(this,'10001')" href="javascript:;" title="发货"
|
||||||
|
class="btn btn-xs btn-success"><i class="fa fa-cubes bigger-120"></i></a>
|
||||||
|
<a title="订单详细" href="order_detailed.html" class="btn btn-xs btn-info order_detailed"><i
|
||||||
|
class="fa fa-list bigger-120"></i></a>
|
||||||
|
<a title="删除" href="javascript:;" onclick="Order_form_del(this,'1')" class="btn btn-xs btn-warning"><i
|
||||||
|
class="fa fa-trash bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
|
||||||
|
<td>20160705445622</td>
|
||||||
|
<td class="order_product_name">
|
||||||
|
<a href="#" class="product_Display">
|
||||||
|
<img src="products/p_1.jpg" title="产品名称" />
|
||||||
|
</a>
|
||||||
|
<i class="fa fa-plus"></i>
|
||||||
|
<a href="#" class="product_Display">
|
||||||
|
<img src="products/p_2.jpg" title="产品名称" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td>456.5</td>
|
||||||
|
<td>2016-7-5</td>
|
||||||
|
<td>食品</td>
|
||||||
|
<td>2</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">已发货</span></td>
|
||||||
|
<td></td>
|
||||||
|
<td>
|
||||||
|
<a title="订单详细" href="order_detailed.html" class="btn btn-xs btn-info order_detailed"><i
|
||||||
|
class="fa fa-list bigger-120"></i></a>
|
||||||
|
<a title="删除" href="javascript:;" onclick="Order_form_del(this,'1')" class="btn btn-xs btn-warning"><i
|
||||||
|
class="fa fa-trash bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
|
||||||
|
<td>20160705445622</td>
|
||||||
|
<td class="order_product_name">
|
||||||
|
<a href="#" class="product_Display"><img src="products/p_1.jpg" title="产品名称" />
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>456.5</td>
|
||||||
|
<td>2016-7-5</td>
|
||||||
|
<td>食品</td>
|
||||||
|
<td>2</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">失败</span></td>
|
||||||
|
<td>支付失败</td>
|
||||||
|
<td>
|
||||||
|
<a title="订单详细" href="order_detailed.html" class="btn btn-xs btn-info order_detailed"><i
|
||||||
|
class="fa fa-list bigger-120"></i></a>
|
||||||
|
<a title="删除" href="javascript:;" onclick="Order_form_del(this,'1')" class="btn btn-xs btn-warning"><i
|
||||||
|
class="fa fa-trash bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--发货-->
|
||||||
|
<div id="Delivery_stop" style=" display:none">
|
||||||
|
<div class="">
|
||||||
|
<div class="content_style">
|
||||||
|
<div class="form-group"><label class="col-sm-2 control-label no-padding-right" for="form-field-1">快递公司 </label>
|
||||||
|
<div class="col-sm-9"><select class="form-control" id="form-field-select-1">
|
||||||
|
<option value="">--选择快递--</option>
|
||||||
|
<option value="1">天天快递</option>
|
||||||
|
<option value="2">圆通快递</option>
|
||||||
|
<option value="3">中通快递</option>
|
||||||
|
<option value="4">顺丰快递</option>
|
||||||
|
<option value="5">申通快递</option>
|
||||||
|
<option value="6">邮政EMS</option>
|
||||||
|
<option value="7">邮政小包</option>
|
||||||
|
<option value="8">韵达快递</option>
|
||||||
|
</select></div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group"><label class="col-sm-2 control-label no-padding-right" for="form-field-1"> 快递号 </label>
|
||||||
|
<div class="col-sm-9"><input type="text" id="form-field-1" placeholder="快递号" class="col-xs-10 col-sm-5"
|
||||||
|
style="margin-left:0px;"></div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group"><label class="col-sm-2 control-label no-padding-right" for="form-field-1">货到付款 </label>
|
||||||
|
<div class="col-sm-9"><label><input name="checkbox" type="checkbox" class="ace" id="checkbox"><span
|
||||||
|
class="lbl"></span></label></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
<script>
|
||||||
|
$(function () {
|
||||||
|
$("#order_hand").fix({
|
||||||
|
float: 'left',
|
||||||
|
//minStatue : true,
|
||||||
|
skin: 'green',
|
||||||
|
durationTime: false,
|
||||||
|
spacingw: 30,//设置隐藏时的距离
|
||||||
|
spacingh: 250,//设置显示时间距
|
||||||
|
table_menu: '.order_list_style',
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
//时间
|
||||||
|
laydate({
|
||||||
|
elem: '#start',
|
||||||
|
event: 'focus'
|
||||||
|
});
|
||||||
|
//初始化宽度、高度
|
||||||
|
$(".widget-box").height($(window).height());
|
||||||
|
$(".order_list_style").width($(window).width() - 220);
|
||||||
|
$(".order_list_style").height($(window).height() - 30);
|
||||||
|
//当文档窗口发生改变时 触发
|
||||||
|
$(window).resize(function () {
|
||||||
|
$(".widget-box").height($(window).height());
|
||||||
|
$(".order_list_style").width($(window).width() - 234);
|
||||||
|
$(".order_list_style").height($(window).height() - 30);
|
||||||
|
});
|
||||||
|
/**发货**/
|
||||||
|
function Delivery_stop(obj, id) {
|
||||||
|
layer.open({
|
||||||
|
type: 1,
|
||||||
|
title: '发货',
|
||||||
|
maxmin: true,
|
||||||
|
shadeClose: false,
|
||||||
|
area: ['500px', ''],
|
||||||
|
content: $('#Delivery_stop'),
|
||||||
|
btn: ['确定', '取消'],
|
||||||
|
yes: function (index, layero) {
|
||||||
|
if ($('#form-field-1').val() == "") {
|
||||||
|
layer.alert('快递号不能为空!', {
|
||||||
|
title: '提示框',
|
||||||
|
icon: 0,
|
||||||
|
})
|
||||||
|
|
||||||
|
} else {
|
||||||
|
layer.confirm('提交成功!', function (index) {
|
||||||
|
$(obj).parents("tr").find(".td-manage").prepend('<a style=" display:none" class="btn btn-xs btn-success" onClick="member_stop(this,id)" href="javascript:;" title="已发货"><i class="fa fa-cubes bigger-120"></i></a>');
|
||||||
|
$(obj).parents("tr").find(".td-status").html('<span class="label label-success radius">已发货</span>');
|
||||||
|
$(obj).remove();
|
||||||
|
layer.msg('已发货!', { icon: 6, time: 1000 });
|
||||||
|
});
|
||||||
|
layer.close(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
};
|
||||||
|
//订单列表
|
||||||
|
jQuery(function ($) {
|
||||||
|
var oTable1 = $('#sample-table').dataTable({
|
||||||
|
"aaSorting": [[1, "desc"]],//默认第几个排序
|
||||||
|
"bStateSave": true,//状态保存
|
||||||
|
"aoColumnDefs": [
|
||||||
|
//{"bVisible": false, "aTargets": [ 3 ]} //控制列的隐藏显示
|
||||||
|
{ "orderable": false, "aTargets": [0, 2, 3, 4, 5, 6, 8, 9] }// 制定列不参与排序
|
||||||
|
]
|
||||||
|
});
|
||||||
|
//全选操作
|
||||||
|
$('table th input:checkbox').on('click', function () {
|
||||||
|
var that = this;
|
||||||
|
$(this).closest('table').find('tr > td:first-child input:checkbox')
|
||||||
|
.each(function () {
|
||||||
|
this.checked = that.checked;
|
||||||
|
$(this).closest('tr').toggleClass('selected');
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
@ -0,0 +1,418 @@
|
|||||||
|
<!DOCTYPE html
|
||||||
|
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="renderer" content="webkit|ie-comp|ie-stand">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
|
<meta http-equiv="Cache-Control" content="no-siteapp" />
|
||||||
|
<link href="assets/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
<link rel="stylesheet" href="css/style.css" />
|
||||||
|
<link href="assets/css/codemirror.css" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="assets/css/ace.min.css" />
|
||||||
|
<link rel="stylesheet" href="font/css/font-awesome.min.css" />
|
||||||
|
<script src="js/jquery-1.9.1.min.js"></script>
|
||||||
|
<script src="assets/js/bootstrap.min.js"></script>
|
||||||
|
<script type="text/javascript" src="js/H-ui.js"></script>
|
||||||
|
<script src="assets/js/typeahead-bs2.min.js"></script>
|
||||||
|
<script src="assets/js/jquery.dataTables.min.js"></script>
|
||||||
|
<script src="assets/js/jquery.dataTables.bootstrap.js"></script>
|
||||||
|
<script src="assets/layer/layer.js" type="text/javascript"></script>
|
||||||
|
<script src="assets/laydate/laydate.js" type="text/javascript"></script>
|
||||||
|
<script src="assets/js/jquery.easy-pie-chart.min.js"></script>
|
||||||
|
<script src="js/lrtk.js" type="text/javascript"></script>
|
||||||
|
<title>订单管理</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="margin clearfix">
|
||||||
|
<div class="cover_style" id="cover_style">
|
||||||
|
<!--内容-->
|
||||||
|
<div class="centent_style" id="centent_style">
|
||||||
|
<div id="covar_list" class="order_list">
|
||||||
|
<div id="scrollsidebar" class="left_Treeview">
|
||||||
|
<div class="show_btn" id="rightArrow"><span></span></div>
|
||||||
|
<div class="widget-box side_content">
|
||||||
|
<div class="side_title"><a title="隐藏" class="close_btn"><span></span></a></div>
|
||||||
|
<div class="side_list">
|
||||||
|
<div class="widget-header header-color-green2">
|
||||||
|
<h4 class="lighter smaller">订单类型分类</h4>
|
||||||
|
</div>
|
||||||
|
<div class="widget-body">
|
||||||
|
<ul class="b_P_Sort_list">
|
||||||
|
<li><i class="orange fa fa-reorder"></i><a href="#">全部订单</a></li>
|
||||||
|
<li><i class="fa fa-sticky-note pink "></i> <a href="#">男装</a></li>
|
||||||
|
<li><i class="fa fa-sticky-note pink "></i> <a href="#">女装</a> </li>
|
||||||
|
<li><i class="fa fa-sticky-note pink "></i> <a href="#">童装</a></li>
|
||||||
|
<li><i class="fa fa-sticky-note pink "></i> <a href="#">鞋靴</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--左侧样式-->
|
||||||
|
<div class="list_right_style">
|
||||||
|
<div class="search_style">
|
||||||
|
|
||||||
|
<ul class="search_content clearfix">
|
||||||
|
<li><label class="l_f">订单编号</label><input name="" type="text" class="text_add" placeholder="订单订单编号"
|
||||||
|
style=" width:250px"></li>
|
||||||
|
<li><label class="l_f">时间</label><input class="inline laydate-icon" id="start"
|
||||||
|
style=" margin-left:10px;"></li>
|
||||||
|
<li style="width:90px;"><button type="button" class="btn_search"><i class="fa fa-search"></i>查询</button>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!--订单列表展示-->
|
||||||
|
<table class="table table-striped table-bordered table-hover" id="sample-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="25px"><label><input type="checkbox" class="ace"><span class="lbl"></span></label></th>
|
||||||
|
<th width="120px">订单编号</th>
|
||||||
|
<th width="250px">产品名称</th>
|
||||||
|
<th width="100px">总价</th>
|
||||||
|
<th width="100px">优惠</th>
|
||||||
|
<th width="100px">订单时间</th>
|
||||||
|
<th width="180px">所属类型</th>
|
||||||
|
<th width="80px">数量</th>
|
||||||
|
<th width="70px">状态</th>
|
||||||
|
<th width="200px">操作</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<!-- <tr>
|
||||||
|
<td><label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
|
||||||
|
<td>20160705445622</td>
|
||||||
|
<td class="order_product_name">
|
||||||
|
<a href="#"><img src="products/p_1.jpg" title="产品名称" /></a>
|
||||||
|
<i class="fa fa-plus"></i>
|
||||||
|
<a href="#"><img src="products/p_2.jpg" title="产品名称" /></a>
|
||||||
|
</td>
|
||||||
|
<td>456.5</td>
|
||||||
|
<td>14</td>
|
||||||
|
<td>2016-7-5</td>
|
||||||
|
<td>食品</td>
|
||||||
|
<td>2</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">代发货</span></td>
|
||||||
|
<td>
|
||||||
|
<a onClick="Delivery_stop(this,'10001')" href="javascript:;" title="发货"
|
||||||
|
class="btn btn-xs btn-success"><i class="fa fa-cubes bigger-120"></i></a>
|
||||||
|
<a title="订单详细" href="order_detailed.html" class="btn btn-xs btn-info order_detailed"><i
|
||||||
|
class="fa fa-list bigger-120"></i></a>
|
||||||
|
<a title="删除" href="javascript:;" onclick="Order_form_del(this,'1')"
|
||||||
|
class="btn btn-xs btn-warning"><i class="fa fa-trash bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
|
||||||
|
<td>20160705445622</td>
|
||||||
|
<td class="order_product_name">
|
||||||
|
<a href="#"><img src="products/p_1.jpg" title="产品名称" /></a>
|
||||||
|
<i class="fa fa-plus"></i>
|
||||||
|
<a href="#"><img src="products/p_2.jpg" title="产品名称" /></a>
|
||||||
|
</td>
|
||||||
|
<td>456.5</td>
|
||||||
|
<td>14</td>
|
||||||
|
<td>2016-7-5</td>
|
||||||
|
<td>食品</td>
|
||||||
|
<td>2</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">代发货</span></td>
|
||||||
|
<td>
|
||||||
|
<a onClick="Delivery_stop(this,'10003')" href="javascript:;" title="发货"
|
||||||
|
class="btn btn-xs btn-success"><i class="fa fa-cubes bigger-120"></i></a>
|
||||||
|
<a title="订单详细" href="order_detailed.html" class="btn btn-xs btn-info order_detailed"><i
|
||||||
|
class="fa fa-list bigger-120"></i></a>
|
||||||
|
<a title="删除" href="javascript:;" onclick="Order_form_del(this,'1')"
|
||||||
|
class="btn btn-xs btn-warning"><i class="fa fa-trash bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
|
||||||
|
<td>20160705445622</td>
|
||||||
|
<td class="order_product_name">
|
||||||
|
<a href="#"><img src="products/p_1.jpg" title="产品名称" /></a>
|
||||||
|
<i class="fa fa-plus"></i>
|
||||||
|
<a href="#"><img src="products/p_2.jpg" title="产品名称" /></a>
|
||||||
|
</td>
|
||||||
|
<td>456.5</td>
|
||||||
|
<td>14</td>
|
||||||
|
<td>2016-7-5</td>
|
||||||
|
<td>食品</td>
|
||||||
|
<td>2</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">代发货</span></td>
|
||||||
|
<td>
|
||||||
|
<a onClick="Delivery_stop(this,'10005')" href="javascript:;" title="发货"
|
||||||
|
class="btn btn-xs btn-success"><i class="fa fa-cubes bigger-120"></i></a>
|
||||||
|
<a title="订单详细" href="order_detailed.html" class="btn btn-xs btn-info order_detailed"><i
|
||||||
|
class="fa fa-list bigger-120"></i></a>
|
||||||
|
<a title="删除" href="javascript:;" onclick="Order_form_del(this,'1')"
|
||||||
|
class="btn btn-xs btn-warning"><i class="fa fa-trash bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
|
||||||
|
<td>20160705445622</td>
|
||||||
|
<td class="order_product_name">
|
||||||
|
<a href="#"><img src="products/p_1.jpg" title="产品名称" /></a>
|
||||||
|
<i class="fa fa-plus"></i>
|
||||||
|
<a href="#"><img src="products/p_2.jpg" title="产品名称" /></a>
|
||||||
|
</td>
|
||||||
|
<td>456.5</td>
|
||||||
|
<td>14</td>
|
||||||
|
<td>2016-7-5</td>
|
||||||
|
<td>食品</td>
|
||||||
|
<td>2</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">代发货</span></td>
|
||||||
|
<td>
|
||||||
|
<a onClick="Delivery_stop(this,'10034')" href="javascript:;" title="发货"
|
||||||
|
class="btn btn-xs btn-success"><i class="fa fa-cubes bigger-120"></i></a>
|
||||||
|
<a title="订单详细" href="order_detailed.html" class="btn btn-xs btn-info order_detailed"><i
|
||||||
|
class="fa fa-list bigger-120"></i></a>
|
||||||
|
<a title="删除" href="javascript:;" onclick="Order_form_del(this,'1')"
|
||||||
|
class="btn btn-xs btn-warning"><i class="fa fa-trash bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
|
||||||
|
<td>20160705445622</td>
|
||||||
|
<td class="order_product_name">
|
||||||
|
<a href="#"><img src="products/p_5.jpg" title="产品名称" /></a>
|
||||||
|
<i class="fa fa-plus"></i>
|
||||||
|
<a href="#"><img src="products/p_4.jpg" title="产品名称" /></a>
|
||||||
|
</td>
|
||||||
|
<td>456.5</td>
|
||||||
|
<td>14</td>
|
||||||
|
<td>2016-7-5</td>
|
||||||
|
<td>食品</td>
|
||||||
|
<td>2</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">代发货</span></td>
|
||||||
|
<td>
|
||||||
|
<a onClick="Delivery_stop(this,'10012')" href="javascript:;" title="发货"
|
||||||
|
class="btn btn-xs btn-success"><i class="fa fa-cubes bigger-120"></i></a>
|
||||||
|
<a title="订单详细" href="order_detailed.html" class="btn btn-xs btn-info order_detailed"><i
|
||||||
|
class="fa fa-list bigger-120"></i></a>
|
||||||
|
<a title="删除" href="javascript:;" onclick="Order_form_del(this,'1')"
|
||||||
|
class="btn btn-xs btn-warning"><i class="fa fa-trash bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
|
||||||
|
<td>20160705445622</td>
|
||||||
|
<td class="order_product_name">
|
||||||
|
<a href="#"><img src="products/p_3.jpg" title="产品名称" /></a>
|
||||||
|
<i class="fa fa-plus"></i>
|
||||||
|
<a href="#"><img src="products/p_7.jpg" title="产品名称" /></a>
|
||||||
|
</td>
|
||||||
|
<td>456.5</td>
|
||||||
|
<td>14</td>
|
||||||
|
<td>2016-7-5</td>
|
||||||
|
<td>食品</td>
|
||||||
|
<td>2</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">代发货</span></td>
|
||||||
|
<td>
|
||||||
|
<a onClick="Delivery_stop(this,'10061')" href="javascript:;" title="发货"
|
||||||
|
class="btn btn-xs btn-success"><i class="fa fa-cubes bigger-120"></i></a>
|
||||||
|
<a title="订单详细" href="order_detailed.html" class="btn btn-xs btn-info order_detailed"><i
|
||||||
|
class="fa fa-list bigger-120"></i></a>
|
||||||
|
<a title="删除" href="javascript:;" onclick="Order_form_del(this,'1')"
|
||||||
|
class="btn btn-xs btn-warning"><i class="fa fa-trash bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr> -->
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--发货-->
|
||||||
|
<div id="Delivery_stop" style=" display:none">
|
||||||
|
<div class="">
|
||||||
|
<div class="content_style">
|
||||||
|
<div class="form-group"><label class="col-sm-2 control-label no-padding-right" for="form-field-1">快递公司 </label>
|
||||||
|
<div class="col-sm-9"><select class="form-control" id="form-field-select-1">
|
||||||
|
<option value="">--选择快递--</option>
|
||||||
|
<option value="1">天天快递</option>
|
||||||
|
<option value="2">圆通快递</option>
|
||||||
|
<option value="3">中通快递</option>
|
||||||
|
<option value="4">顺丰快递</option>
|
||||||
|
<option value="5">申通快递</option>
|
||||||
|
<option value="6">邮政EMS</option>
|
||||||
|
<option value="7">邮政小包</option>
|
||||||
|
<option value="8">韵达快递</option>
|
||||||
|
</select></div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group"><label class="col-sm-2 control-label no-padding-right" for="form-field-1"> 快递号 </label>
|
||||||
|
<div class="col-sm-9"><input type="text" id="form-field-1" placeholder="快递号" class="col-xs-10 col-sm-5"
|
||||||
|
style="margin-left:0px;"></div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group"><label class="col-sm-2 control-label no-padding-right" for="form-field-1">货到付款 </label>
|
||||||
|
<div class="col-sm-9"><label><input name="checkbox" type="checkbox" class="ace" id="checkbox"><span
|
||||||
|
class="lbl"></span></label></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
<script>
|
||||||
|
$(function () {
|
||||||
|
$("#cover_style").fix({
|
||||||
|
float: 'top',
|
||||||
|
minStatue: false,
|
||||||
|
skin: 'green',
|
||||||
|
durationTime: false,
|
||||||
|
window_height: 30,//设置浏览器与div的高度值差
|
||||||
|
spacingw: 0,//
|
||||||
|
spacingh: 0,//
|
||||||
|
close_btn: '.yingchan_btn',
|
||||||
|
show_btn: '.xianshi_btn',
|
||||||
|
side_list: '.hide_style',
|
||||||
|
widgetbox: '.top_style',
|
||||||
|
close_btn_width: 60,
|
||||||
|
da_height: '#centent_style,.left_Treeview,.list_right_style',
|
||||||
|
side_title: '.b_n_btn',
|
||||||
|
content: null,
|
||||||
|
left_css: '.left_Treeview,.list_right_style'
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
//左侧显示隐藏
|
||||||
|
$(function () {
|
||||||
|
$("#covar_list").fix({
|
||||||
|
float: 'left',
|
||||||
|
minStatue: false,
|
||||||
|
skin: false,
|
||||||
|
//durationTime :false,
|
||||||
|
spacingw: 50,//设置隐藏时的距离
|
||||||
|
spacingh: 270,//设置显示时间距
|
||||||
|
stylewidth: '220',
|
||||||
|
close_btn: '.close_btn',
|
||||||
|
show_btn: '.show_btn',
|
||||||
|
side_list: '.side_list',
|
||||||
|
content: '.side_content',
|
||||||
|
widgetbox: '.widget-box',
|
||||||
|
da_height: null,
|
||||||
|
table_menu: '.list_right_style'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
//时间选择
|
||||||
|
laydate({
|
||||||
|
elem: '#start',
|
||||||
|
event: 'focus'
|
||||||
|
});
|
||||||
|
/*订单-删除*/
|
||||||
|
function Order_form_del(obj, id) {
|
||||||
|
layer.confirm('确认要删除吗?', function (index) {
|
||||||
|
$(obj).parents("tr").remove();
|
||||||
|
layer.msg('已删除!', { icon: 1, time: 1000 });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/**发货**/
|
||||||
|
function Delivery_stop(obj, id) {
|
||||||
|
layer.open({
|
||||||
|
type: 1,
|
||||||
|
title: '发货',
|
||||||
|
maxmin: true,
|
||||||
|
shadeClose: false,
|
||||||
|
area: ['500px', ''],
|
||||||
|
content: $('#Delivery_stop'),
|
||||||
|
btn: ['确定', '取消'],
|
||||||
|
yes: function (index, layero) {
|
||||||
|
if ($('#form-field-1').val() == "") {
|
||||||
|
layer.alert('快递号不能为空!', {
|
||||||
|
title: '提示框',
|
||||||
|
icon: 0,
|
||||||
|
})
|
||||||
|
|
||||||
|
} else {
|
||||||
|
layer.confirm('提交成功!', function (index) {
|
||||||
|
$(obj).parents("tr").find(".td-manage").prepend('<a style=" display:none" class="btn btn-xs btn-success" onClick="member_stop(this,id)" href="javascript:;" title="已发货"><i class="fa fa-cubes bigger-120"></i></a>');
|
||||||
|
$(obj).parents("tr").find(".td-status").html('<span class="label label-success radius">已发货</span>');
|
||||||
|
$(obj).remove();
|
||||||
|
layer.msg('已发货!', { icon: 6, time: 1000 });
|
||||||
|
});
|
||||||
|
layer.close(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
};
|
||||||
|
//面包屑返回值
|
||||||
|
var index = parent.layer.getFrameIndex(window.name);
|
||||||
|
parent.layer.iframeAuto(index);
|
||||||
|
$('.Order_form,.order_detailed').on('click', function () {
|
||||||
|
var cname = $(this).attr("title");
|
||||||
|
var chref = $(this).attr("href");
|
||||||
|
var cnames = parent.$('.Current_page').html();
|
||||||
|
var herf = parent.$("#iframe").attr("src");
|
||||||
|
parent.$('#parentIframe').html(cname);
|
||||||
|
parent.$('#iframe').attr("src", chref).ready();;
|
||||||
|
parent.$('#parentIframe').css("display", "inline-block");
|
||||||
|
parent.$('.Current_page').attr({ "name": herf, "href": "javascript:void(0)" }).css({ "color": "#4c8fbd", "cursor": "pointer" });
|
||||||
|
//parent.$('.Current_page').html("<a href='javascript:void(0)' name="+herf+" class='iframeurl'>" + cnames + "</a>");
|
||||||
|
parent.layer.close(index);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
//初始化宽度、高度
|
||||||
|
var heights = $(".top_style").outerHeight() + 47;
|
||||||
|
$(".centent_style").height($(window).height() - heights);
|
||||||
|
$(".page_right_style").width($(window).width() - 220);
|
||||||
|
$(".left_Treeview,.list_right_style").height($(window).height() - heights - 2);
|
||||||
|
$(".list_right_style").width($(window).width() - 250);
|
||||||
|
//当文档窗口发生改变时 触发
|
||||||
|
$(window).resize(function () {
|
||||||
|
$(".centent_style").height($(window).height() - heights);
|
||||||
|
$(".page_right_style").width($(window).width() - 220);
|
||||||
|
$(".left_Treeview,.list_right_style").height($(window).height() - heights - 2);
|
||||||
|
$(".list_right_style").width($(window).width() - 250);
|
||||||
|
})
|
||||||
|
//比例
|
||||||
|
var oldie = /msie\s*(8|7|6)/.test(navigator.userAgent.toLowerCase());
|
||||||
|
$('.easy-pie-chart.percentage').each(function () {
|
||||||
|
$(this).easyPieChart({
|
||||||
|
barColor: $(this).data('color'),
|
||||||
|
trackColor: '#EEEEEE',
|
||||||
|
scaleColor: false,
|
||||||
|
lineCap: 'butt',
|
||||||
|
lineWidth: 10,
|
||||||
|
animate: oldie ? false : 1000,
|
||||||
|
size: 103
|
||||||
|
}).css('color', $(this).data('color'));
|
||||||
|
});
|
||||||
|
|
||||||
|
$('[data-rel=tooltip]').tooltip();
|
||||||
|
$('[data-rel=popover]').popover({ html: true });
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
//订单列表
|
||||||
|
jQuery(function ($) {
|
||||||
|
var oTable1 = $('#sample-table').dataTable({
|
||||||
|
"aaSorting": [[1, "desc"]],//默认第几个排序
|
||||||
|
"bStateSave": true,//状态保存
|
||||||
|
"aoColumnDefs": [
|
||||||
|
//{"bVisible": false, "aTargets": [ 3 ]} //控制列的隐藏显示
|
||||||
|
{ "orderable": false, "aTargets": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] }// 制定列不参与排序
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
$('table th input:checkbox').on('click', function () {
|
||||||
|
var that = this;
|
||||||
|
$(this).closest('table').find('tr > td:first-child input:checkbox')
|
||||||
|
.each(function () {
|
||||||
|
this.checked = that.checked;
|
||||||
|
$(this).closest('tr').toggleClass('selected');
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
</script>
|
@ -0,0 +1,454 @@
|
|||||||
|
<!DOCTYPE html
|
||||||
|
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="renderer" content="webkit|ie-comp|ie-stand">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
|
<meta name="viewport"
|
||||||
|
content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
|
||||||
|
<meta http-equiv="Cache-Control" content="no-siteapp" />
|
||||||
|
<link href="assets/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
<link rel="stylesheet" href="css/style.css" />
|
||||||
|
<link rel="stylesheet" href="assets/css/ace.min.css" />
|
||||||
|
<link rel="stylesheet" href="assets/css/font-awesome.min.css" />
|
||||||
|
<link rel="stylesheet" href="Widget/zTree/css/zTreeStyle/zTreeStyle.css" type="text/css">
|
||||||
|
<link href="Widget/icheck/icheck.css" rel="stylesheet" type="text/css" />
|
||||||
|
<script src="js/jquery-1.9.1.min.js"></script>
|
||||||
|
<script src="assets/js/bootstrap.min.js"></script>
|
||||||
|
<script src="assets/js/typeahead-bs2.min.js"></script>
|
||||||
|
<script src="assets/js/jquery.dataTables.min.js"></script>
|
||||||
|
<script src="assets/js/jquery.dataTables.bootstrap.js"></script>
|
||||||
|
<script type="text/javascript" src="js/H-ui.js"></script>
|
||||||
|
<script type="text/javascript" src="js/H-ui.admin.js"></script>
|
||||||
|
<script src="assets/layer/layer.js" type="text/javascript"></script>
|
||||||
|
<script src="assets/laydate/laydate.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript" src="Widget/zTree/js/jquery.ztree.all-3.5.min.js"></script>
|
||||||
|
<script src="js/lrtk.js" type="text/javascript"></script>
|
||||||
|
<title>产品列表</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class=" page-content clearfix">
|
||||||
|
<div id="products_style">
|
||||||
|
<div class="search_style">
|
||||||
|
|
||||||
|
<ul class="search_content clearfix">
|
||||||
|
<li><label class="l_f">文章名称</label><input name="" type="text" class="text_add" placeholder="输入文章名称"
|
||||||
|
style=" width:250px" /></li>
|
||||||
|
<li><label class="l_f">添加时间</label><input class="inline laydate-icon" id="start" style=" margin-left:10px;">
|
||||||
|
</li>
|
||||||
|
<li style="width:90px;"><button type="button" class="btn_search"><i class="icon-search"></i>查询</button></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="border clearfix">
|
||||||
|
<span class="l_f">
|
||||||
|
<!-- <a href="picture-add.html" title="添加商品" class="btn btn-warning Order_form"><i class="icon-plus"></i>添加文章</a> -->
|
||||||
|
<a href="javascript:ovid()" class="btn btn-danger"><i class="icon-trash"></i>批量删除</a>
|
||||||
|
</span>
|
||||||
|
<span class="r_f">共:<b>2334</b>件商品</span>
|
||||||
|
</div>
|
||||||
|
<!--产品列表展示-->
|
||||||
|
<div class="h_products_list clearfix" id="products_list">
|
||||||
|
<div id="scrollsidebar" class="left_Treeview">
|
||||||
|
<div class="show_btn" id="rightArrow"><span></span></div>
|
||||||
|
<div class="widget-box side_content">
|
||||||
|
<div class="side_title"><a title="隐藏" class="close_btn"><span></span></a></div>
|
||||||
|
<div class="side_list">
|
||||||
|
<div class="widget-header header-color-green2">
|
||||||
|
<h4 class="lighter smaller">产品类型列表</h4>
|
||||||
|
</div>
|
||||||
|
<div class="widget-body">
|
||||||
|
<div class="widget-main padding-8">
|
||||||
|
<div id="treeDemo" class="ztree"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="table_menu_list" id="testIframe">
|
||||||
|
<table class="table table-striped table-bordered table-hover" id="sample-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="25px"><label><input type="checkbox" class="ace"><span class="lbl"></span></label></th>
|
||||||
|
<th width="80px">文章id</th>
|
||||||
|
<th width="250px">文章名称</th>
|
||||||
|
<th width="100px">文章关键词</th>
|
||||||
|
<th width="100px">作者</th>
|
||||||
|
<th width="100px">文创产品分类</th>
|
||||||
|
<th width="180px">发布时间</th>
|
||||||
|
<th width="80px">审核状态</th>
|
||||||
|
<th width="70px">状态</th>
|
||||||
|
<th width="200px">操作</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td width="25px"><label><input type="checkbox" class="ace"><span class="lbl"></span></label></td>
|
||||||
|
<td width="80px">00001</td>
|
||||||
|
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">杨家将文创产品,关于历史的厚重</u></td>
|
||||||
|
<td width="100px">杨家将</td>
|
||||||
|
<td width="100px">杨家将文创产品官方</td>
|
||||||
|
<td width="100px">实体画册</td>
|
||||||
|
<td width="180px">2023-10-11 14:36</td>
|
||||||
|
<td class="text-l">通过</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">已启用</span></td>
|
||||||
|
<td class="td-manage">
|
||||||
|
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用"
|
||||||
|
class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
|
||||||
|
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning"><i
|
||||||
|
class="icon-trash bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<!-- <tr>
|
||||||
|
<td width="25px"><label><input type="checkbox" class="ace" ><span class="lbl"></span></label></td>
|
||||||
|
<td width="80px">45631</td>
|
||||||
|
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">小米 Max 全网通 高配版 3GB内存 64GB ROM 金色 移动联通电信4G手机Y</u></td>
|
||||||
|
<td width="100px">5467</td>
|
||||||
|
<td width="100px">4525</td>
|
||||||
|
<td width="100px">法国</td>
|
||||||
|
<td width="180px">2014-6-11 11:11:42</td>
|
||||||
|
<td class="text-l">通过</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">已启用</span></td>
|
||||||
|
<td class="td-manage">
|
||||||
|
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用" class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
|
||||||
|
<a title="编辑" onclick="member_edit('编辑','member-add.html','4','','510')" href="javascript:;" class="btn btn-xs btn-info" ><i class="icon-edit bigger-120"></i></a>
|
||||||
|
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning" ><i class="icon-trash bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="25px"><label><input type="checkbox" class="ace" ><span class="lbl"></span></label></td>
|
||||||
|
<td width="80px">45631</td>
|
||||||
|
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">小米 Max 全网通 高配版 3GB内存 64GB ROM 金色 移动联通电信4G手机Y</u></td>
|
||||||
|
<td width="100px">5467</td>
|
||||||
|
<td width="100px">4525</td>
|
||||||
|
<td width="100px">法国</td>
|
||||||
|
<td width="180px">2014-6-11 11:11:42</td>
|
||||||
|
<td class="text-l">通过</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">已启用</span></td>
|
||||||
|
<td class="td-manage">
|
||||||
|
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用" class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
|
||||||
|
<a title="编辑" onclick="member_edit('编辑','member-add.html','4','','510')" href="javascript:;" class="btn btn-xs btn-info" ><i class="icon-edit bigger-120"></i></a>
|
||||||
|
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning" ><i class="icon-trash bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="25px"><label><input type="checkbox" class="ace" ><span class="lbl"></span></label></td>
|
||||||
|
<td width="80px">543346</td>
|
||||||
|
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">小米 Max 全网通 高配版 3GB内存 64GB ROM 金色 移动联通电信4G手机Y</u></td>
|
||||||
|
<td width="100px">5467</td>
|
||||||
|
<td width="100px">4525</td>
|
||||||
|
<td width="100px">法国</td>
|
||||||
|
<td width="180px">2014-6-11 11:11:42</td>
|
||||||
|
<td class="text-l">通过</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">已启用</span></td>
|
||||||
|
<td class="td-manage">
|
||||||
|
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用" class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
|
||||||
|
<a title="编辑" onclick="member_edit('编辑','member-add.html','4','','510')" href="javascript:;" class="btn btn-xs btn-info" ><i class="icon-edit bigger-120"></i></a>
|
||||||
|
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning" ><i class="icon-trash bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="25px"><label><input type="checkbox" class="ace" ><span class="lbl"></span></label></td>
|
||||||
|
<td width="80px">987767</td>
|
||||||
|
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">小米 Max 全网通 高配版 3GB内存 64GB ROM 金色 移动联通电信4G手机Y</u></td>
|
||||||
|
<td width="100px">5467</td>
|
||||||
|
<td width="100px">4525</td>
|
||||||
|
<td width="100px">法国</td>
|
||||||
|
<td width="180px">2014-6-11 11:11:42</td>
|
||||||
|
<td class="text-l">通过</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">已启用</span></td>
|
||||||
|
<td class="td-manage">
|
||||||
|
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用" class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
|
||||||
|
<a title="编辑" onclick="member_edit('编辑','member-add.html','4','','510')" href="javascript:;" class="btn btn-xs btn-info" ><i class="icon-edit bigger-120"></i></a>
|
||||||
|
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning" ><i class="icon-trash bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="25px"><label><input type="checkbox" class="ace" ><span class="lbl"></span></label></td>
|
||||||
|
<td width="80px">54343</td>
|
||||||
|
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">小米 Max 全网通 高配版 3GB内存 64GB ROM 金色 移动联通电信4G手机Y</u></td>
|
||||||
|
<td width="100px">5467</td>
|
||||||
|
<td width="100px">4525</td>
|
||||||
|
<td width="100px">法国</td>
|
||||||
|
<td width="180px">2014-6-11 11:11:42</td>
|
||||||
|
<td class="text-l">通过</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">已启用</span></td>
|
||||||
|
<td class="td-manage">
|
||||||
|
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用" class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
|
||||||
|
<a title="编辑" onclick="member_edit('编辑','member-add.html','4','','510')" href="javascript:;" class="btn btn-xs btn-info" ><i class="icon-edit bigger-120"></i></a>
|
||||||
|
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning" ><i class="icon-trash bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="25px"><label><input type="checkbox" class="ace" ><span class="lbl"></span></label></td>
|
||||||
|
<td width="80px">786554</td>
|
||||||
|
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">小米 Max 全网通 高配版 3GB内存 64GB ROM 金色 移动联通电信4G手机Y</u></td>
|
||||||
|
<td width="100px">5467</td>
|
||||||
|
<td width="100px">4525</td>
|
||||||
|
<td width="100px">法国</td>
|
||||||
|
<td width="180px">2014-6-11 11:11:42</td>
|
||||||
|
<td class="text-l">通过</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">已启用</span></td>
|
||||||
|
<td class="td-manage">
|
||||||
|
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用" class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
|
||||||
|
<a title="编辑" onclick="member_edit('编辑','member-add.html','4','','510')" href="javascript:;" class="btn btn-xs btn-info" ><i class="icon-edit bigger-120"></i></a>
|
||||||
|
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning" ><i class="icon-trash bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="25px"><label><input type="checkbox" class="ace" ><span class="lbl"></span></label></td>
|
||||||
|
<td width="80px">32122</td>
|
||||||
|
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">小米 Max 全网通 高配版 3GB内存 64GB ROM 金色 移动联通电信4G手机Y</u></td>
|
||||||
|
<td width="100px">5467</td>
|
||||||
|
<td width="100px">4525</td>
|
||||||
|
<td width="100px">法国</td>
|
||||||
|
<td width="180px">2014-6-11 11:11:42</td>
|
||||||
|
<td class="text-l">通过</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">已启用</span></td>
|
||||||
|
<td class="td-manage">
|
||||||
|
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用" class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
|
||||||
|
<a title="编辑" onclick="member_edit('编辑','member-add.html','4','','510')" href="javascript:;" class="btn btn-xs btn-info" ><i class="icon-edit bigger-120"></i></a>
|
||||||
|
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning" ><i class="icon-trash bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td width="25px"><label><input type="checkbox" class="ace" ><span class="lbl"></span></label></td>
|
||||||
|
<td width="80px">767544</td>
|
||||||
|
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">小米 Max 全网通 高配版 3GB内存 64GB ROM 金色 移动联通电信4G手机Y</u></td>
|
||||||
|
<td width="100px">5467</td>
|
||||||
|
<td width="100px">4525</td>
|
||||||
|
<td width="100px">法国</td>
|
||||||
|
<td width="180px">2014-6-11 11:11:42</td>
|
||||||
|
<td class="text-l">通过</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">已启用</span></td>
|
||||||
|
<td class="td-manage">
|
||||||
|
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用" class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
|
||||||
|
<a title="编辑" onclick="member_edit('编辑','member-add.html','4','','510')" href="javascript:;" class="btn btn-xs btn-info" ><i class="icon-edit bigger-120"></i></a>
|
||||||
|
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning" ><i class="icon-trash bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td width="25px"><label><input type="checkbox" class="ace" ><span class="lbl"></span></label></td>
|
||||||
|
<td width="80px">23466</td>
|
||||||
|
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">小米 Max 全网通 高配版 3GB内存 64GB ROM 金色 移动联通电信4G手机Y</u></td>
|
||||||
|
<td width="100px">5467</td>
|
||||||
|
<td width="100px">4525</td>
|
||||||
|
<td width="100px">法国</td>
|
||||||
|
<td width="180px">2014-6-11 11:11:42</td>
|
||||||
|
<td class="text-l">通过</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">已启用</span></td>
|
||||||
|
<td class="td-manage">
|
||||||
|
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用" class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
|
||||||
|
<a title="编辑" onclick="member_edit('编辑','member-add.html','4','','510')" href="javascript:;" class="btn btn-xs btn-info" ><i class="icon-edit bigger-120"></i></a>
|
||||||
|
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning" ><i class="icon-trash bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td width="25px"><label><input type="checkbox" class="ace" ><span class="lbl"></span></label></td>
|
||||||
|
<td width="80px">54533</td>
|
||||||
|
<td width="250px"><u style="cursor:pointer" class="text-primary" onclick="">小米 Max 全网通 高配版 3GB内存 64GB ROM 金色 移动联通电信4G手机Y</u></td>
|
||||||
|
<td width="100px">5467</td>
|
||||||
|
<td width="100px">4525</td>
|
||||||
|
<td width="100px">法国</td>
|
||||||
|
<td width="180px">2014-6-11 11:11:42</td>
|
||||||
|
<td class="text-l">通过</td>
|
||||||
|
<td class="td-status"><span class="label label-success radius">已启用</span></td>
|
||||||
|
<td class="td-manage">
|
||||||
|
<a onClick="member_stop(this,'10001')" href="javascript:;" title="停用" class="btn btn-xs btn-success"><i class="icon-ok bigger-120"></i></a>
|
||||||
|
<a title="编辑" onclick="member_edit('编辑','member-add.html','4','','510')" href="javascript:;" class="btn btn-xs btn-info" ><i class="icon-edit bigger-120"></i></a>
|
||||||
|
<a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="btn btn-xs btn-warning" ><i class="icon-trash bigger-120"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr> -->
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
<script>
|
||||||
|
jQuery(function ($) {
|
||||||
|
var oTable1 = $('#sample-table').dataTable({
|
||||||
|
"aaSorting": [[1, "desc"]],//默认第几个排序
|
||||||
|
"bStateSave": true,//状态保存
|
||||||
|
"aoColumnDefs": [
|
||||||
|
//{"bVisible": false, "aTargets": [ 3 ]} //控制列的隐藏显示
|
||||||
|
{ "orderable": false, "aTargets": [0, 2, 3, 4, 5, 8, 9] }// 制定列不参与排序
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
$('table th input:checkbox').on('click', function () {
|
||||||
|
var that = this;
|
||||||
|
$(this).closest('table').find('tr > td:first-child input:checkbox')
|
||||||
|
.each(function () {
|
||||||
|
this.checked = that.checked;
|
||||||
|
$(this).closest('tr').toggleClass('selected');
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
$('[data-rel="tooltip"]').tooltip({ placement: tooltip_placement });
|
||||||
|
function tooltip_placement(context, source) {
|
||||||
|
var $source = $(source);
|
||||||
|
var $parent = $source.closest('table')
|
||||||
|
var off1 = $parent.offset();
|
||||||
|
var w1 = $parent.width();
|
||||||
|
|
||||||
|
var off2 = $source.offset();
|
||||||
|
var w2 = $source.width();
|
||||||
|
|
||||||
|
if (parseInt(off2.left) < parseInt(off1.left) + parseInt(w1 / 2)) return 'right';
|
||||||
|
return 'left';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
laydate({
|
||||||
|
elem: '#start',
|
||||||
|
event: 'focus'
|
||||||
|
});
|
||||||
|
$(function () {
|
||||||
|
$("#products_style").fix({
|
||||||
|
float: 'left',
|
||||||
|
//minStatue : true,
|
||||||
|
skin: 'green',
|
||||||
|
durationTime: false,
|
||||||
|
spacingw: 30,//设置隐藏时的距离
|
||||||
|
spacingh: 260,//设置显示时间距
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
//初始化宽度、高度
|
||||||
|
$(".widget-box").height($(window).height() - 215);
|
||||||
|
$(".table_menu_list").width($(window).width() - 260);
|
||||||
|
$(".table_menu_list").height($(window).height() - 215);
|
||||||
|
//当文档窗口发生改变时 触发
|
||||||
|
$(window).resize(function () {
|
||||||
|
$(".widget-box").height($(window).height() - 215);
|
||||||
|
$(".table_menu_list").width($(window).width() - 260);
|
||||||
|
$(".table_menu_list").height($(window).height() - 215);
|
||||||
|
})
|
||||||
|
|
||||||
|
/*******树状图*******/
|
||||||
|
var setting = {
|
||||||
|
view: {
|
||||||
|
dblClickExpand: false,
|
||||||
|
showLine: false,
|
||||||
|
selectedMulti: false
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
simpleData: {
|
||||||
|
enable: true,
|
||||||
|
idKey: "id",
|
||||||
|
pIdKey: "pId",
|
||||||
|
rootPId: ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
callback: {
|
||||||
|
beforeClick: function (treeId, treeNode) {
|
||||||
|
var zTree = $.fn.zTree.getZTreeObj("tree");
|
||||||
|
if (treeNode.isParent) {
|
||||||
|
zTree.expandNode(treeNode);
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
demoIframe.attr("src", treeNode.file + ".html");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var zNodes = [
|
||||||
|
{ id: 1, pId: 0, name: "文章分类列表", open: true },
|
||||||
|
{ id: 11, pId: 1, name: "旅游纪念品" },
|
||||||
|
// { id: 111, pId: 11, name: "蔬菜" },
|
||||||
|
// { id: 112, pId: 11, name: "苹果" },
|
||||||
|
// { id: 113, pId: 11, name: "大蒜" },
|
||||||
|
// { id: 114, pId: 11, name: "白菜" },
|
||||||
|
// { id: 115, pId: 11, name: "青菜" },
|
||||||
|
{ id: 12, pId: 1, name: "动漫游戏" },
|
||||||
|
// { id: 121, pId: 12, name: "手机 " },
|
||||||
|
// { id: 122, pId: 12, name: "照相机 " },
|
||||||
|
{ id: 13, pId: 1, name: "影视音像" },
|
||||||
|
// { id: 131, pId: 13, name: "手机 " },
|
||||||
|
// { id: 122, pId: 13, name: "照相机 " },
|
||||||
|
{ id: 14, pId: 1, name: "书画艺术" },
|
||||||
|
// { id: 141, pId: 14, name: "手机 " },
|
||||||
|
// { id: 42, pId: 14, name: "照相机 " },
|
||||||
|
{ id: 15, pId: 1, name: "传媒出版" },
|
||||||
|
{ id: 16, pId: 1, name: "工艺美术" },
|
||||||
|
];
|
||||||
|
|
||||||
|
var code;
|
||||||
|
|
||||||
|
function showCode(str) {
|
||||||
|
if (!code) code = $("#code");
|
||||||
|
code.empty();
|
||||||
|
code.append("<li>" + str + "</li>");
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).ready(function () {
|
||||||
|
var t = $("#treeDemo");
|
||||||
|
t = $.fn.zTree.init(t, setting, zNodes);
|
||||||
|
demoIframe = $("#testIframe");
|
||||||
|
demoIframe.bind("load", loadReady);
|
||||||
|
var zTree = $.fn.zTree.getZTreeObj("tree");
|
||||||
|
zTree.selectNode(zTree.getNodeByParam("id", '11'));
|
||||||
|
});
|
||||||
|
/*产品-停用*/
|
||||||
|
function member_stop(obj, id) {
|
||||||
|
layer.confirm('确认要停用吗?', function (index) {
|
||||||
|
$(obj).parents("tr").find(".td-manage").prepend('<a style="text-decoration:none" class="btn btn-xs " onClick="member_start(this,id)" href="javascript:;" title="启用"><i class="icon-ok bigger-120"></i></a>');
|
||||||
|
$(obj).parents("tr").find(".td-status").html('<span class="label label-defaunt radius">已停用</span>');
|
||||||
|
$(obj).remove();
|
||||||
|
layer.msg('已停用!', { icon: 5, time: 1000 });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/*产品-启用*/
|
||||||
|
function member_start(obj, id) {
|
||||||
|
layer.confirm('确认要启用吗?', function (index) {
|
||||||
|
$(obj).parents("tr").find(".td-manage").prepend('<a style="text-decoration:none" class="btn btn-xs btn-success" onClick="member_stop(this,id)" href="javascript:;" title="停用"><i class="icon-ok bigger-120"></i></a>');
|
||||||
|
$(obj).parents("tr").find(".td-status").html('<span class="label label-success radius">已启用</span>');
|
||||||
|
$(obj).remove();
|
||||||
|
layer.msg('已启用!', { icon: 6, time: 1000 });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/*产品-编辑*/
|
||||||
|
function member_edit(title, url, id, w, h) {
|
||||||
|
layer_show(title, url, w, h);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*产品-删除*/
|
||||||
|
function member_del(obj, id) {
|
||||||
|
layer.confirm('确认要删除吗?', function (index) {
|
||||||
|
$(obj).parents("tr").remove();
|
||||||
|
layer.msg('已删除!', { icon: 1, time: 1000 });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//面包屑返回值
|
||||||
|
var index = parent.layer.getFrameIndex(window.name);
|
||||||
|
parent.layer.iframeAuto(index);
|
||||||
|
$('.Order_form').on('click', function () {
|
||||||
|
var cname = $(this).attr("title");
|
||||||
|
var chref = $(this).attr("href");
|
||||||
|
var cnames = parent.$('.Current_page').html();
|
||||||
|
var herf = parent.$("#iframe").attr("src");
|
||||||
|
parent.$('#parentIframe').html(cname);
|
||||||
|
parent.$('#iframe').attr("src", chref).ready();;
|
||||||
|
parent.$('#parentIframe').css("display", "inline-block");
|
||||||
|
parent.$('.Current_page').attr({ "name": herf, "href": "javascript:void(0)" }).css({ "color": "#4c8fbd", "cursor": "pointer" });
|
||||||
|
//parent.$('.Current_page').html("<a href='javascript:void(0)' name="+herf+" class='iframeurl'>" + cnames + "</a>");
|
||||||
|
parent.layer.close(index);
|
||||||
|
|
||||||
|
});
|
||||||
|
</script>
|
@ -0,0 +1,119 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta name="renderer" content="webkit|ie-comp|ie-stand">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
|
<meta http-equiv="Cache-Control" content="no-siteapp" />
|
||||||
|
<link href="assets/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
<link rel="stylesheet" href="css/style.css"/>
|
||||||
|
<link href="assets/css/codemirror.css" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="assets/css/ace.min.css" />
|
||||||
|
<link rel="stylesheet" href="font/css/font-awesome.min.css" />
|
||||||
|
<script src="js/jquery-1.9.1.min.js"></script>
|
||||||
|
<script src="assets/js/bootstrap.min.js"></script>
|
||||||
|
<script src="assets/js/typeahead-bs2.min.js"></script>
|
||||||
|
<script src="assets/js/jquery.dataTables.min.js"></script>
|
||||||
|
<script src="assets/js/jquery.dataTables.bootstrap.js"></script>
|
||||||
|
<script src="assets/layer/layer.js" type="text/javascript" ></script>
|
||||||
|
<script src="js/H-ui.js" type="text/javascript"></script>
|
||||||
|
<script src="js/displayPart.js" type="text/javascript"></script>
|
||||||
|
<script src="assets/laydate/laydate.js" type="text/javascript"></script>
|
||||||
|
<title>系统日志</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="margin clearfix">
|
||||||
|
<div id="system_style">
|
||||||
|
<div class="search_style">
|
||||||
|
|
||||||
|
<ul class="search_content clearfix">
|
||||||
|
<li><label class="l_f">名称</label><input name="" type="text" class="text_add"style=" width:250px"></li>
|
||||||
|
<li><label class="l_f">时间</label><input class="inline laydate-icon" id="start" style=" margin-left:10px;"></li>
|
||||||
|
<li style="width:90px;"><button type="button" class="btn_search"><i class="fa fa-search"></i>查询</button></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!--系统日志-->
|
||||||
|
<div class="system_logs">
|
||||||
|
<table class="table table-striped table-bordered table-hover" id="sample-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="80px">ID</th>
|
||||||
|
<th width="120px">登录用户</th>
|
||||||
|
<th width="120px">角色</th>
|
||||||
|
<th width="">操作内容</th>
|
||||||
|
<th width="150px">操作时间</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<!-- <tr>
|
||||||
|
<td>1233</td>
|
||||||
|
<td>admin</td>
|
||||||
|
<td>超级管理员</td>
|
||||||
|
<td>添加商品名称我的用凤凰花刮大风</td>
|
||||||
|
<td>2016-7-26 12:34</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>3434</td>
|
||||||
|
<td>admin</td>
|
||||||
|
<td>超级管理员</td>
|
||||||
|
<td>添加商品名称我的用凤凰花刮大风</td>
|
||||||
|
<td>2016-7-26 11:23</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>2423</td>
|
||||||
|
<td>admin</td>
|
||||||
|
<td>超级管理员</td>
|
||||||
|
<td>添加商品名称我的用凤凰花刮大风</td>
|
||||||
|
<td>2016-7-26 13:34</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>555</td>
|
||||||
|
<td>admin</td>
|
||||||
|
<td>超级管理员</td>
|
||||||
|
<td>添加商品名称我的用凤凰花刮大风</td>
|
||||||
|
<td>2016-7-16</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>1233</td>
|
||||||
|
<td>admin</td>
|
||||||
|
<td>超级管理员</td>
|
||||||
|
<td>添加商品名称我的用凤凰花刮大风</td>
|
||||||
|
<td>2016-6-26</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>1233</td>
|
||||||
|
<td>admin</td>
|
||||||
|
<td>超级管理员</td>
|
||||||
|
<td>添加商品名称我的用凤凰花刮大风</td>
|
||||||
|
<td>2016-4-26</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>5345</td>
|
||||||
|
<td>admin</td>
|
||||||
|
<td>超级管理员</td>
|
||||||
|
<td>添加商品名称我的用凤凰花刮大风</td>
|
||||||
|
<td>2016-5-26</td>
|
||||||
|
</tr> -->
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
<script>
|
||||||
|
laydate({
|
||||||
|
elem: '#start',
|
||||||
|
event: 'focus'
|
||||||
|
});
|
||||||
|
$(function() {
|
||||||
|
var oTable1 = $('#sample-table').dataTable( {
|
||||||
|
"aaSorting":false,//默认第几个排序
|
||||||
|
"bStateSave": true,//状态保存
|
||||||
|
"aoColumnDefs": [
|
||||||
|
//{"bVisible": false, "aTargets": [ 3 ]} //控制列的隐藏显示
|
||||||
|
{"orderable":false,"aTargets":[0,1,2,3]}// 制定列不参与排序
|
||||||
|
]});
|
||||||
|
})
|
||||||
|
</script>
|
@ -0,0 +1,14 @@
|
|||||||
|
var $lang={
|
||||||
|
errAlertMsg: "Invalid date or the date out of range,redo or not?",
|
||||||
|
aWeekStr: ["wk", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
|
||||||
|
aLongWeekStr:["wk","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],
|
||||||
|
aMonStr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
|
||||||
|
aLongMonStr: ["January","February","March","April","May","June","July","August","September","October","November","December"],
|
||||||
|
clearStr: "Clear",
|
||||||
|
todayStr: "Today",
|
||||||
|
okStr: "OK",
|
||||||
|
updateStr: "OK",
|
||||||
|
timeStr: "Time",
|
||||||
|
quickStr: "Quick Selection",
|
||||||
|
err_1: 'MinDate Cannot be bigger than MaxDate!'
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
var $lang={
|
||||||
|
errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\u683C\u5F0F\u6216\u8005\u65E5\u671F\u8D85\u51FA\u9650\u5B9A\u8303\u56F4,\u9700\u8981\u64A4\u9500\u5417?",
|
||||||
|
aWeekStr: ["\u5468","\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"],
|
||||||
|
aLongWeekStr:["\u5468","\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"],
|
||||||
|
aMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00","\u5341\u4E8C"],
|
||||||
|
aLongMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],
|
||||||
|
clearStr: "\u6E05\u7A7A",
|
||||||
|
todayStr: "\u4ECA\u5929",
|
||||||
|
okStr: "\u786E\u5B9A",
|
||||||
|
updateStr: "\u786E\u5B9A",
|
||||||
|
timeStr: "\u65F6\u95F4",
|
||||||
|
quickStr: "\u5FEB\u901F\u9009\u62E9",
|
||||||
|
err_1: '\u6700\u5C0F\u65E5\u671F\u4E0D\u80FD\u5927\u4E8E\u6700\u5927\u65E5\u671F!'
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
var $lang={
|
||||||
|
errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\u683C\u5F0F\u6216\u8005\u65E5\u671F\u8D85\u51FA\u9650\u5B9A\u7BC4\u570D,\u9700\u8981\u64A4\u92B7\u55CE?",
|
||||||
|
aWeekStr: ["\u5468","\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"],
|
||||||
|
aLongWeekStr:["\u5468","\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"],
|
||||||
|
aMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00","\u5341\u4E8C"],
|
||||||
|
aLongMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],
|
||||||
|
clearStr: "\u6E05\u7A7A",
|
||||||
|
todayStr: "\u4ECA\u5929",
|
||||||
|
okStr: "\u78BA\u5B9A",
|
||||||
|
updateStr: "\u78BA\u5B9A",
|
||||||
|
timeStr: "\u6642\u9593",
|
||||||
|
quickStr: "\u5FEB\u901F\u9078\u64C7",
|
||||||
|
err_1: '\u6700\u5C0F\u65E5\u671F\u4E0D\u80FD\u5927\u65BC\u6700\u5927\u65E5\u671F!'
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
.Wdate{
|
||||||
|
background:#fff url(datePicker.gif) no-repeat right;
|
||||||
|
}
|
||||||
|
.Wdate::-ms-clear{display:none;}
|
||||||
|
|
||||||
|
.WdateFmtErr{
|
||||||
|
font-weight:bold;
|
||||||
|
color:red;
|
||||||
|
}
|
After Width: | Height: | Size: 1.0 KiB |
@ -0,0 +1 @@
|
|||||||
|
body,th,td,button,input,select,textarea{font-family:"Microsoft Yahei","Hiragino Sans GB","Helvetica Neue",Helvetica,tahoma,arial,"WenQuanYi Micro Hei",Verdana,sans-serif,"\5B8B\4F53";font-size:12px;color: #333;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing:grayscale}.WdateDiv{width:180px;background-color:#fff;border:#bbb 1px solid;padding:2px}.WdateDiv2{width:360px}.WdateDiv *{font-size:9pt}.WdateDiv .NavImg a{display:block;cursor:pointer;height:16px;width:16px}.WdateDiv .NavImgll a{float:left;background:transparent url(img.gif) no-repeat scroll 0 0}.WdateDiv .NavImgl a{float:left;background:transparent url(img.gif) no-repeat scroll -16px 0}.WdateDiv .NavImgr a{float:right;background:transparent url(img.gif) no-repeat scroll -32px 0}.WdateDiv .NavImgrr a{float:right;background:transparent url(img.gif) no-repeat scroll -48px 0}.WdateDiv #dpTitle{height:24px;margin-bottom:2px;padding:1px}.WdateDiv .yminput{margin-top:2px;text-align:center;height:20px;border:0;width:50px;cursor:pointer}.WdateDiv .yminputfocus{margin-top:2px;text-align:center;font-weight:bold;height:20px;color:blue;border:#ccc 1px solid;width:50px}.WdateDiv .menuSel{z-index:1;position:absolute;background-color:#fff;border:#ddd 1px solid;display:none}.WdateDiv .menu{cursor:pointer;background-color:#fff}.WdateDiv .menuOn{cursor:pointer;background-color:#beebee}.WdateDiv .invalidMenu{color:#aaa}.WdateDiv .YMenu{margin-top:20px}.WdateDiv .MMenu{margin-top:20px;*width:62px}.WdateDiv .hhMenu{margin-top:-90px;margin-left:26px}.WdateDiv .mmMenu{margin-top:-46px;margin-left:26px}.WdateDiv .ssMenu{margin-top:-24px;margin-left:26px}.WdateDiv .Wweek{text-align:center;background:#daf3f5;border-right:#ddd 1px solid}.WdateDiv .MTitle{background-color:#5a98de;color:#fff}.WdateDiv .MTitle td{ color:#fff}.WdateDiv .WdayTable2{border-collapse:collapse;border:#c5d9e8 1px solid}.WdateDiv .WdayTable2 table{border:0}.WdateDiv .WdayTable{line-height:20px;border:#c5d9e8 1px solid}.WdateDiv .WdayTable td{text-align:center;}.WdateDiv .Wday{cursor:pointer}.WdateDiv .WdayOn{cursor:pointer;background-color:#5a98de;color:#fff}.WdateDiv .Wwday{cursor:pointer;color:#ff2f2f}.WdateDiv .WwdayOn{cursor:pointer;color:#fff;background-color:#5a98de}.WdateDiv .Wtoday{cursor:pointer;color:blue}.WdateDiv .Wselday{background-color:#5a98de;color:#fff}.WdateDiv .WspecialDay{background-color:#66f4df}.WdateDiv .WotherDay{cursor:pointer;color:#428bca}.WdateDiv .WotherDayOn{cursor:pointer;background-color:#5a98de;color:#fff}.WdateDiv .WinvalidDay{color:#aaa}.WdateDiv #dpTime{float:left;margin-top:3px;margin-right:30px}.WdateDiv #dpTime #dpTimeStr{margin-left:1px}.WdateDiv #dpTime input{width:18px;height:20px;text-align:center;border:#ccc 1px solid}.WdateDiv #dpTime .tB{border-right:0}.WdateDiv #dpTime .tE{border-left:0;border-right:0}.WdateDiv #dpTime .tm{width:7px;border-left:0;border-right:0}.WdateDiv #dpTime #dpTimeUp{height:10px;width:13px;border:0;background:url(img.gif) no-repeat -32px -16px}.WdateDiv #dpTime #dpTimeDown{height:10px;width:13px;border:0;background:url(img.gif) no-repeat -48px -16px}.WdateDiv #dpQS{float:left;margin-right:3px;margin-top:3px;background:url(img.gif) no-repeat 0 -16px;width:20px;height:20px;cursor:pointer}.WdateDiv #dpControl{text-align:right}.WdateDiv .dpButton{height:20px;width:45px;border:#ccc 1px solid;margin-top:2px;margin-right:1px}
|
After Width: | Height: | Size: 1.5 KiB |
@ -0,0 +1,339 @@
|
|||||||
|
/*
|
||||||
|
* My97 DatePicker 4.8
|
||||||
|
* auther : zhangkun , hejianting(design)
|
||||||
|
* email : zhangkun_net@hotmail.com
|
||||||
|
* date : 2012-05-25
|
||||||
|
*/
|
||||||
|
.WdateDiv
|
||||||
|
{
|
||||||
|
position:relative;
|
||||||
|
padding:5px;
|
||||||
|
width:180px;
|
||||||
|
*width:190px;
|
||||||
|
font-size:12px;
|
||||||
|
color:#333;
|
||||||
|
border:solid 1px #DEDEDE;
|
||||||
|
background-color:#F2F0F1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv2
|
||||||
|
{
|
||||||
|
width:360px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .NavImg a,.WdateDiv .yminput,.WdateDiv .yminputfocus,.WdateDiv #dpQS
|
||||||
|
{
|
||||||
|
background:url(img.gif) no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .NavImg a
|
||||||
|
{
|
||||||
|
float:left;
|
||||||
|
width:16px;
|
||||||
|
height:16px;
|
||||||
|
cursor:pointer;
|
||||||
|
}
|
||||||
|
.WdateDiv .NavImgll a
|
||||||
|
{
|
||||||
|
background-position:0px 5px;
|
||||||
|
}
|
||||||
|
.WdateDiv .NavImgl a
|
||||||
|
{
|
||||||
|
background-position:0px -10px;
|
||||||
|
}
|
||||||
|
.WdateDiv .NavImgr a
|
||||||
|
{
|
||||||
|
background-position:0px -25px;
|
||||||
|
float:right;
|
||||||
|
}
|
||||||
|
.WdateDiv .NavImgrr a
|
||||||
|
{
|
||||||
|
background-position:0px -40px;
|
||||||
|
float:right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv #dpTitle
|
||||||
|
{
|
||||||
|
padding:3px 0px 0px 0px;
|
||||||
|
line-height:0px;
|
||||||
|
height:20px;
|
||||||
|
*height:23;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .yminput,.WdateDiv .yminputfocus
|
||||||
|
{
|
||||||
|
margin-left:3px;
|
||||||
|
width:50px;
|
||||||
|
height:20px;
|
||||||
|
line-height:16px;
|
||||||
|
border:solid 1px #F2F0F1;
|
||||||
|
cursor:pointer;
|
||||||
|
background-position:35px -68px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .yminputfocus
|
||||||
|
{
|
||||||
|
background-color:#fff;
|
||||||
|
border:solid 1px #D8D8D8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .menuSel{
|
||||||
|
z-index:1;
|
||||||
|
position:absolute;
|
||||||
|
background-color:#FFFFFF;
|
||||||
|
border:#A3C6C8 1px solid;
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .menu
|
||||||
|
{
|
||||||
|
background:#fff;
|
||||||
|
}
|
||||||
|
.WdateDiv .menuOn
|
||||||
|
{
|
||||||
|
color:#fff;
|
||||||
|
background:#64A3F3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .invalidMenu{
|
||||||
|
color:#aaa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .MMenu,.WdateDiv .YMenu
|
||||||
|
{
|
||||||
|
padding:2px;
|
||||||
|
margin-top:20px;
|
||||||
|
margin-left:-1px;
|
||||||
|
width:68px;
|
||||||
|
border:solid 1px #D9D9D9;
|
||||||
|
}
|
||||||
|
.WdateDiv .MMenu table,.WdateDiv .YMenu table
|
||||||
|
{
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
.WdateDiv .MMenu table td,.WdateDiv .YMenu table td
|
||||||
|
{
|
||||||
|
padding:0px;
|
||||||
|
line-height:20px;
|
||||||
|
text-align:center;
|
||||||
|
font-size:12px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .Wweek {
|
||||||
|
text-align:center;
|
||||||
|
background:#DAF3F5;
|
||||||
|
border-right:#BDEBEE 1px solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv td
|
||||||
|
{
|
||||||
|
padding:1px;
|
||||||
|
line-height:20px;
|
||||||
|
font-size:12px;
|
||||||
|
color:#999999;
|
||||||
|
background:#fff;
|
||||||
|
cursor:pointer;
|
||||||
|
}
|
||||||
|
.WdateDiv .MTitle td
|
||||||
|
{
|
||||||
|
line-height:24px;
|
||||||
|
color:#7D7D7D;
|
||||||
|
background:#F2F0F1;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .WdayTable2
|
||||||
|
{
|
||||||
|
border-collapse:collapse;
|
||||||
|
border:#808080 1px solid;
|
||||||
|
}
|
||||||
|
.WdateDiv .WdayTable2 table
|
||||||
|
{
|
||||||
|
border:0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .WdayTable{
|
||||||
|
line-height:20px;
|
||||||
|
color:#13777e;
|
||||||
|
background-color:#edfbfb;
|
||||||
|
}
|
||||||
|
.WdateDiv .WdayTable td{
|
||||||
|
text-align:center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .Wday
|
||||||
|
{
|
||||||
|
color:#323232;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .WdayOn
|
||||||
|
{
|
||||||
|
color:#fff;
|
||||||
|
background-color:#65A2F3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .Wwday
|
||||||
|
{
|
||||||
|
color:#65A4F3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .WwdayOn
|
||||||
|
{
|
||||||
|
color:#fff;
|
||||||
|
background-color:#65A2F3;
|
||||||
|
}
|
||||||
|
.WdateDiv .Wtoday
|
||||||
|
{
|
||||||
|
color:#FF6D10;
|
||||||
|
background:#E0EDFE;
|
||||||
|
}
|
||||||
|
.WdateDiv .Wselday
|
||||||
|
{
|
||||||
|
color:#fff;
|
||||||
|
background-color:#65A2F3;
|
||||||
|
}
|
||||||
|
.WdateDiv .WspecialDay{
|
||||||
|
background-color:#66F4DF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .WotherDay
|
||||||
|
{
|
||||||
|
color:#D4D4D4;
|
||||||
|
}
|
||||||
|
.WdateDiv .WotherDayOn
|
||||||
|
{
|
||||||
|
color:#fff;
|
||||||
|
background-color:#65A2F3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .WinvalidDay{
|
||||||
|
color:#aaa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv #dpTime
|
||||||
|
{
|
||||||
|
position:relative;
|
||||||
|
margin-top:5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv #dpTime #dpTimeStr
|
||||||
|
{
|
||||||
|
display:inline-block;
|
||||||
|
width:28px;
|
||||||
|
*width:30px;
|
||||||
|
color:#7d7d7d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv #dpTime input
|
||||||
|
{
|
||||||
|
padding:0px;
|
||||||
|
margin:0px;
|
||||||
|
width:25px;
|
||||||
|
height:20px;
|
||||||
|
line-height:20px;
|
||||||
|
text-align:center;
|
||||||
|
color:#333;
|
||||||
|
border:#D9D9D9 1px solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv #dpTime .tm
|
||||||
|
{
|
||||||
|
width:7px;
|
||||||
|
border:none;
|
||||||
|
background:#F2F0F1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv #dpTime #dpTimeUp
|
||||||
|
{
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv #dpTime #dpTimeDown
|
||||||
|
{
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv #dpQS
|
||||||
|
{
|
||||||
|
float:left;
|
||||||
|
margin-right:3px;
|
||||||
|
margin-top:9px;
|
||||||
|
*margin-top:6px;
|
||||||
|
width:16px;
|
||||||
|
height:16px;
|
||||||
|
cursor:pointer;
|
||||||
|
background-position:0px -90px;
|
||||||
|
}
|
||||||
|
.WdateDiv #dpControl
|
||||||
|
{
|
||||||
|
text-align:right;
|
||||||
|
margin-top:3px;
|
||||||
|
}
|
||||||
|
.WdateDiv .dpButton
|
||||||
|
{
|
||||||
|
margin-left:2px;
|
||||||
|
line-height:18px;
|
||||||
|
*line-height:16px;
|
||||||
|
width:45px;
|
||||||
|
background-color:#C3C3C3;
|
||||||
|
*background-color:#64A3F3;
|
||||||
|
color:#fff;
|
||||||
|
border:none;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.WdateDiv .dpButton:hover
|
||||||
|
{
|
||||||
|
background-color:#64A3F3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .hhMenu,
|
||||||
|
.WdateDiv .mmMenu,
|
||||||
|
.WdateDiv .ssMenu
|
||||||
|
{
|
||||||
|
position:absolute;
|
||||||
|
padding:3px;
|
||||||
|
font-size:12px;
|
||||||
|
color:#333;
|
||||||
|
border:solid 1px #DEDEDE;
|
||||||
|
background-color:#F2F0F1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv #dpTime .menu,.WdateDiv #dpTime .menuOn
|
||||||
|
{
|
||||||
|
width:18px;
|
||||||
|
height:18px;
|
||||||
|
line-height:18px;
|
||||||
|
text-align:center;
|
||||||
|
background:#fff;
|
||||||
|
}
|
||||||
|
.WdateDiv #dpTime .menuOn
|
||||||
|
{
|
||||||
|
background:#65A2F3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv #dpTime td
|
||||||
|
{
|
||||||
|
background:#F2F0F1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .hhMenu
|
||||||
|
{
|
||||||
|
top:-87px;
|
||||||
|
left:35px;
|
||||||
|
left:32px\9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .mmMenu
|
||||||
|
{
|
||||||
|
top:-47px;
|
||||||
|
left:35px;
|
||||||
|
left:32px\9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .ssMenu
|
||||||
|
{
|
||||||
|
top:-27px;
|
||||||
|
left:35px;
|
||||||
|
left:32px\9;
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
.WdateDiv{position:relative;width:190px;font-size:12px;color:#333;border:solid 1px #DEDEDE;background-color:#F2F0F1;padding:5px;}.WdateDiv2{width:360px;}.WdateDiv .NavImg a,.WdateDiv .yminput,.WdateDiv .yminputfocus,.WdateDiv #dpQS{background:url(img.gif) no-repeat;}.WdateDiv .NavImg a{float:left;width:16px;height:16px;cursor:pointer;}.WdateDiv .NavImgll a{background-position:0 5px;}.WdateDiv .NavImgl a{background-position:0 -10px;}.WdateDiv .NavImgr a{background-position:0 -25px;float:right;}.WdateDiv .NavImgrr a{background-position:0 -40px;float:right;}.WdateDiv #dpTitle{line-height:0;height:23px;padding:3px 0 0;}.WdateDiv .yminput,.WdateDiv .yminputfocus{margin-left:3px;width:50px;height:20px;line-height:16px;border:solid 1px #F2F0F1;cursor:pointer;background-position:35px -68px;}.WdateDiv .yminputfocus{background-color:#fff;border:solid 1px #D8D8D8;}.WdateDiv .menuSel{z-index:1;position:absolute;background-color:#FFF;border:#A3C6C8 1px solid;display:none;}.WdateDiv .menu{background:#fff;}.WdateDiv .menuOn{color:#fff;background:#FFC600;}.WdateDiv .MMenu,.WdateDiv .YMenu{margin-top:20px;margin-left:-1px;width:68px;border:solid 1px #D9D9D9;padding:2px;}.WdateDiv .MMenu table,.WdateDiv .YMenu table{width:100%;}.WdateDiv .MMenu table td,.WdateDiv .YMenu table td{line-height:20px;text-align:center;font-size:14px;cursor:pointer;padding:0;}.WdateDiv .Wweek{text-align:center;background:#DAF3F5;border-right:#BDEBEE 1px solid;}.WdateDiv td{line-height:20px;font-size:12px;color:#999;background:#fff;cursor:pointer;padding:1px;}.WdateDiv .MTitle td{line-height:24px;color:#7D7D7D;background:#F2F0F1;cursor:default;}.WdateDiv .WdayTable2{border-collapse:collapse;border:gray 1px solid;}.WdateDiv .WdayTable2 table{border:0;}.WdateDiv .WdayTable{line-height:20px;color:#13777e;background-color:#edfbfb;}.WdateDiv .WdayTable td{text-align:center;}.WdateDiv .Wday{color:#323232;}.WdateDiv .Wwday{color:#FFC600;}.WdateDiv .Wtoday{color:#FF6D10;background:#E0EDFE;}.WdateDiv .WspecialDay{background-color:#66F4DF;}.WdateDiv .WotherDay{color:#D4D4D4;}.WdateDiv #dpTime{position:relative;margin-top:5px;}.WdateDiv #dpTime #dpTimeStr{display:inline-block;width:30px;color:#7d7d7d;}.WdateDiv #dpTime input{width:25px;height:20px;line-height:20px;text-align:center;color:#333;border:#D9D9D9 1px solid;margin:0;padding:0;}.WdateDiv #dpTime .tm{width:7px;border:none;background:#F2F0F1;}.WdateDiv #dpQS{float:left;margin-right:3px;margin-top:6px;width:16px;height:16px;cursor:pointer;background-position:0 -90px;}.WdateDiv #dpControl{text-align:right;margin-top:3px;}.WdateDiv .dpButton{margin-left:2px;line-height:16px;width:45px;background-color:#FFC600;color:#fff;border:none;cursor:pointer;}.WdateDiv .dpButton:hover{background-color:#FFC600;}.WdateDiv .hhMenu,.WdateDiv .mmMenu,.WdateDiv .ssMenu{position:absolute;font-size:12px;color:#333;border:solid 1px #DEDEDE;background-color:#F2F0F1;padding:3px;}.WdateDiv #dpTime .menu,.WdateDiv #dpTime .menuOn{width:18px;height:18px;line-height:18px;text-align:center;background:#fff;}.WdateDiv #dpTime .menuOn{background:#FFC600;}.WdateDiv #dpTime td{background:#F2F0F1;}.WdateDiv .hhMenu{top:-87px;left:32px;}.WdateDiv .mmMenu{top:-47px;left:32px;}.WdateDiv .ssMenu{top:-27px;left:32px;}.WdateDiv .invalidMenu,.WdateDiv .WinvalidDay{color:#aaa;}.WdateDiv .WdayOn,.WdateDiv .WwdayOn,.WdateDiv .Wselday,.WdateDiv .WotherDayOn{background-color:#FFC600;color:#fff;}.WdateDiv #dpTime #dpTimeUp,.WdateDiv #dpTime #dpTimeDown{display:none;}
|
After Width: | Height: | Size: 475 B |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 307 B |
@ -0,0 +1,256 @@
|
|||||||
|
/*
|
||||||
|
* My97 DatePicker 4.8 Skin:whyGreen
|
||||||
|
*/
|
||||||
|
.WdateDiv{
|
||||||
|
width:180px;
|
||||||
|
background-color:#fff;
|
||||||
|
border:#C5E1E4 1px solid;
|
||||||
|
padding:2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv2{
|
||||||
|
width:360px;
|
||||||
|
}
|
||||||
|
.WdateDiv *{font-size:9pt;}
|
||||||
|
|
||||||
|
.WdateDiv .NavImg a{
|
||||||
|
cursor:pointer;
|
||||||
|
display:block;
|
||||||
|
width:16px;
|
||||||
|
height:16px;
|
||||||
|
margin-top:1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .NavImgll a{
|
||||||
|
float:left;
|
||||||
|
background:url(img.gif) no-repeat;
|
||||||
|
}
|
||||||
|
.WdateDiv .NavImgl a{
|
||||||
|
float:left;
|
||||||
|
background:url(img.gif) no-repeat -16px 0px;
|
||||||
|
}
|
||||||
|
.WdateDiv .NavImgr a{
|
||||||
|
float:right;
|
||||||
|
background:url(img.gif) no-repeat -32px 0px;
|
||||||
|
}
|
||||||
|
.WdateDiv .NavImgrr a{
|
||||||
|
float:right;
|
||||||
|
background:url(img.gif) no-repeat -48px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv #dpTitle{
|
||||||
|
height:24px;
|
||||||
|
padding:1px;
|
||||||
|
border:#c5d9e8 1px solid;
|
||||||
|
background:url(bg.jpg);
|
||||||
|
margin-bottom:2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .yminput{
|
||||||
|
margin-top:2px;
|
||||||
|
text-align:center;
|
||||||
|
border:0px;
|
||||||
|
height:20px;
|
||||||
|
width:50px;
|
||||||
|
color:#034c50;
|
||||||
|
background-color:transparent;
|
||||||
|
cursor:pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .yminputfocus{
|
||||||
|
margin-top:2px;
|
||||||
|
text-align:center;
|
||||||
|
border:#939393 1px solid;
|
||||||
|
font-weight:bold;
|
||||||
|
color:#034c50;
|
||||||
|
height:20px;
|
||||||
|
width:50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .menuSel{
|
||||||
|
z-index:1;
|
||||||
|
position:absolute;
|
||||||
|
background-color:#FFFFFF;
|
||||||
|
border:#A3C6C8 1px solid;
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .menu{
|
||||||
|
cursor:pointer;
|
||||||
|
background-color:#fff;
|
||||||
|
color:#11777C;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .menuOn{
|
||||||
|
cursor:pointer;
|
||||||
|
background-color:#BEEBEE;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .invalidMenu{
|
||||||
|
color:#aaa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .YMenu{
|
||||||
|
margin-top:20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .MMenu{
|
||||||
|
margin-top:20px;
|
||||||
|
*width:62px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .hhMenu{
|
||||||
|
margin-top:-90px;
|
||||||
|
margin-left:26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .mmMenu{
|
||||||
|
margin-top:-46px;
|
||||||
|
margin-left:26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .ssMenu{
|
||||||
|
margin-top:-24px;
|
||||||
|
margin-left:26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .Wweek {
|
||||||
|
text-align:center;
|
||||||
|
background:#DAF3F5;
|
||||||
|
border-right:#BDEBEE 1px solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .MTitle{
|
||||||
|
color:#13777e;
|
||||||
|
background-color:#bdebee;
|
||||||
|
}
|
||||||
|
.WdateDiv .WdayTable2{
|
||||||
|
border-collapse:collapse;
|
||||||
|
border:#BEE9F0 1px solid;
|
||||||
|
}
|
||||||
|
.WdateDiv .WdayTable2 table{
|
||||||
|
border:0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .WdayTable{
|
||||||
|
line-height:20px;
|
||||||
|
color:#13777e;
|
||||||
|
background-color:#edfbfb;
|
||||||
|
border:#BEE9F0 1px solid;
|
||||||
|
}
|
||||||
|
.WdateDiv .WdayTable td{
|
||||||
|
text-align:center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .Wday{
|
||||||
|
cursor:pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .WdayOn{
|
||||||
|
cursor:pointer;
|
||||||
|
background-color:#74d2d9 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .Wwday{
|
||||||
|
cursor:pointer;
|
||||||
|
color:#ab1e1e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .WwdayOn{
|
||||||
|
cursor:pointer;
|
||||||
|
background-color:#74d2d9;
|
||||||
|
}
|
||||||
|
.WdateDiv .Wtoday{
|
||||||
|
cursor:pointer;
|
||||||
|
color:blue;
|
||||||
|
}
|
||||||
|
.WdateDiv .Wselday{
|
||||||
|
background-color:#A7E2E7;
|
||||||
|
}
|
||||||
|
.WdateDiv .WspecialDay{
|
||||||
|
background-color:#66F4DF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .WotherDay{
|
||||||
|
cursor:pointer;
|
||||||
|
color:#0099CC;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .WotherDayOn{
|
||||||
|
cursor:pointer;
|
||||||
|
background-color:#C0EBEF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv .WinvalidDay{
|
||||||
|
color:#aaa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv #dpTime{
|
||||||
|
float:left;
|
||||||
|
margin-top:3px;
|
||||||
|
margin-right:30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv #dpTime #dpTimeStr{
|
||||||
|
margin-left:1px;
|
||||||
|
color:#497F7F;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv #dpTime input{
|
||||||
|
height:20px;
|
||||||
|
width:18px;
|
||||||
|
text-align:center;
|
||||||
|
color:#333;
|
||||||
|
border:#61CAD0 1px solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv #dpTime .tB{
|
||||||
|
border-right:0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv #dpTime .tE{
|
||||||
|
border-left:0;
|
||||||
|
border-right:0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv #dpTime .tm{
|
||||||
|
width:7px;
|
||||||
|
border-left:0;
|
||||||
|
border-right:0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv #dpTime #dpTimeUp{
|
||||||
|
height:10px;
|
||||||
|
width:13px;
|
||||||
|
border:0px;
|
||||||
|
background:url(img.gif) no-repeat -32px -16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv #dpTime #dpTimeDown{
|
||||||
|
height:10px;
|
||||||
|
width:13px;
|
||||||
|
border:0px;
|
||||||
|
background:url(img.gif) no-repeat -48px -16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.WdateDiv #dpQS {
|
||||||
|
float:left;
|
||||||
|
margin-right:3px;
|
||||||
|
margin-top:3px;
|
||||||
|
background:url(img.gif) no-repeat 0px -16px;
|
||||||
|
width:20px;
|
||||||
|
height:20px;
|
||||||
|
cursor:pointer;
|
||||||
|
}
|
||||||
|
.WdateDiv #dpControl {
|
||||||
|
text-align:right;
|
||||||
|
margin-top:3px;
|
||||||
|
}
|
||||||
|
.WdateDiv .dpButton{
|
||||||
|
height:20px;
|
||||||
|
width:45px;
|
||||||
|
margin-top:2px;
|
||||||
|
border:#38B1B9 1px solid;
|
||||||
|
background-color:#CFEBEE;
|
||||||
|
color:#08575B;
|
||||||
|
}
|
After Width: | Height: | Size: 1.6 KiB |
@ -0,0 +1 @@
|
|||||||
|
(function(a){a.fn.passwordStrength=function(b){b=a.extend({},a.fn.passwordStrength.defaults,b);this.each(function(){var d=a(this),e=0,c=false,f=a(this).parents("form").find(".passwordStrength");d.bind("keyup blur",function(){e=a.fn.passwordStrength.ratepasswd(d.val(),b);e>=0&&c==false&&(c=true);f.find("span").removeClass("bgStrength");if(e<35&&e>=0){f.find("span:first").addClass("bgStrength")}else{if(e<60&&e>=35){f.find("span:lt(2)").addClass("bgStrength")}else{if(e>=60){f.find("span:lt(3)").addClass("bgStrength")}}}if(c&&(d.val().length<b.minLen||d.val().length>b.maxLen)){b.showmsg(d,d.attr("errormsg"),3)}else{if(c){b.showmsg(d,"",2)}}b.trigger(d,!(e>=0))})})};a.fn.passwordStrength.ratepasswd=function(c,d){var b=c.length,e;if(b>=d.minLen&&b<=d.maxLen){e=a.fn.passwordStrength.checkStrong(c)}else{e=-1}return e/4*100};a.fn.passwordStrength.checkStrong=function(d){var e=0,b=d.length;for(var c=0;c<b;c++){e|=a.fn.passwordStrength.charMode(d.charCodeAt(c))}return a.fn.passwordStrength.bitTotal(e)};a.fn.passwordStrength.charMode=function(b){if(b>=48&&b<=57){return 1}else{if(b>=65&&b<=90){return 2}else{if(b>=97&&b<=122){return 4}else{return 8}}}};a.fn.passwordStrength.bitTotal=function(b){var d=0;for(var c=0;c<4;c++){if(b&1){d++}b>>>=1}return d};a.fn.passwordStrength.defaults={minLen:0,maxLen:30,trigger:a.noop}})(jQuery);
|
@ -0,0 +1,152 @@
|
|||||||
|
/*! DataTables 1.10.0
|
||||||
|
* ©2008-2014 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function(za,N,l){var M=function(g){function S(a){var b,c,d={};g.each(a,function(e){if((b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=e.replace(b[0],b[2].toLowerCase()),d[c]=e,"o"===b[1]&&S(a[e])});a._hungarianMap=d}function G(a,b,c){a._hungarianMap||S(a);var d;g.each(b,function(e){d=a._hungarianMap[e];if(d!==l&&(c||b[d]===l))"o"===d.charAt(0)?(b[d]||(b[d]={}),g.extend(!0,b[d],b[e]),G(a[d],b[d],c)):b[d]=b[e]})}function M(a){var b=p.defaults.oLanguage,c=a.sZeroRecords;
|
||||||
|
!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&D(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&D(a,a,"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&bb(a)}function cb(a){w(a,"ordering","bSort");w(a,"orderMulti","bSortMulti");w(a,"orderClasses","bSortClasses");w(a,"orderCellsTop","bSortCellsTop");w(a,"order","aaSorting");w(a,"orderFixed","aaSortingFixed");w(a,"paging","bPaginate");
|
||||||
|
w(a,"pagingType","sPaginationType");w(a,"pageLength","iDisplayLength");w(a,"searching","bFilter")}function db(a){w(a,"orderable","bSortable");w(a,"orderData","aDataSort");w(a,"orderSequence","asSorting");w(a,"orderDataType","sortDataType")}function eb(a){var a=a.oBrowser,b=g("<div/>").css({position:"absolute",top:0,left:0,height:1,width:1,overflow:"hidden"}).append(g("<div/>").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(g('<div class="test"/>').css({width:"100%",height:10}))).appendTo("body"),
|
||||||
|
c=b.find(".test");a.bScrollOversize=100===c[0].offsetWidth;a.bScrollbarLeft=1!==c.offset().left;b.remove()}function fb(a,b,c,d,e,f){var h,i=!1;c!==l&&(h=c,i=!0);for(;d!==e;)a.hasOwnProperty(d)&&(h=i?b(h,a[d],d,a):a[d],i=!0,d+=f);return h}function Aa(a,b){var c=p.defaults.column,d=a.aoColumns.length,c=g.extend({},p.models.oColumn,c,{nTh:b?b:N.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;
|
||||||
|
c[d]=g.extend({},p.models.oSearch,c[d]);fa(a,d,null)}function fa(a,b,c){var d=a.aoColumns[b],b=a.oClasses,e=g(d.nTh);if(!d.sWidthOrig){d.sWidthOrig=e.attr("width")||null;var f=(e.attr("style")||"").match(/width:\s*(\d+[pxem%])/);f&&(d.sWidthOrig=f[1])}c!==l&&null!==c&&(db(c),G(p.defaults.column,c),c.mDataProp!==l&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(d._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),g.extend(d,c),D(d,c,"sWidth","sWidthOrig"),"number"===typeof c.iDataSort&&
|
||||||
|
(d.aDataSort=[c.iDataSort]),D(d,c,"aDataSort"));var c=d.mData,h=T(c),i=d.mRender?T(d.mRender):null,f=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};d._bAttrSrc=g.isPlainObject(c)&&(f(c.sort)||f(c.type)||f(c.filter));d.fnGetData=function(a,b){var c=h(a,b);return d.mRender&&b&&""!==b?i(c,b,a):c};d.fnSetData=Ba(c);a.oFeatures.bSort||(d.bSortable=!1,e.addClass(b.sSortableNone));a=-1!==g.inArray("asc",d.asSorting);e=-1!==g.inArray("desc",d.asSorting);!d.bSortable||!a&&!e?(d.sSortingClass=
|
||||||
|
b.sSortableNone,d.sSortingClassJUI=""):a&&!e?(d.sSortingClass=b.sSortableAsc,d.sSortingClassJUI=b.sSortJUIAscAllowed):!a&&e?(d.sSortingClass=b.sSortableDesc,d.sSortingClassJUI=b.sSortJUIDescAllowed):(d.sSortingClass=b.sSortable,d.sSortingClassJUI=b.sSortJUI)}function U(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ca(a);for(var c=0,d=b.length;c<d;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(""!==b.sY||""!==b.sX)&&V(a);t(a,null,"column-sizing",[a])}function ga(a,b){var c=W(a,"bVisible");
|
||||||
|
return"number"===typeof c[b]?c[b]:null}function X(a,b){var c=W(a,"bVisible"),c=g.inArray(b,c);return-1!==c?c:null}function Y(a){return W(a,"bVisible").length}function W(a,b){var c=[];g.map(a.aoColumns,function(a,e){a[b]&&c.push(e)});return c}function Da(a){var b=a.aoColumns,c=a.aoData,d=p.ext.type.detect,e,f,h,i,j,g,m,o,k;e=0;for(f=b.length;e<f;e++)if(m=b[e],k=[],!m.sType&&m._sManualType)m.sType=m._sManualType;else if(!m.sType){h=0;for(i=d.length;h<i;h++){j=0;for(g=c.length;j<g&&!(k[j]===l&&(k[j]=
|
||||||
|
A(a,j,e,"type")),o=d[h](k[j],a),!o||"html"===o);j++);if(o){m.sType=o;break}}m.sType||(m.sType="string")}}function gb(a,b,c,d){var e,f,h,i,j,n,m=a.aoColumns;if(b)for(e=b.length-1;0<=e;e--){n=b[e];var o=n.targets!==l?n.targets:n.aTargets;g.isArray(o)||(o=[o]);f=0;for(h=o.length;f<h;f++)if("number"===typeof o[f]&&0<=o[f]){for(;m.length<=o[f];)Aa(a);d(o[f],n)}else if("number"===typeof o[f]&&0>o[f])d(m.length+o[f],n);else if("string"===typeof o[f]){i=0;for(j=m.length;i<j;i++)("_all"==o[f]||g(m[i].nTh).hasClass(o[f]))&&
|
||||||
|
d(i,n)}}if(c){e=0;for(a=c.length;e<a;e++)d(e,c[e])}}function H(a,b,c,d){var e=a.aoData.length,f=g.extend(!0,{},p.models.oRow,{src:c?"dom":"data"});f._aData=b;a.aoData.push(f);for(var b=a.aoColumns,f=0,h=b.length;f<h;f++)c&&Ea(a,e,f,A(a,e,f)),b[f].sType=null;a.aiDisplayMaster.push(e);a.oFeatures.bDeferRender||Fa(a,e,c,d);return e}function ha(a,b){var c;b instanceof g||(b=g(b));return b.map(function(b,e){c=ia(a,e);return H(a,c.data,e,c.cells)})}function A(a,b,c,d){var c=a.aoColumns[c],e=a.aoData[b]._aData,
|
||||||
|
f=c.fnGetData(e,d);if(f===l)return a.iDrawError!=a.iDraw&&null===c.sDefaultContent&&(O(a,0,"Requested unknown parameter "+("function"==typeof c.mData?"{function}":"'"+c.mData+"'")+" for row "+b,4),a.iDrawError=a.iDraw),c.sDefaultContent;if((f===e||null===f)&&null!==c.sDefaultContent)f=c.sDefaultContent;else if("function"===typeof f)return f();return null===f&&"display"==d?"":f}function Ea(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,d)}function Ga(a){return g.map(a.match(/(\\.|[^\.])+/g),
|
||||||
|
function(a){return a.replace("\\.",".")})}function T(a){if(g.isPlainObject(a)){var b={};g.each(a,function(a,c){c&&(b[a]=T(c))});return function(a,c,f){var h=b[c]||b._;return h!==l?h(a,c,f):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,c,f){return a(b,c,f)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var c=function(a,b,f){var h,i;if(""!==f){i=Ga(f);for(var j=0,g=i.length;j<g;j++){f=i[j].match(Z);h=i[j].match(P);if(f){i[j]=
|
||||||
|
i[j].replace(Z,"");""!==i[j]&&(a=a[i[j]]);h=[];i.splice(0,j+1);i=i.join(".");j=0;for(g=a.length;j<g;j++)h.push(c(a[j],b,i));a=f[0].substring(1,f[0].length-1);a=""===a?h:h.join(a);break}else if(h){i[j]=i[j].replace(P,"");a=a[i[j]]();continue}if(null===a||a[i[j]]===l)return l;a=a[i[j]]}}return a};return function(b,e){return c(b,e,a)}}return function(b){return b[a]}}function Ba(a){if(g.isPlainObject(a))return Ba(a._);if(null===a)return function(){};if("function"===typeof a)return function(b,d){a(b,"set",
|
||||||
|
d)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var b=function(a,d,e){var e=Ga(e),f;f=e[e.length-1];for(var h,i,j=0,g=e.length-1;j<g;j++){h=e[j].match(Z);i=e[j].match(P);if(h){e[j]=e[j].replace(Z,"");a[e[j]]=[];f=e.slice();f.splice(0,j+1);h=f.join(".");i=0;for(g=d.length;i<g;i++)f={},b(f,d[i],h),a[e[j]].push(f);return}i&&(e[j]=e[j].replace(P,""),a=a[e[j]](d));if(null===a[e[j]]||a[e[j]]===l)a[e[j]]={};a=a[e[j]]}if(f.match(P))a[f.replace(P,"")](d);else a[f.replace(Z,
|
||||||
|
"")]=d};return function(c,d){return b(c,d,a)}}return function(b,d){b[a]=d}}function Ha(a){return B(a.aoData,"_aData")}function ja(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0}function ka(a,b,c){for(var d=-1,e=0,f=a.length;e<f;e++)a[e]==b?d=e:a[e]>b&&a[e]--; -1!=d&&c===l&&a.splice(d,1)}function la(a,b,c,d){var e=a.aoData[b],f;if("dom"===c||(!c||"auto"===c)&&"dom"===e.src)e._aData=ia(a,e).data;else{var h=e.anCells;if(h){c=0;for(f=h.length;c<f;c++)h[c].innerHTML=A(a,b,c,"display")}}e._aSortData=
|
||||||
|
null;e._aFilterData=null;a=a.aoColumns;if(d!==l)a[d].sType=null;else{c=0;for(f=a.length;c<f;c++)a[c].sType=null}Ia(e)}function ia(a,b){var c=[],d=[],e=b.firstChild,f,h,i,j=0,n,m=a.aoColumns,o=function(a,b,c){"string"===typeof a&&(b=a.indexOf("@"),-1!==b&&(a=a.substring(b+1),i["@"+a]=c.getAttribute(a)))},k=function(a){h=m[j];n=g.trim(a.innerHTML);h&&h._bAttrSrc?(i={display:n},o(h.mData.sort,i,a),o(h.mData.type,i,a),o(h.mData.filter,i,a),c.push(i)):c.push(n);d.push(a);j++};if(e)for(;e;)f=e.nodeName.toUpperCase(),
|
||||||
|
("TD"==f||"TH"==f)&&k(e),e=e.nextSibling;else{d=b.anCells;e=0;for(f=d.length;e<f;e++)k(d[e])}return{data:c,cells:d}}function Fa(a,b,c,d){var e=a.aoData[b],f=e._aData,h=[],i,j,g,m,o;if(null===e.nTr){i=c||N.createElement("tr");e.nTr=i;e.anCells=h;i._DT_RowIndex=b;Ia(e);m=0;for(o=a.aoColumns.length;m<o;m++){g=a.aoColumns[m];j=c?d[m]:N.createElement(g.sCellType);h.push(j);if(!c||g.mRender||g.mData!==m)j.innerHTML=A(a,b,m,"display");g.sClass&&(j.className+=" "+g.sClass);g.bVisible&&!c?i.appendChild(j):
|
||||||
|
!g.bVisible&&c&&j.parentNode.removeChild(j);g.fnCreatedCell&&g.fnCreatedCell.call(a.oInstance,j,A(a,b,m,"display"),f,b,m)}t(a,"aoRowCreatedCallback",null,[i,f,b])}e.nTr.setAttribute("role","row")}function Ia(a){var b=a.nTr,c=a._aData;if(b){c.DT_RowId&&(b.id=c.DT_RowId);if(c.DT_RowClass){var d=c.DT_RowClass.split(" ");a.__rowc=a.__rowc?Ja(a.__rowc.concat(d)):d;g(b).removeClass(a.__rowc.join(" ")).addClass(c.DT_RowClass)}c.DT_RowData&&g(b).data(c.DT_RowData)}}function hb(a){var b,c,d,e,f,h=a.nTHead,
|
||||||
|
i=a.nTFoot,j=0===g("th, td",h).length,n=a.oClasses,m=a.aoColumns;j&&(e=g("<tr/>").appendTo(h));b=0;for(c=m.length;b<c;b++)f=m[b],d=g(f.nTh).addClass(f.sClass),j&&d.appendTo(e),a.oFeatures.bSort&&(d.addClass(f.sSortingClass),!1!==f.bSortable&&(d.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),Ka(a,f.nTh,b))),f.sTitle!=d.html()&&d.html(f.sTitle),La(a,"header")(a,d,f,n);j&&$(a.aoHeader,h);g(h).find(">tr").attr("role","row");g(h).find(">tr>th, >tr>td").addClass(n.sHeaderTH);g(i).find(">tr>th, >tr>td").addClass(n.sFooterTH);
|
||||||
|
if(null!==i){a=a.aoFooter[0];b=0;for(c=a.length;b<c;b++)f=m[b],f.nTf=a[b].cell,f.sClass&&g(f.nTf).addClass(f.sClass)}}function I(a,b,c){var d,e,f,h=[],i=[],j=a.aoColumns.length,n;if(b){c===l&&(c=!1);d=0;for(e=b.length;d<e;d++){h[d]=b[d].slice();h[d].nTr=b[d].nTr;for(f=j-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&h[d].splice(f,1);i.push([])}d=0;for(e=h.length;d<e;d++){if(a=h[d].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=h[d].length;f<b;f++)if(n=j=1,i[d][f]===l){a.appendChild(h[d][f].cell);for(i[d][f]=
|
||||||
|
1;h[d+j]!==l&&h[d][f].cell==h[d+j][f].cell;)i[d+j][f]=1,j++;for(;h[d][f+n]!==l&&h[d][f].cell==h[d][f+n].cell;){for(c=0;c<j;c++)i[d+c][f+n]=1;n++}g(h[d][f].cell).attr("rowspan",j).attr("colspan",n)}}}}function J(a){var b=t(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==g.inArray(!1,b))C(a,!1);else{var b=[],c=0,d=a.asStripeClasses,e=d.length,f=a.oLanguage,h=a.iInitDisplayStart,i="ssp"==z(a),j=a.aiDisplay;a.bDrawing=!0;h!==l&&-1!==h&&(a._iDisplayStart=i?h:h>=a.fnRecordsDisplay()?0:h,a.iInitDisplayStart=
|
||||||
|
-1);var h=a._iDisplayStart,n=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(i){if(!a.bDestroying&&!ib(a))return}else a.iDraw++;if(0!==j.length){f=i?a.aoData.length:n;for(i=i?0:h;i<f;i++){var m=j[i],o=a.aoData[m];null===o.nTr&&Fa(a,m);m=o.nTr;if(0!==e){var k=d[c%e];o._sRowStripe!=k&&(g(m).removeClass(o._sRowStripe).addClass(k),o._sRowStripe=k)}t(a,"aoRowCallback",null,[m,o._aData,c,i]);b.push(m);c++}}else c=f.sZeroRecords,1==a.iDraw&&"ajax"==z(a)?c=f.sLoadingRecords:
|
||||||
|
f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),b[0]=g("<tr/>",{"class":e?d[0]:""}).append(g("<td />",{valign:"top",colSpan:Y(a),"class":a.oClasses.sRowEmpty}).html(c))[0];t(a,"aoHeaderCallback","header",[g(a.nTHead).children("tr")[0],Ha(a),h,n,j]);t(a,"aoFooterCallback","footer",[g(a.nTFoot).children("tr")[0],Ha(a),h,n,j]);d=g(a.nTBody);d.children().detach();d.append(g(b));t(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function K(a,b){var c=a.oFeatures,d=c.bFilter;
|
||||||
|
c.bSort&&jb(a);d?aa(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);J(a)}function kb(a){var b=a.oClasses,c=g(a.nTable),c=g("<div/>").insertBefore(c),d=a.oFeatures,e=g("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),h,i,j,n,m,o,k=0;k<f.length;k++){h=null;i=f[k];if("<"==i){j=g("<div/>")[0];n=f[k+1];if("'"==n||'"'==n){m=
|
||||||
|
"";for(o=2;f[k+o]!=n;)m+=f[k+o],o++;"H"==m?m=b.sJUIHeader:"F"==m&&(m=b.sJUIFooter);-1!=m.indexOf(".")?(n=m.split("."),j.id=n[0].substr(1,n[0].length-1),j.className=n[1]):"#"==m.charAt(0)?j.id=m.substr(1,m.length-1):j.className=m;k+=o}e.append(j);e=g(j)}else if(">"==i)e=e.parent();else if("l"==i&&d.bPaginate&&d.bLengthChange)h=lb(a);else if("f"==i&&d.bFilter)h=mb(a);else if("r"==i&&d.bProcessing)h=nb(a);else if("t"==i)h=ob(a);else if("i"==i&&d.bInfo)h=pb(a);else if("p"==i&&d.bPaginate)h=qb(a);else if(0!==
|
||||||
|
p.ext.feature.length){j=p.ext.feature;o=0;for(n=j.length;o<n;o++)if(i==j[o].cFeature){h=j[o].fnInit(a);break}}h&&(j=a.aanFeatures,j[i]||(j[i]=[]),j[i].push(h),e.append(h))}c.replaceWith(e)}function $(a,b){var c=g(b).children("tr"),d,e,f,h,i,j,n,m,o,k;a.splice(0,a.length);f=0;for(j=c.length;f<j;f++)a.push([]);f=0;for(j=c.length;f<j;f++){d=c[f];for(e=d.firstChild;e;){if("TD"==e.nodeName.toUpperCase()||"TH"==e.nodeName.toUpperCase()){m=1*e.getAttribute("colspan");o=1*e.getAttribute("rowspan");m=!m||
|
||||||
|
0===m||1===m?1:m;o=!o||0===o||1===o?1:o;h=0;for(i=a[f];i[h];)h++;n=h;k=1===m?!0:!1;for(i=0;i<m;i++)for(h=0;h<o;h++)a[f+h][n+i]={cell:e,unique:k},a[f+h].nTr=d}e=e.nextSibling}}}function ma(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],$(c,b)));for(var b=0,e=c.length;b<e;b++)for(var f=0,h=c[b].length;f<h;f++)if(c[b][f].unique&&(!d[f]||!a.bSortCellsTop))d[f]=c[b][f].cell;return d}function na(a,b,c){t(a,"aoServerParams","serverParams",[b]);if(b&&g.isArray(b)){var d={},e=/(.*?)\[\]$/;g.each(b,function(a,b){var c=
|
||||||
|
b.name.match(e);c?(c=c[0],d[c]||(d[c]=[]),d[c].push(b.value)):d[b.name]=b.value});b=d}var f,h=a.ajax,i=a.oInstance;if(g.isPlainObject(h)&&h.data){f=h.data;var j=g.isFunction(f)?f(b):f,b=g.isFunction(f)&&j?j:g.extend(!0,b,j);delete h.data}j={data:b,success:function(b){var d=b.error||b.sError;d&&a.oApi._fnLog(a,0,d);a.json=b;t(a,null,"xhr",[a,b]);c(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,c){var d=a.oApi._fnLog;"parsererror"==c?d(a,0,"Invalid JSON response",1):4===b.readyState&&
|
||||||
|
d(a,0,"Ajax error",7);C(a,!1)}};a.oAjaxData=b;t(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(i,a.sAjaxSource,g.map(b,function(a,b){return{name:b,value:a}}),c,a):a.sAjaxSource||"string"===typeof h?a.jqXHR=g.ajax(g.extend(j,{url:h||a.sAjaxSource})):g.isFunction(h)?a.jqXHR=h.call(i,b,c,a):(a.jqXHR=g.ajax(g.extend(j,h)),h.data=f)}function ib(a){if(a.bAjaxDataGet){a.iDraw++;C(a,!0);var b=rb(a);na(a,b,function(b){sb(a,b)},a);return!1}return!0}function rb(a){var b=a.aoColumns,c=b.length,d=a.oFeatures,
|
||||||
|
e=a.oPreviousSearch,f=a.aoPreSearchCols,h,i=[],j,n,m,o=Q(a);h=a._iDisplayStart;j=!1!==d.bPaginate?a._iDisplayLength:-1;var k=function(a,b){i.push({name:a,value:b})};k("sEcho",a.iDraw);k("iColumns",c);k("sColumns",B(b,"sName").join(","));k("iDisplayStart",h);k("iDisplayLength",j);var l={draw:a.iDraw,columns:[],order:[],start:h,length:j,search:{value:e.sSearch,regex:e.bRegex}};for(h=0;h<c;h++)n=b[h],m=f[h],j="function"==typeof n.mData?"function":n.mData,l.columns.push({data:j,name:n.sName,searchable:n.bSearchable,
|
||||||
|
orderable:n.bSortable,search:{value:m.sSearch,regex:m.bRegex}}),k("mDataProp_"+h,j),d.bFilter&&(k("sSearch_"+h,m.sSearch),k("bRegex_"+h,m.bRegex),k("bSearchable_"+h,n.bSearchable)),d.bSort&&k("bSortable_"+h,n.bSortable);d.bFilter&&(k("sSearch",e.sSearch),k("bRegex",e.bRegex));d.bSort&&(g.each(o,function(a,b){l.order.push({column:b.col,dir:b.dir});k("iSortCol_"+a,b.col);k("sSortDir_"+a,b.dir)}),k("iSortingCols",o.length));b=p.ext.legacy.ajax;return null===b?a.sAjaxSource?i:l:b?i:l}function sb(a,b){var c=
|
||||||
|
b.sEcho!==l?b.sEcho:b.draw,d=b.iTotalRecords!==l?b.iTotalRecords:b.recordsTotal,e=b.iTotalDisplayRecords!==l?b.iTotalDisplayRecords:b.recordsFiltered;if(c){if(1*c<a.iDraw)return;a.iDraw=1*c}ja(a);a._iRecordsTotal=parseInt(d,10);a._iRecordsDisplay=parseInt(e,10);c=oa(a,b);d=0;for(e=c.length;d<e;d++)H(a,c[d]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;J(a);a._bInitComplete||pa(a,b);a.bAjaxDataGet=!0;C(a,!1)}function oa(a,b){var c=g.isPlainObject(a.ajax)&&a.ajax.dataSrc!==l?a.ajax.dataSrc:
|
||||||
|
a.sAjaxDataProp;return"data"===c?b.aaData||b[c]:""!==c?T(c)(b):b}function mb(a){var b=a.oClasses,c=a.sTableId,d=a.oPreviousSearch,e=a.aanFeatures,f='<input type="search" class="input-text '+b.sFilterInput+'"/>',h=a.oLanguage.sSearch,h=h.match(/_INPUT_/)?h.replace("_INPUT_",f):h+f,b=g("<div/>",{id:!e.f?c+"_filter":null,"class":b.sFilter}).append(g("<label/>").append(h)),e=function(){var b=!this.value?"":this.value;b!=d.sSearch&&(aa(a,{sSearch:b,bRegex:d.bRegex,bSmart:d.bSmart,bCaseInsensitive:d.bCaseInsensitive}),
|
||||||
|
a._iDisplayStart=0,J(a))},i=g("input",b).val(d.sSearch.replace('"',""")).bind("keyup.DT search.DT input.DT paste.DT cut.DT","ssp"===z(a)?Ma(e,400):e).bind("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);g(a.nTable).on("filter.DT",function(){try{i[0]!==N.activeElement&&i.val(d.sSearch)}catch(a){}});return b[0]}function aa(a,b,c){var d=a.oPreviousSearch,e=a.aoPreSearchCols,f=function(a){d.sSearch=a.sSearch;d.bRegex=a.bRegex;d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive};
|
||||||
|
Da(a);if("ssp"!=z(a)){tb(a,b.sSearch,c,b.bEscapeRegex!==l?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<e.length;b++)ub(a,e[b].sSearch,b,e[b].bEscapeRegex!==l?!e[b].bEscapeRegex:e[b].bRegex,e[b].bSmart,e[b].bCaseInsensitive);vb(a)}else f(b);a.bFiltered=!0;t(a,null,"search",[a])}function vb(a){for(var b=p.ext.search,c=a.aiDisplay,d,e,f=0,h=b.length;f<h;f++)for(var i=c.length-1;0<=i;i--)e=c[i],d=a.aoData[e],b[f](a,d._aFilterData,e,d._aData)||c.splice(i,1)}function ub(a,b,c,d,
|
||||||
|
e,f){if(""!==b)for(var h=a.aiDisplay,d=Na(b,d,e,f),e=h.length-1;0<=e;e--)b=a.aoData[h[e]]._aFilterData[c],d.test(b)||h.splice(e,1)}function tb(a,b,c,d,e,f){var d=Na(b,d,e,f),e=a.oPreviousSearch.sSearch,f=a.aiDisplayMaster,h;0!==p.ext.search.length&&(c=!0);h=wb(a);if(0>=b.length)a.aiDisplay=f.slice();else{if(h||c||e.length>b.length||0!==b.indexOf(e)||a.bSorted)a.aiDisplay=f.slice();b=a.aiDisplay;for(c=b.length-1;0<=c;c--)d.test(a.aoData[b[c]]._sFilterRow)||b.splice(c,1)}}function Na(a,b,c,d){a=b?a:
|
||||||
|
Oa(a);c&&(a="^(?=.*?"+g.map(a.match(/"[^"]+"|[^ ]+/g)||"",function(a){return'"'===a.charAt(0)?a.match(/^"(.*)"$/)[1]:a}).join(")(?=.*?")+").*$");return RegExp(a,d?"i":"")}function Oa(a){return a.replace(Sb,"\\$1")}function wb(a){var b=a.aoColumns,c,d,e,f,h,i,j,g,m=p.ext.type.search;c=!1;d=0;for(f=a.aoData.length;d<f;d++)if(g=a.aoData[d],!g._aFilterData){i=[];e=0;for(h=b.length;e<h;e++)c=b[e],c.bSearchable?(j=A(a,d,e,"filter"),j=m[c.sType]?m[c.sType](j):null!==j?j:""):j="",j.indexOf&&-1!==j.indexOf("&")&&
|
||||||
|
(qa.innerHTML=j,j=Tb?qa.textContent:qa.innerText),j.replace&&(j=j.replace(/[\r\n]/g,"")),i.push(j);g._aFilterData=i;g._sFilterRow=i.join(" ");c=!0}return c}function pb(a){var b=a.sTableId,c=a.aanFeatures.i,d=g("<div/>",{"class":a.oClasses.sInfo,id:!c?b+"_info":null});c||(a.aoDrawCallback.push({fn:xb,sName:"information"}),d.attr("role","status").attr("aria-live","polite"),g(a.nTable).attr("aria-describedby",b+"_info"));return d[0]}function xb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,
|
||||||
|
d=a._iDisplayStart+1,e=a.fnDisplayEnd(),f=a.fnRecordsTotal(),h=a.fnRecordsDisplay(),i=h?c.sInfo:c.sInfoEmpty;h!==f&&(i+=" "+c.sInfoFiltered);i+=c.sInfoPostFix;i=yb(a,i);c=c.fnInfoCallback;null!==c&&(i=c.call(a.oInstance,a,d,e,f,h,i));g(b).html(i)}}function yb(a,b){var c=a.fnFormatNumber,d=a._iDisplayStart+1,e=a._iDisplayLength,f=a.fnRecordsDisplay(),h=-1===e;return b.replace(/_START_/g,c.call(a,d)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,
|
||||||
|
c.call(a,f)).replace(/_PAGE_/g,c.call(a,h?1:Math.ceil(d/e))).replace(/_PAGES_/g,c.call(a,h?1:Math.ceil(f/e)))}function ra(a){var b,c,d=a.iInitDisplayStart,e=a.aoColumns,f;c=a.oFeatures;if(a.bInitialised){kb(a);hb(a);I(a,a.aoHeader);I(a,a.aoFooter);C(a,!0);c.bAutoWidth&&Ca(a);b=0;for(c=e.length;b<c;b++)f=e[b],f.sWidth&&(f.nTh.style.width=s(f.sWidth));K(a);e=z(a);"ssp"!=e&&("ajax"==e?na(a,[],function(c){var f=oa(a,c);for(b=0;b<f.length;b++)H(a,f[b]);a.iInitDisplayStart=d;K(a);C(a,!1);pa(a,c)},a):(C(a,
|
||||||
|
!1),pa(a)))}else setTimeout(function(){ra(a)},200)}function pa(a,b){a._bInitComplete=!0;b&&U(a);t(a,"aoInitComplete","init",[a,b])}function Pa(a,b){var c=parseInt(b,10);a._iDisplayLength=c;Qa(a);t(a,null,"length",[a,c])}function lb(a){for(var b=a.oClasses,c=a.sTableId,d=a.aLengthMenu,e=g.isArray(d[0]),f=e?d[0]:d,e=e?d[1]:d,d=g("<select/>",{name:c+"_length","aria-controls":c,"class":"select" +b.sLengthSelect}),h=0,i=f.length;h<i;h++)d[0][h]=new Option(e[h],f[h]);var j=g("<div><label/></div>").addClass(b.sLength);
|
||||||
|
a.aanFeatures.l||(j[0].id=c+"_length");b=a.oLanguage.sLengthMenu.split(/(_MENU_)/);j.children().append(1<b.length?[b[0],d,b[2]]:b[0]);g("select",j).val(a._iDisplayLength).bind("change.DT",function(){Pa(a,g(this).val());J(a)});g(a.nTable).bind("length.dt.DT",function(a,b,c){g("select",j).val(c)});return j[0]}function qb(a){var b=a.sPaginationType,c=p.ext.pager[b],d="function"===typeof c,e=function(a){J(a)},b=g("<div/>").addClass(a.oClasses.sPaging+b)[0],f=a.aanFeatures;d||c.fnInit(a,b,e);f.p||(b.id=
|
||||||
|
a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,j=a._iDisplayLength,g=a.fnRecordsDisplay(),m=-1===j,b=m?0:Math.ceil(b/j),j=m?1:Math.ceil(g/j),g=c(b,j),o,m=0;for(o=f.p.length;m<o;m++)La(a,"pageButton")(a,f.p[m],m,g,b,j)}else c.fnUpdate(a,e)},sName:"pagination"}));return b}function Ra(a,b,c){var d=a._iDisplayStart,e=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1===e?d=0:"number"===typeof b?(d=b*e,d>f&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>
|
||||||
|
d&&(d=0)):"next"==b?d+e<f&&(d+=e):"last"==b?d=Math.floor((f-1)/e)*e:O(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==d;a._iDisplayStart=d;b&&(t(a,null,"page",[a]),c&&J(a));return b}function nb(a){return g("<div/>",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&g(a.aanFeatures.r).css("display",b?"block":"none");t(a,null,"processing",[a,b])}function ob(a){var b=
|
||||||
|
g(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,f=a.oClasses,h=b.children("caption"),i=h.length?h[0]._captionSide:null,j=g(b[0].cloneNode(!1)),n=g(b[0].cloneNode(!1)),m=b.children("tfoot");c.sX&&"100%"===b.attr("width")&&b.removeAttr("width");m.length||(m=null);c=g("<div/>",{"class":f.sScrollWrapper}).append(g("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?!d?null:s(d):"100%"}).append(g("<div/>",
|
||||||
|
{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(j.removeAttr("id").css("margin-left",0).append(b.children("thead")))).append("top"===i?h:null)).append(g("<div/>",{"class":f.sScrollBody}).css({overflow:"auto",height:!e?null:s(e),width:!d?null:s(d)}).append(b));m&&c.append(g("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:d?!d?null:s(d):"100%"}).append(g("<div/>",{"class":f.sScrollFootInner}).append(n.removeAttr("id").css("margin-left",
|
||||||
|
0).append(b.children("tfoot")))).append("bottom"===i?h:null));var b=c.children(),o=b[0],f=b[1],k=m?b[2]:null;d&&g(f).scroll(function(){var a=this.scrollLeft;o.scrollLeft=a;m&&(k.scrollLeft=a)});a.nScrollHead=o;a.nScrollBody=f;a.nScrollFoot=k;a.aoDrawCallback.push({fn:V,sName:"scrolling"});return c[0]}function V(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY,f=b.iBarWidth,h=g(a.nScrollHead),i=h[0].style,j=h.children("div"),n=j[0].style,m=j.children("table"),j=a.nScrollBody,o=g(j),k=j.style,l=g(a.nScrollFoot).children("div"),
|
||||||
|
p=l.children("table"),r=g(a.nTHead),q=g(a.nTable),ba=q[0],L=ba.style,t=a.nTFoot?g(a.nTFoot):null,ca=a.oBrowser,v=ca.bScrollOversize,x,u,y,w,z,A=[],B=[],C=[],D,E=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};q.children("thead, tfoot").remove();z=r.clone().prependTo(q);x=r.find("tr");y=z.find("tr");z.find("th, td").removeAttr("tabindex");t&&(w=t.clone().prependTo(q),u=t.find("tr"),w=w.find("tr"));c||(k.width="100%",h[0].style.width=
|
||||||
|
"100%");g.each(ma(a,z),function(b,c){D=ga(a,b);c.style.width=a.aoColumns[D].sWidth});t&&F(function(a){a.style.width=""},w);b.bCollapse&&""!==e&&(k.height=o[0].offsetHeight+r[0].offsetHeight+"px");h=q.outerWidth();if(""===c){if(L.width="100%",v&&(q.find("tbody").height()>j.offsetHeight||"scroll"==o.css("overflow-y")))L.width=s(q.outerWidth()-f)}else""!==d?L.width=s(d):h==o.width()&&o.height()<q.height()?(L.width=s(h-f),q.outerWidth()>h-f&&(L.width=s(h))):L.width=s(h);h=q.outerWidth();F(E,y);F(function(a){C.push(a.innerHTML);
|
||||||
|
A.push(s(g(a).css("width")))},y);F(function(a,b){a.style.width=A[b]},x);g(y).height(0);t&&(F(E,w),F(function(a){B.push(s(g(a).css("width")))},w),F(function(a,b){a.style.width=B[b]},u),g(w).height(0));F(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+C[b]+"</div>";a.style.width=A[b]},y);t&&F(function(a,b){a.innerHTML="";a.style.width=B[b]},w);if(q.outerWidth()<h){u=j.scrollHeight>j.offsetHeight||"scroll"==o.css("overflow-y")?h+f:h;if(v&&(j.scrollHeight>
|
||||||
|
j.offsetHeight||"scroll"==o.css("overflow-y")))L.width=s(u-f);(""===c||""!==d)&&O(a,1,"Possible column misalignment",6)}else u="100%";k.width=s(u);i.width=s(u);t&&(a.nScrollFoot.style.width=s(u));!e&&v&&(k.height=s(ba.offsetHeight+f));e&&b.bCollapse&&(k.height=s(e),b=c&&ba.offsetWidth>j.offsetWidth?f:0,ba.offsetHeight<j.offsetHeight&&(k.height=s(ba.offsetHeight+b)));b=q.outerWidth();m[0].style.width=s(b);n.width=s(b);m=q.height()>j.clientHeight||"scroll"==o.css("overflow-y");ca="padding"+(ca.bScrollbarLeft?
|
||||||
|
"Left":"Right");n[ca]=m?f+"px":"0px";t&&(p[0].style.width=s(b),l[0].style.width=s(b),l[0].style[ca]=m?f+"px":"0px");o.scroll();if(a.bSorted||a.bFiltered)j.scrollTop=0}function F(a,b,c){for(var d=0,e=0,f=b.length,h,i;e<f;){h=b[e].firstChild;for(i=c?c[e].firstChild:null;h;)1===h.nodeType&&(c?a(h,i,d):a(h,d),d++),h=h.nextSibling,i=c?i.nextSibling:null;e++}}function Ca(a){var b=a.nTable,c=a.aoColumns,d=a.oScroll,e=d.sY,f=d.sX,h=d.sXInner,i=c.length,d=W(a,"bVisible"),j=g("th",a.nTHead),n=b.getAttribute("width"),
|
||||||
|
m=b.parentNode,o=!1,k,l;for(k=0;k<d.length;k++)l=c[d[k]],null!==l.sWidth&&(l.sWidth=zb(l.sWidthOrig,m),o=!0);if(!o&&!f&&!e&&i==Y(a)&&i==j.length)for(k=0;k<i;k++)c[k].sWidth=s(j.eq(k).width());else{i=g(b.cloneNode(!1)).css("visibility","hidden").removeAttr("id").append(g(a.nTHead).clone(!1)).append(g(a.nTFoot).clone(!1)).append(g("<tbody><tr/></tbody>"));i.find("tfoot th, tfoot td").css("width","");var p=i.find("tbody tr"),j=ma(a,i.find("thead")[0]);for(k=0;k<d.length;k++)l=c[d[k]],j[k].style.width=
|
||||||
|
null!==l.sWidthOrig&&""!==l.sWidthOrig?s(l.sWidthOrig):"";if(a.aoData.length)for(k=0;k<d.length;k++)o=d[k],l=c[o],g(Ab(a,o)).clone(!1).append(l.sContentPadding).appendTo(p);i.appendTo(m);f&&h?i.width(h):f?(i.css("width","auto"),i.width()<m.offsetWidth&&i.width(m.offsetWidth)):e?i.width(m.offsetWidth):n&&i.width(n);Bb(a,i[0]);if(f){for(k=h=0;k<d.length;k++)l=c[d[k]],e=g(j[k]).outerWidth(),h+=null===l.sWidthOrig?e:parseInt(l.sWidth,10)+e-g(j[k]).width();i.width(s(h));b.style.width=s(h)}for(k=0;k<d.length;k++)if(l=
|
||||||
|
c[d[k]],e=g(j[k]).width())l.sWidth=s(e);b.style.width=s(i.css("width"));i.remove()}n&&(b.style.width=s(n));if((n||f)&&!a._reszEvt)g(za).bind("resize.DT-"+a.sInstance,Ma(function(){U(a)})),a._reszEvt=!0}function Ma(a,b){var c=b||200,d,e;return function(){var b=this,h=+new Date,i=arguments;d&&h<d+c?(clearTimeout(e),e=setTimeout(function(){d=l;a.apply(b,i)},c)):d?(d=h,a.apply(b,i)):d=h}}function zb(a,b){if(!a)return 0;var c=g("<div/>").css("width",s(a)).appendTo(b||N.body),d=c[0].offsetWidth;c.remove();
|
||||||
|
return d}function Bb(a,b){var c=a.oScroll;if(c.sX||c.sY)c=!c.sX?c.iBarWidth:0,b.style.width=s(g(b).outerWidth()-c)}function Ab(a,b){var c=Cb(a,b);if(0>c)return null;var d=a.aoData[c];return!d.nTr?g("<td/>").html(A(a,c,b,"display"))[0]:d.anCells[b]}function Cb(a,b){for(var c,d=-1,e=-1,f=0,h=a.aoData.length;f<h;f++)c=A(a,f,b,"display")+"",c=c.replace(Ub,""),c.length>d&&(d=c.length,e=f);return e}function s(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function Db(){if(!p.__scrollbarWidth){var a=
|
||||||
|
g("<p/>").css({width:"100%",height:200,padding:0})[0],b=g("<div/>").css({position:"absolute",top:0,left:0,width:200,height:150,padding:0,overflow:"hidden",visibility:"hidden"}).append(a).appendTo("body"),c=a.offsetWidth;b.css("overflow","scroll");a=a.offsetWidth;c===a&&(a=b[0].clientWidth);b.remove();p.__scrollbarWidth=c-a}return p.__scrollbarWidth}function Q(a){var b,c,d=[],e=a.aoColumns,f,h,i,j;b=a.aaSortingFixed;c=g.isPlainObject(b);var n=[];f=function(a){a.length&&!g.isArray(a[0])?n.push(a):n.push.apply(n,
|
||||||
|
a)};g.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<n.length;a++){j=n[a][0];f=e[j].aDataSort;b=0;for(c=f.length;b<c;b++)h=f[b],i=e[h].sType||"string",d.push({src:j,col:h,dir:n[a][1],index:n[a][2],type:i,formatter:p.ext.type.order[i+"-pre"]})}return d}function jb(a){var b,c,d=[],e=p.ext.type.order,f=a.aoData,h=0,i,g=a.aiDisplayMaster,n;Da(a);n=Q(a);b=0;for(c=n.length;b<c;b++)i=n[b],i.formatter&&h++,Eb(a,i.col);if("ssp"!=z(a)&&0!==n.length){b=0;for(c=g.length;b<c;b++)d[g[b]]=
|
||||||
|
b;h===n.length?g.sort(function(a,b){var c,e,h,g,i=n.length,j=f[a]._aSortData,l=f[b]._aSortData;for(h=0;h<i;h++)if(g=n[h],c=j[g.col],e=l[g.col],c=c<e?-1:c>e?1:0,0!==c)return"asc"===g.dir?c:-c;c=d[a];e=d[b];return c<e?-1:c>e?1:0}):g.sort(function(a,b){var c,h,g,i,j=n.length,l=f[a]._aSortData,p=f[b]._aSortData;for(g=0;g<j;g++)if(i=n[g],c=l[i.col],h=p[i.col],i=e[i.type+"-"+i.dir]||e["string-"+i.dir],c=i(c,h),0!==c)return c;c=d[a];h=d[b];return c<h?-1:c>h?1:0})}a.bSorted=!0}function Fb(a){for(var b,c,
|
||||||
|
d=a.aoColumns,e=Q(a),a=a.oLanguage.oAria,f=0,h=d.length;f<h;f++){c=d[f];var i=c.asSorting;b=c.sTitle.replace(/<.*?>/g,"");var g=c.nTh;g.removeAttribute("aria-sort");c.bSortable&&(0<e.length&&e[0].col==f?(g.setAttribute("aria-sort","asc"==e[0].dir?"ascending":"descending"),c=i[e[0].index+1]||i[0]):c=i[0],b+="asc"===c?a.sSortAscending:a.sSortDescending);g.setAttribute("aria-label",b)}}function Sa(a,b,c,d){var e=a.aaSorting,f=a.aoColumns[b].asSorting,h=function(a){var b=a._idx;b===l&&(b=g.inArray(a[1],
|
||||||
|
f));return b+1>=f.length?0:b+1};c&&a.oFeatures.bSortMulti?(c=g.inArray(b,B(e,"0")),-1!==c?(b=h(e[c]),e[c][1]=f[b],e[c]._idx=b):(e.push([b,f[0],0]),e[e.length-1]._idx=0)):e.length&&e[0][0]==b?(b=h(e[0]),e.length=1,e[0][1]=f[b],e[0]._idx=b):(e.length=0,e.push([b,f[0]]),e[0]._idx=0);K(a);"function"==typeof d&&d(a)}function Ka(a,b,c,d){var e=a.aoColumns[c];Ta(b,{},function(b){!1!==e.bSortable&&(a.oFeatures.bProcessing?(C(a,!0),setTimeout(function(){Sa(a,c,b.shiftKey,d);"ssp"!==z(a)&&C(a,!1)},0)):Sa(a,
|
||||||
|
c,b.shiftKey,d))})}function sa(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,d=Q(a),e=a.oFeatures,f,h;if(e.bSort&&e.bSortClasses){e=0;for(f=b.length;e<f;e++)h=b[e].src,g(B(a.aoData,"anCells",h)).removeClass(c+(2>e?e+1:3));e=0;for(f=d.length;e<f;e++)h=d[e].src,g(B(a.aoData,"anCells",h)).addClass(c+(2>e?e+1:3))}a.aLastSort=d}function Eb(a,b){var c=a.aoColumns[b],d=p.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,X(a,b)));for(var f,h=p.ext.type.order[c.sType+"-pre"],g=0,j=a.aoData.length;g<
|
||||||
|
j;g++)if(c=a.aoData[g],c._aSortData||(c._aSortData=[]),!c._aSortData[b]||d)f=d?e[g]:A(a,g,b,"sort"),c._aSortData[b]=h?h(f):f}function ta(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={iCreate:+new Date,iStart:a._iDisplayStart,iLength:a._iDisplayLength,aaSorting:g.extend(!0,[],a.aaSorting),oSearch:g.extend(!0,{},a.oPreviousSearch),aoSearchCols:g.extend(!0,[],a.aoPreSearchCols),abVisCols:B(a.aoColumns,"bVisible")};t(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.fnStateSaveCallback.call(a.oInstance,
|
||||||
|
a,b)}}function Gb(a){var b,c,d=a.aoColumns;if(a.oFeatures.bStateSave){var e=a.fnStateLoadCallback.call(a.oInstance,a);if(e&&(b=t(a,"aoStateLoadParams","stateLoadParams",[a,e]),-1===g.inArray(!1,b)&&(b=a.iStateDuration,!(0<b&&e.iCreate<+new Date-1E3*b)&&d.length===e.aoSearchCols.length))){a.oLoadedState=g.extend(!0,{},e);a._iDisplayStart=e.iStart;a.iInitDisplayStart=e.iStart;a._iDisplayLength=e.iLength;a.aaSorting=g.map(e.aaSorting,function(a){return a[0]>=d.length?[0,a[1]]:a});g.extend(a.oPreviousSearch,
|
||||||
|
e.oSearch);g.extend(!0,a.aoPreSearchCols,e.aoSearchCols);var f=e.abVisCols;b=0;for(c=f.length;b<c;b++)d[b].bVisible=f[b];t(a,"aoStateLoaded","stateLoaded",[a,e])}}}function ua(a){var b=p.settings,a=g.inArray(a,B(b,"nTable"));return-1!==a?b[a]:null}function O(a,b,c,d){c="DataTables warning: "+(null!==a?"table id="+a.sTableId+" - ":"")+c;d&&(c+=". For more information about this error, please see http://datatables.net/tn/"+d);if(b)za.console&&console.log&&console.log(c);else if(a=p.ext,"alert"==(a.sErrMode||
|
||||||
|
a.errMode))alert(c);else throw Error(c);}function D(a,b,c,d){g.isArray(c)?g.each(c,function(c,d){g.isArray(d)?D(a,b,d[0],d[1]):D(a,b,d)}):(d===l&&(d=c),b[c]!==l&&(a[d]=b[c]))}function Hb(a,b,c){var d,e;for(e in b)b.hasOwnProperty(e)&&(d=b[e],g.isPlainObject(d)?(g.isPlainObject(a[e])||(a[e]={}),g.extend(!0,a[e],d)):a[e]=c&&"data"!==e&&"aaData"!==e&&g.isArray(d)?d.slice():d);return a}function Ta(a,b,c){g(a).bind("click.DT",b,function(b){a.blur();c(b)}).bind("keypress.DT",b,function(a){13===a.which&&
|
||||||
|
(a.preventDefault(),c(a))}).bind("selectstart.DT",function(){return!1})}function y(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function t(a,b,c,d){var e=[];b&&(e=g.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,d)}));null!==c&&g(a.nTable).trigger(c+".dt",d);return e}function Qa(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),d=a._iDisplayLength;c===a.fnRecordsDisplay()&&(b=c-d);if(-1===d||0>b)b=0;a._iDisplayStart=b}function La(a,b){var c=a.renderer,d=p.ext.renderer[b];return g.isPlainObject(c)&&
|
||||||
|
c[b]?d[c[b]]||d._:"string"===typeof c?d[c]||d._:d._}function z(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Ua(a,b){var c=[],c=Ib.numbers_length,d=Math.floor(c/2);b<=c?c=R(0,b):a<=d?(c=R(0,c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-d?c=R(b-(c-2),b):(c=R(a-1,a+2),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function bb(a){g.each({num:function(b){return va(b,a)},"num-fmt":function(b){return va(b,a,Va)},"html-num":function(b){return va(b,
|
||||||
|
a,wa)},"html-num-fmt":function(b){return va(b,a,wa,Va)}},function(b,c){u.type.order[b+a+"-pre"]=c})}function Jb(a){return function(){var b=[ua(this[p.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return p.ext.internal[a].apply(this,b)}}var p,u,q,r,x,Wa={},Kb=/[\r\n]/g,wa=/<.*?>/g,Vb=/^[\d\+\-a-zA-Z]/,Sb=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Va=/[',$\u00a3\u20ac\u00a5%\u2009\u202F]/g,da=function(a){return!a||"-"===a?!0:!1},Lb=function(a){var b=
|
||||||
|
parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Mb=function(a,b){Wa[b]||(Wa[b]=RegExp(Oa(b),"g"));return"string"===typeof a?a.replace(/\./g,"").replace(Wa[b],"."):a},Xa=function(a,b,c){var d="string"===typeof a;b&&d&&(a=Mb(a,b));c&&d&&(a=a.replace(Va,""));return!a||"-"===a||!isNaN(parseFloat(a))&&isFinite(a)},Nb=function(a,b,c){return da(a)?!0:a&&"string"!==typeof a?null:Xa(a.replace(wa,""),b,c)?!0:null},B=function(a,b,c){var d=[],e=0,f=a.length;if(c!==l)for(;e<f;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);
|
||||||
|
else for(;e<f;e++)a[e]&&d.push(a[e][b]);return d},xa=function(a,b,c,d){var e=[],f=0,h=b.length;if(d!==l)for(;f<h;f++)e.push(a[b[f]][c][d]);else for(;f<h;f++)e.push(a[b[f]][c]);return e},R=function(a,b){var c=[],d;b===l?(b=0,d=a):(d=b,b=a);for(var e=b;e<d;e++)c.push(e);return c},Ja=function(a){var b=[],c,d,e=a.length,f,h=0;d=0;a:for(;d<e;d++){c=a[d];for(f=0;f<h;f++)if(b[f]===c)continue a;b.push(c);h++}return b},w=function(a,b,c){a[b]!==l&&(a[c]=a[b])},Z=/\[.*?\]$/,P=/\(\)$/,qa=g("<div>")[0],Tb=qa.textContent!==
|
||||||
|
l,Ub=/<.*?>/g;p=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new q(ua(this[u.iApiIndex])):new q(this)};this.fnAddData=function(a,b){var c=this.api(!0),d=g.isArray(a)&&(g.isArray(a[0])||g.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===l||b)&&c.draw();return d.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===l||
|
||||||
|
a?b.draw(!1):(""!==d.sX||""!==d.sY)&&V(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===l||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0),a=d.rows(a),e=a.settings()[0],g=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,g);(c===l||c)&&d.draw();return g};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(!a)};this.fnFilter=function(a,b,c,d,e,g){e=this.api(!0);null===
|
||||||
|
b||b===l?e.search(a,c,d,g):e.column(b).search(a,c,d,g);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==l){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==l||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==l?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==
|
||||||
|
c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===l||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===l||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return ua(this[u.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};
|
||||||
|
this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var g=this.api(!0);c===l||null===c?g.row(b).data(a):g.cell(b,c).data(a);(e===l||e)&&g.columns.adjust();(d===l||d)&&g.draw();return 0};this.fnVersionCheck=u.fnVersionCheck;var b=this,c=a===l,d=this.length;c&&(a={});this.oApi=this.internal=u.internal;for(var e in p.ext.internal)e&&(this[e]=Jb(e));this.each(function(){var e={},h=1<d?Hb(e,a,!0):a,i=0,j,n=this.getAttribute("id"),e=!1,m=p.defaults;
|
||||||
|
if("table"!=this.nodeName.toLowerCase())O(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{cb(m);db(m.column);G(m,m,!0);G(m.column,m.column,!0);G(m,h);var o=p.settings,i=0;for(j=o.length;i<j;i++){if(o[i].nTable==this){j=h.bRetrieve!==l?h.bRetrieve:m.bRetrieve;if(c||j)return o[i].oInstance;if(h.bDestroy!==l?h.bDestroy:m.bDestroy){o[i].oInstance.fnDestroy();break}else{O(o[i],0,"Cannot reinitialise DataTable",3);return}}if(o[i].sTableId==this.id){o.splice(i,1);break}}if(null===n||""===
|
||||||
|
n)this.id=n="DataTables_Table_"+p.ext._unique++;var k=g.extend(!0,{},p.models.oSettings,{nTable:this,oApi:b.internal,oInit:h,sDestroyWidth:g(this)[0].style.width,sInstance:n,sTableId:n});o.push(k);k.oInstance=1===b.length?b:g(this).dataTable();cb(h);h.oLanguage&&M(h.oLanguage);h.aLengthMenu&&!h.iDisplayLength&&(h.iDisplayLength=g.isArray(h.aLengthMenu[0])?h.aLengthMenu[0][0]:h.aLengthMenu[0]);h=Hb(g.extend(!0,{},m),h);D(k.oFeatures,h,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));
|
||||||
|
D(k,h,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"],["bJQueryUI","bJUI"]]);D(k.oScroll,h,[["sScrollX","sX"],["sScrollXInner","sXInner"],
|
||||||
|
["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);D(k.oLanguage,h,"fnInfoCallback");y(k,"aoDrawCallback",h.fnDrawCallback,"user");y(k,"aoServerParams",h.fnServerParams,"user");y(k,"aoStateSaveParams",h.fnStateSaveParams,"user");y(k,"aoStateLoadParams",h.fnStateLoadParams,"user");y(k,"aoStateLoaded",h.fnStateLoaded,"user");y(k,"aoRowCallback",h.fnRowCallback,"user");y(k,"aoRowCreatedCallback",h.fnCreatedRow,"user");y(k,"aoHeaderCallback",h.fnHeaderCallback,"user");y(k,"aoFooterCallback",h.fnFooterCallback,
|
||||||
|
"user");y(k,"aoInitComplete",h.fnInitComplete,"user");y(k,"aoPreDrawCallback",h.fnPreDrawCallback,"user");n=k.oClasses;h.bJQueryUI?(g.extend(n,p.ext.oJUIClasses,h.oClasses),h.sDom===m.sDom&&"lfrtip"===m.sDom&&(k.sDom='<"H"lfr>t<"F"ip>'),k.renderer)?g.isPlainObject(k.renderer)&&!k.renderer.header&&(k.renderer.header="jqueryui"):k.renderer="jqueryui":g.extend(n,p.ext.classes,h.oClasses);g(this).addClass(n.sTable);if(""!==k.oScroll.sX||""!==k.oScroll.sY)k.oScroll.iBarWidth=Db();!0===k.oScroll.sX&&(k.oScroll.sX=
|
||||||
|
"100%");k.iInitDisplayStart===l&&(k.iInitDisplayStart=h.iDisplayStart,k._iDisplayStart=h.iDisplayStart);null!==h.iDeferLoading&&(k.bDeferLoading=!0,i=g.isArray(h.iDeferLoading),k._iRecordsDisplay=i?h.iDeferLoading[0]:h.iDeferLoading,k._iRecordsTotal=i?h.iDeferLoading[1]:h.iDeferLoading);""!==h.oLanguage.sUrl?(k.oLanguage.sUrl=h.oLanguage.sUrl,g.getJSON(k.oLanguage.sUrl,null,function(a){M(a);G(m.oLanguage,a);g.extend(true,k.oLanguage,h.oLanguage,a);ra(k)}),e=!0):g.extend(!0,k.oLanguage,h.oLanguage);
|
||||||
|
null===h.asStripeClasses&&(k.asStripeClasses=[n.sStripeOdd,n.sStripeEven]);var i=k.asStripeClasses,r=g("tbody tr:eq(0)",this);-1!==g.inArray(!0,g.map(i,function(a){return r.hasClass(a)}))&&(g("tbody tr",this).removeClass(i.join(" ")),k.asDestroyStripes=i.slice());var o=[],q,i=this.getElementsByTagName("thead");0!==i.length&&($(k.aoHeader,i[0]),o=ma(k));if(null===h.aoColumns){q=[];i=0;for(j=o.length;i<j;i++)q.push(null)}else q=h.aoColumns;i=0;for(j=q.length;i<j;i++)Aa(k,o?o[i]:null);gb(k,h.aoColumnDefs,
|
||||||
|
q,function(a,b){fa(k,a,b)});if(r.length){var s=function(a,b){return a.getAttribute("data-"+b)?b:null};g.each(ia(k,r[0]).cells,function(a,b){var c=k.aoColumns[a];if(c.mData===a){var d=s(b,"sort")||s(b,"order"),e=s(b,"filter")||s(b,"search");if(d!==null||e!==null){c.mData={_:a+".display",sort:d!==null?a+".@data-"+d:l,type:d!==null?a+".@data-"+d:l,filter:e!==null?a+".@data-"+e:l};fa(k,a)}}})}var u=k.oFeatures;h.bStateSave&&(u.bStateSave=!0,Gb(k,h),y(k,"aoDrawCallback",ta,"state_save"));if(h.aaSorting===
|
||||||
|
l){o=k.aaSorting;i=0;for(j=o.length;i<j;i++)o[i][1]=k.aoColumns[i].asSorting[0]}sa(k);u.bSort&&y(k,"aoDrawCallback",function(){if(k.bSorted){var a=Q(k),b={};g.each(a,function(a,c){b[c.src]=c.dir});t(k,null,"order",[k,a,b]);Fb(k)}});y(k,"aoDrawCallback",function(){(k.bSorted||z(k)==="ssp"||u.bDeferRender)&&sa(k)},"sc");eb(k);i=g(this).children("caption").each(function(){this._captionSide=g(this).css("caption-side")});j=g(this).children("thead");0===j.length&&(j=g("<thead/>").appendTo(this));k.nTHead=
|
||||||
|
j[0];j=g(this).children("tbody");0===j.length&&(j=g("<tbody/>").appendTo(this));k.nTBody=j[0];j=g(this).children("tfoot");if(0===j.length&&0<i.length&&(""!==k.oScroll.sX||""!==k.oScroll.sY))j=g("<tfoot/>").appendTo(this);0===j.length||0===j.children().length?g(this).addClass(n.sNoFooter):0<j.length&&(k.nTFoot=j[0],$(k.aoFooter,k.nTFoot));if(h.aaData)for(i=0;i<h.aaData.length;i++)H(k,h.aaData[i]);else(k.bDeferLoading||"dom"==z(k))&&ha(k,g(k.nTBody).children("tr"));k.aiDisplay=k.aiDisplayMaster.slice();
|
||||||
|
k.bInitialised=!0;!1===e&&ra(k)}});b=null;return this};var Ob=[],v=Array.prototype,Wb=function(a){var b,c,d=p.settings,e=g.map(d,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=g.inArray(a,e),-1!==b?[d[b]]:null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=g(a):a instanceof g&&(c=a)}else return[];if(c)return c.map(function(){b=g.inArray(this,e);return-1!==b?d[b]:null}).toArray()};
|
||||||
|
p.Api=q=function(a,b){if(!this instanceof q)throw"DT API must be constructed as a new object";var c=[],d=function(a){(a=Wb(a))&&c.push.apply(c,a)};if(g.isArray(a))for(var e=0,f=a.length;e<f;e++)d(a[e]);else d(a);this.context=Ja(c);b&&this.push.apply(this,b.toArray?b.toArray():b);this.selector={rows:null,cols:null,opts:null};q.extend(this,this,Ob)};q.prototype={concat:v.concat,context:[],each:function(a){if(v.forEach)v.forEach.call(this,a,this);else for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],
|
||||||
|
b,this);return this},eq:function(a){var b=this.context;return b.length>a?new q(b[a],this[a]):null},filter:function(a){var b=[];if(v.filter)b=v.filter.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new q(this.context,b)},flatten:function(){var a=[];return new q(this.context,a.concat.apply(a,this.toArray()))},join:v.join,indexOf:v.indexOf||function(a,b){for(var c=b||0,d=this.length;c<d;c++)if(this[c]===a)return c;return-1},iterator:function(a,
|
||||||
|
b,c){var d=[],e,f,h,g,j,n=this.context,m,o,k=this.selector;"string"===typeof a&&(c=b,b=a,a=!1);f=0;for(h=n.length;f<h;f++)if("table"===b)e=c(n[f],f),e!==l&&d.push(e);else if("columns"===b||"rows"===b)e=c(n[f],this[f],f),e!==l&&d.push(e);else if("column"===b||"column-rows"===b||"row"===b||"cell"===b){o=this[f];"column-rows"===b&&(m=Ya(n[f],k.opts));g=0;for(j=o.length;g<j;g++)e=o[g],e="cell"===b?c(n[f],e.row,e.column,f,g):c(n[f],e,f,g,m),e!==l&&d.push(e)}return d.length?(a=new q(n,a?d.concat.apply([],
|
||||||
|
d):d),b=a.selector,b.rows=k.rows,b.cols=k.cols,b.opts=k.opts,a):this},lastIndexOf:v.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(v.map)b=v.map.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)b.push(a.call(this,this[c],c));return new q(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:v.pop,push:v.push,reduce:v.reduce||function(a,b){return fb(this,a,b,0,this.length,1)},reduceRight:v.reduceRight||
|
||||||
|
function(a,b){return fb(this,a,b,this.length-1,-1,-1)},reverse:v.reverse,selector:null,shift:v.shift,sort:v.sort,splice:v.splice,toArray:function(){return v.slice.call(this)},to$:function(){return g(this)},toJQuery:function(){return g(this)},unique:function(){return new q(this.context,Ja(this))},unshift:v.unshift};q.extend=function(a,b,c){if(b&&(b instanceof q||b.__dt_wrapper)){var d,e,f,h=function(b,c){return function(){var d=b.apply(a,arguments);q.extend(d,d,c.methodExt);return d}};d=0;for(e=c.length;d<
|
||||||
|
e;d++)f=c[d],b[f.name]="function"===typeof f.val?h(f.val,f):g.isPlainObject(f.val)?{}:f.val,b[f.name].__dt_wrapper=!0,q.extend(a,b[f.name],f.propExt)}};q.register=r=function(a,b){if(g.isArray(a))for(var c=0,d=a.length;c<d;c++)q.register(a[c],b);else{for(var e=a.split("."),f=Ob,h,i,c=0,d=e.length;c<d;c++){h=(i=-1!==e[c].indexOf("()"))?e[c].replace("()",""):e[c];var j;a:{j=0;for(var n=f.length;j<n;j++)if(f[j].name===h){j=f[j];break a}j=null}j||(j={name:h,val:{},methodExt:[],propExt:[]},f.push(j));c===
|
||||||
|
d-1?j.val=b:f=i?j.methodExt:j.propExt}q.ready&&p.api.build()}};q.registerPlural=x=function(a,b,c){q.register(a,c);q.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof q?a.length?g.isArray(a[0])?new q(a.context,a[0]):a[0]:l:a})};r("tables()",function(a){var b;if(a){b=q;var c=this.context;if("number"===typeof a)a=[c[a]];else var d=g.map(c,function(a){return a.nTable}),a=g(d).filter(a).map(function(){var a=g.inArray(this,d);return c[a]}).toArray();b=new b(a)}else b=
|
||||||
|
this;return b});r("table()",function(a){var a=this.tables(a),b=a.context;return b.length?new q(b[0]):a});x("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable})});x("tables().body()","table().body()",function(){return this.iterator("table",function(a){return a.nTBody})});x("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead})});x("tables().footer()","table().footer()",function(){return this.iterator("table",
|
||||||
|
function(a){return a.nTFoot})});r("draw()",function(a){return this.iterator("table",function(b){K(b,!1===a)})});r("page()",function(a){return a===l?this.page.info().page:this.iterator("table",function(b){Ra(b,a)})});r("page.info()",function(){if(0===this.context.length)return l;var a=this.context[0],b=a._iDisplayStart,c=a._iDisplayLength,d=a.fnRecordsDisplay(),e=-1===c;return{page:e?0:Math.floor(b/c),pages:e?1:Math.ceil(d/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:d}});
|
||||||
|
r("page.len()",function(a){return a===l?0!==this.context.length?this.context[0]._iDisplayLength:l:this.iterator("table",function(b){Pa(b,a)})});var Pb=function(a,b,c){"ssp"==z(a)?K(a,b):(C(a,!0),na(a,[],function(c){ja(a);for(var c=oa(a,c),d=0,h=c.length;d<h;d++)H(a,c[d]);K(a,b);C(a,!1)}));if(c){var d=new q(a);d.one("draw",function(){c(d.ajax.json())})}};r("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});r("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});
|
||||||
|
r("ajax.reload()",function(a,b){return this.iterator("table",function(c){Pb(c,!1===b,a)})});r("ajax.url()",function(a){var b=this.context;if(a===l){if(0===b.length)return l;b=b[0];return b.ajax?g.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){g.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});r("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Pb(c,!1===b,a)})});var Za=function(a,b){var c=[],d,e,f,h,i,j;if(!a||"string"===typeof a||
|
||||||
|
a.length===l)a=[a];f=0;for(h=a.length;f<h;f++){e=a[f]&&a[f].split?a[f].split(","):[a[f]];i=0;for(j=e.length;i<j;i++)(d=b("string"===typeof e[i]?g.trim(e[i]):e[i]))&&d.length&&c.push.apply(c,d)}return c},$a=function(a){a||(a={});a.filter&&!a.search&&(a.search=a.filter);return{search:a.search||"none",order:a.order||"current",page:a.page||"all"}},ab=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Ya=function(a,b){var c,
|
||||||
|
d,e,f=[],h=a.aiDisplay;c=a.aiDisplayMaster;var i=b.search;d=b.order;e=b.page;if("ssp"==z(a))return"removed"===i?[]:R(0,c.length);if("current"==e){c=a._iDisplayStart;for(d=a.fnDisplayEnd();c<d;c++)f.push(h[c])}else if("current"==d||"applied"==d)f="none"==i?c.slice():"applied"==i?h.slice():g.map(c,function(a){return-1===g.inArray(a,h)?a:null});else if("index"==d||"original"==d){c=0;for(d=a.aoData.length;c<d;c++)"none"==i?f.push(c):(e=g.inArray(c,h),(-1===e&&"removed"==i||1===e&&"applied"==i)&&f.push(c))}return f};
|
||||||
|
r("rows()",function(a,b){a===l?a="":g.isPlainObject(a)&&(b=a,a="");var b=$a(b),c=this.iterator("table",function(c){var e=b;return Za(a,function(a){var b=Lb(a);if(b!==null&&!e)return[b];var i=Ya(c,e);if(b!==null&&g.inArray(b,i)!==-1)return[b];if(!a)return i;for(var b=[],j=0,n=i.length;j<n;j++)b.push(c.aoData[i[j]].nTr);return a.nodeName&&g.inArray(a,b)!==-1?[a._DT_RowIndex]:g(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()})});c.selector.rows=a;c.selector.opts=b;return c});r("rows().nodes()",
|
||||||
|
function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||l})});r("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return xa(a.aoData,b,"_aData")})});x("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var d=b.aoData[c];return"search"===a?d._aFilterData:d._aSortData})});x("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,c){la(b,c,a)})});x("rows().indexes()","row().index()",function(){return this.iterator("row",
|
||||||
|
function(a,b){return b})});x("rows().remove()","row().remove()",function(){var a=this;return this.iterator("row",function(b,c,d){var e=b.aoData;e.splice(c,1);for(var f=0,h=e.length;f<h;f++)null!==e[f].nTr&&(e[f].nTr._DT_RowIndex=f);g.inArray(c,b.aiDisplay);ka(b.aiDisplayMaster,c);ka(b.aiDisplay,c);ka(a[d],c,!1);Qa(b)})});r("rows.add()",function(a){var b=this.iterator("table",function(b){var c,f,h,g=[];f=0;for(h=a.length;f<h;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?g.push(ha(b,c)[0]):
|
||||||
|
g.push(H(b,c));return g}),c=this.rows(-1);c.pop();c.push.apply(c,b.toArray());return c});r("row()",function(a,b){return ab(this.rows(a,b))});r("row().data()",function(a){var b=this.context;if(a===l)return b.length&&this.length?b[0].aoData[this[0]]._aData:l;b[0].aoData[this[0]]._aData=a;la(b[0],this[0],"data");return this});r("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});r("row.add()",function(a){a instanceof g&&a.length&&(a=a[0]);var b=
|
||||||
|
this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?ha(b,a)[0]:H(b,a)});return this.row(b[0])});var Qb=function(a){var b=this.context;if(b.length&&this.length){var c=b[0].aoData[this[0]];if(c._details){(c._detailsShow=a)?c._details.insertAfter(c.nTr):c._details.remove();var d=b[0],e=new q(d);e.off("draw.dt.DT_details column-visibility.dt.DT_details");0<B(d.aoData,"_details").length&&(e.on("draw.dt.DT_details",function(){e.rows({page:"current"}).eq(0).each(function(a){a=
|
||||||
|
d.aoData[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),e.on("column-visibility.dt.DT_details",function(a,b){for(var c,d=Y(b),e=0,g=b.aoData.length;e<g;e++)c=b.aoData[e],c._details&&c._details.children("td[colspan]").attr("colspan",d)}))}}return this};r("row().child()",function(a,b){var c=this.context;if(a===l)return c.length&&this.length?c[0].aoData[this[0]]._details:l;if(c.length&&this.length){var d=c[0],c=c[0].aoData[this[0]],e=[],f=function(a,b){if(a.nodeName&&"tr"===a.nodeName.toLowerCase())e.push(a);
|
||||||
|
else{var c=g("<tr><td/></tr>");g("td",c).addClass(b).html(a)[0].colSpan=Y(d);e.push(c[0])}};if(g.isArray(a)||a instanceof g)for(var h=0,i=a.length;h<i;h++)f(a[h],b);else f(a,b);c._details&&c._details.remove();c._details=g(e);c._detailsShow&&c._details.insertAfter(c.nTr)}return this});r(["row().child.show()","row().child().show()"],function(){Qb.call(this,!0);return this});r(["row().child.hide()","row().child().hide()"],function(){Qb.call(this,!1);return this});r("row().child.isShown()",function(){var a=
|
||||||
|
this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var Xb=/^(.*):(name|visIdx|visible)$/;r("columns()",function(a,b){a===l?a="":g.isPlainObject(a)&&(b=a,a="");var b=$a(b),c=this.iterator("table",function(b){var c=a,f=b.aoColumns,h=B(f,"sName"),i=B(f,"nTh");return Za(c,function(a){var c=Lb(a);if(a==="")return R(f.length);if(c!==null)return[c>=0?c:f.length+c];var e=typeof a==="string"?a.match(Xb):"";if(e)switch(e[2]){case "visIdx":case "visible":a=parseInt(e[1],10);
|
||||||
|
if(a<0){c=g.map(f,function(a,b){return a.bVisible?b:null});return[c[c.length+a]]}return[ga(b,a)];case "name":return g.map(h,function(a,b){return a===e[1]?b:null})}else return g(i).filter(a).map(function(){return g.inArray(this,i)}).toArray()})});c.selector.cols=a;c.selector.opts=b;return c});x("columns().header()","column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh})});x("columns().footer()","column().footer()",function(){return this.iterator("column",
|
||||||
|
function(a,b){return a.aoColumns[b].nTf})});x("columns().data()","column().data()",function(){return this.iterator("column-rows",function(a,b,c,d,e){for(var c=[],d=0,f=e.length;d<f;d++)c.push(A(a,e[d],b,""));return c})});x("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,d,e,f){return xa(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)})});x("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,
|
||||||
|
e){return xa(a.aoData,e,"anCells",b)})});x("columns().visible()","column().visible()",function(a){return this.iterator("column",function(b,c){var d;if(a===l)d=b.aoColumns[c].bVisible;else{var e=b.aoColumns;d=e[c];var f=b.aoData,h,i,j;if(a===l)d=d.bVisible;else{if(d.bVisible!==a){if(a){var n=g.inArray(!0,B(e,"bVisible"),c+1);h=0;for(i=f.length;h<i;h++)j=f[h].nTr,e=f[h].anCells,j&&j.insertBefore(e[c],e[n]||null)}else g(B(b.aoData,"anCells",c)).detach(),d.bVisible=!1,I(b,b.aoHeader),I(b,b.aoFooter),
|
||||||
|
ta(b);d.bVisible=a;I(b,b.aoHeader);I(b,b.aoFooter);U(b);(b.oScroll.sX||b.oScroll.sY)&&V(b);t(b,null,"column-visibility",[b,c,a]);ta(b)}d=void 0}}return d})});x("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?X(b,c):c})});r("columns.adjust()",function(){return this.iterator("table",function(a){U(a)})});r("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return ga(c,
|
||||||
|
b);if("fromData"===a||"toVisible"===a)return X(c,b)}});r("column()",function(a,b){return ab(this.columns(a,b))});r("cells()",function(a,b,c){g.isPlainObject(a)&&(a.row?(c=b,b=null):(c=a,a=null));g.isPlainObject(b)&&(c=b,b=null);if(null===b||b===l)return this.iterator("table",function(b){var d=a,e=$a(c),f=b.aoData,h=Ya(b,e),e=xa(f,h,"anCells"),i=g([].concat.apply([],e)),j,m=b.aoColumns.length,n,l,p,r;return Za(d,function(a){if(a){if(g.isPlainObject(a))return[a]}else{n=[];l=0;for(p=h.length;l<p;l++){j=
|
||||||
|
h[l];for(r=0;r<m;r++)n.push({row:j,column:r})}return n}return i.filter(a).map(function(a,b){j=b.parentNode._DT_RowIndex;return{row:j,column:g.inArray(b,f[j].anCells)}}).toArray()})});var d=this.columns(b,c),e=this.rows(a,c),f,h,i,j,n,m=this.iterator("table",function(a,b){f=[];h=0;for(i=e[b].length;h<i;h++){j=0;for(n=d[b].length;j<n;j++)f.push({row:e[b][h],column:d[b][j]})}return f});g.extend(m.selector,{cols:b,rows:a,opts:c});return m});x("cells().nodes()","cell().node()",function(){return this.iterator("cell",
|
||||||
|
function(a,b,c){return a.aoData[b].anCells[c]})});r("cells().data()",function(){return this.iterator("cell",function(a,b,c){return A(a,b,c)})});x("cells().cache()","cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,d){return b.aoData[c][a][d]})});x("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,b,c){return{row:b,column:c,columnVisible:X(a,c)}})});r(["cells().invalidate()","cell().invalidate()"],function(a){var b=
|
||||||
|
this.selector;this.rows(b.rows,b.opts).invalidate(a);return this});r("cell()",function(a,b,c){return ab(this.cells(a,b,c))});r("cell().data()",function(a){var b=this.context,c=this[0];if(a===l)return b.length&&c.length?A(b[0],c[0].row,c[0].column):l;Ea(b[0],c[0].row,c[0].column,a);la(b[0],c[0].row,"data",c[0].column);return this});r("order()",function(a,b){var c=this.context;if(a===l)return 0!==c.length?c[0].aaSorting:l;"number"===typeof a?a=[[a,b]]:g.isArray(a[0])||(a=Array.prototype.slice.call(arguments));
|
||||||
|
return this.iterator("table",function(b){b.aaSorting=a.slice()})});r("order.listener()",function(a,b,c){return this.iterator("table",function(d){Ka(d,a,b,c)})});r(["columns().order()","column().order()"],function(a){var b=this;return this.iterator("table",function(c,d){var e=[];g.each(b[d],function(b,c){e.push([c,a])});c.aaSorting=e})});r("search()",function(a,b,c,d){var e=this.context;return a===l?0!==e.length?e[0].oPreviousSearch.sSearch:l:this.iterator("table",function(e){e.oFeatures.bFilter&&
|
||||||
|
aa(e,g.extend({},e.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),1)})});r(["columns().search()","column().search()"],function(a,b,c,d){return this.iterator("column",function(e,f){var h=e.aoPreSearchCols;if(a===l)return h[f].sSearch;e.oFeatures.bFilter&&(g.extend(h[f],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),aa(e,e.oPreviousSearch,1))})});p.versionCheck=p.fnVersionCheck=function(a){for(var b=
|
||||||
|
p.version.split("."),a=a.split("."),c,d,e=0,f=a.length;e<f;e++)if(c=parseInt(b[e],10)||0,d=parseInt(a[e],10)||0,c!==d)return c>d;return!0};p.isDataTable=p.fnIsDataTable=function(a){var b=g(a).get(0),c=!1;g.each(p.settings,function(a,e){if(e.nTable===b||e.nScrollHead===b||e.nScrollFoot===b)c=!0});return c};p.tables=p.fnTables=function(a){return jQuery.map(p.settings,function(b){if(!a||a&&g(b.nTable).is(":visible"))return b.nTable})};p.camelToHungarian=G;r("$()",function(a,b){var c=this.rows(b).nodes(),
|
||||||
|
c=g(c);return g([].concat(c.filter(a).toArray(),c.find(a).toArray()))});g.each(["on","one","off"],function(a,b){r(b+"()",function(){var a=Array.prototype.slice.call(arguments);-1===a[0].indexOf(".dt")&&(a[0]+=".dt");var d=g(this.tables().nodes());d[b].apply(d,a);return this})});r("clear()",function(){return this.iterator("table",function(a){ja(a)})});r("settings()",function(){return new q(this.context,this.context)});r("data()",function(){return this.iterator("table",function(a){return B(a.aoData,
|
||||||
|
"_aData")}).flatten()});r("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,f=b.nTBody,h=b.nTHead,i=b.nTFoot,j=g(e),f=g(f),n=g(b.nTableWrapper),m=g.map(b.aoData,function(a){return a.nTr}),l;b.bDestroying=!0;t(b,"aoDestroyCallback","destroy",[b]);a||(new q(b)).columns().visible(!0);n.unbind(".DT").find(":not(tbody *)").unbind(".DT");g(za).unbind(".DT-"+b.sInstance);e!=h.parentNode&&(j.children("thead").detach(),j.append(h));
|
||||||
|
i&&e!=i.parentNode&&(j.children("tfoot").detach(),j.append(i));j.detach();n.detach();b.aaSorting=[];b.aaSortingFixed=[];sa(b);g(m).removeClass(b.asStripeClasses.join(" "));g("th, td",h).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);b.bJUI&&(g("th span."+d.sSortIcon+", td span."+d.sSortIcon,h).detach(),g("th, td",h).each(function(){var a=g("div."+d.sSortJUIWrapper,this);g(this).append(a.contents());a.detach()}));!a&&c&&c.insertBefore(e,b.nTableReinsertBefore);
|
||||||
|
f.children().detach();f.append(m);j.css("width",b.sDestroyWidth).removeClass(d.sTable);(l=b.asDestroyStripes.length)&&f.children().each(function(a){g(this).addClass(b.asDestroyStripes[a%l])});c=g.inArray(b,p.settings);-1!==c&&p.settings.splice(c,1)})});p.version="1.10.0";p.settings=[];p.models={};p.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};p.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null};p.models.oColumn=
|
||||||
|
{idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};p.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,
|
||||||
|
aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,
|
||||||
|
fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,
|
||||||
|
iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": 升序排列",sSortDescending:":降序排列"},oPaginate:{sFirst:"第一页",sLast:"最后一页",sNext:"下一页",sPrevious:"上一页"},sEmptyTable:"没有数据",sInfo:"显示 _START_ 到 _END_ ,共 _TOTAL_ 条",sInfoEmpty:"没有数据",sInfoFiltered:"(从 _MAX_ 条中过滤)",sInfoPostFix:"",sDecimal:"",
|
||||||
|
sThousands:",",sLengthMenu:"显示 _MENU_ 条",sLoadingRecords:"加载中...",sProcessing:"处理中...",sSearch:"从当前数据中检索:",sUrl:"",sZeroRecords:"没有找到匹配的记录"},oSearch:g.extend({},p.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null};S(p.defaults);p.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,
|
||||||
|
mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};S(p.defaults.column);p.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,
|
||||||
|
bScrollbarLeft:!1},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,
|
||||||
|
nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:l,oAjaxData:l,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,
|
||||||
|
oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==z(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==z(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,
|
||||||
|
nScrollFoot:null,aLastSort:[],oPlugins:{}};p.ext=u={classes:{},errMode:"alert",feature:[],search:[],internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:p.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:p.version};g.extend(u,{afnFiltering:u.search,aTypes:u.type.detect,ofnSearch:u.type.search,oSort:u.type.order,afnSortData:u.order,aoFeatures:u.feature,oApi:u.internal,oStdClasses:u.classes,oPagination:u.pager});
|
||||||
|
g.extend(p.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",
|
||||||
|
sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",
|
||||||
|
sJUIHeader:"",sJUIFooter:""});var ya="",ya="",E=ya+"ui-state-default",ea=ya+"css_right ui-icon ui-icon-",Rb=ya+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";g.extend(p.ext.oJUIClasses,p.ext.classes,{sPageButton:"fg-button ui-button "+E,sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:E+" sorting_asc",sSortDesc:E+" sorting_desc",sSortable:E+" sorting",
|
||||||
|
sSortableAsc:E+" sorting_asc_disabled",sSortableDesc:E+" sorting_desc_disabled",sSortableNone:E+" sorting_disabled",sSortJUIAsc:ea+"triangle-1-n",sSortJUIDesc:ea+"triangle-1-s",sSortJUI:ea+"carat-2-n-s",sSortJUIAscAllowed:ea+"carat-1-n",sSortJUIDescAllowed:ea+"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+E,sScrollFoot:"dataTables_scrollFoot "+E,sHeaderTH:E,sFooterTH:E,sJUIHeader:Rb+" ui-corner-tl ui-corner-tr",sJUIFooter:Rb+
|
||||||
|
" ui-corner-bl ui-corner-br"});var Ib=p.ext.pager;g.extend(Ib,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},simple_numbers:function(a,b){return["previous",Ua(a,b),"next"]},full_numbers:function(a,b){return["first","previous",Ua(a,b),"next","last"]},_numbers:Ua,numbers_length:7});g.extend(!0,p.ext.renderer,{pageButton:{_:function(a,b,c,d,e,f){var h=a.oClasses,i=a.oLanguage.oPaginate,j,l,m=0,o=function(b,d){var k,p,r,q,s=function(b){Ra(a,b.data.action,
|
||||||
|
true)};k=0;for(p=d.length;k<p;k++){q=d[k];if(g.isArray(q)){r=g("<"+(q.DT_el||"div")+"/>").appendTo(b);o(r,q)}else{l=j="";switch(q){case "ellipsis":b.append("<span>…</span>");break;case "first":j=i.sFirst;l=q+(e>0?"":" "+h.sPageButtonDisabled);break;case "previous":j=i.sPrevious;l=q+(e>0?"":" "+h.sPageButtonDisabled);break;case "next":j=i.sNext;l=q+(e<f-1?"":" "+h.sPageButtonDisabled);break;case "last":j=i.sLast;l=q+(e<f-1?"":" "+h.sPageButtonDisabled);break;default:j=q+1;l=e===q?h.sPageButtonActive:
|
||||||
|
""}if(j){r=g("<a>",{"class":h.sPageButton+" "+l,"aria-controls":a.sTableId,"data-dt-idx":m,tabindex:a.iTabIndex,id:c===0&&typeof q==="string"?a.sTableId+"_"+q:null}).html(j).appendTo(b);Ta(r,{action:q},s);m++}}}},k=g(N.activeElement).data("dt-idx");o(g(b).empty(),d);k!==null&&g(b).find("[data-dt-idx="+k+"]").focus()}}});var va=function(a,b,c,d){if(!a||"-"===a)return-Infinity;b&&(a=Mb(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};g.extend(u.type.order,{"date-pre":function(a){return Date.parse(a)||
|
||||||
|
0},"html-pre":function(a){return!a?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return"string"===typeof a?a.toLowerCase():!a||!a.toString?"":a.toString()},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});bb("");g.extend(p.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Xa(a,c)?"num"+c:null},function(a){if(a&&!Vb.test(a))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||da(a)?"date":
|
||||||
|
null},function(a,b){var c=b.oLanguage.sDecimal;return Xa(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Nb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Nb(a,c,!0)?"html-num-fmt"+c:null},function(a){return da(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);g.extend(p.ext.type.search,{html:function(a){return da(a)?"":"string"===typeof a?a.replace(Kb," ").replace(wa,""):""},string:function(a){return da(a)?"":"string"===typeof a?a.replace(Kb,
|
||||||
|
" "):a}});g.extend(!0,p.ext.renderer,{header:{_:function(a,b,c,d){g(a.nTable).on("order.dt.DT",function(a,f,g,i){a=c.idx;b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass(i[a]=="asc"?d.sSortAsc:i[a]=="desc"?d.sSortDesc:c.sSortingClass)})},jqueryui:function(a,b,c,d){var e=c.idx;g("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(g("<span/>").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);g(a.nTable).on("order.dt.DT",function(a,g,i,j){b.removeClass(d.sSortAsc+
|
||||||
|
" "+d.sSortDesc).addClass(j[e]=="asc"?d.sSortAsc:j[e]=="desc"?d.sSortDesc:c.sSortingClass);b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass(j[e]=="asc"?d.sSortJUIAsc:j[e]=="desc"?d.sSortJUIDesc:c.sSortingClassJUI)})}}});p.render={number:function(a,b,c,d){return{display:function(e){var e=parseFloat(e),f=parseInt(e,10),e=c?(b+(e-f).toFixed(c)).substring(2):"";return(d||"")+f.toString().replace(/\B(?=(\d{3})+(?!\d))/g,
|
||||||
|
a)+e}}}};g.extend(p.ext.internal,{_fnExternApiFunc:Jb,_fnBuildAjax:na,_fnAjaxUpdate:ib,_fnAjaxParameters:rb,_fnAjaxUpdateDraw:sb,_fnAjaxDataSrc:oa,_fnAddColumn:Aa,_fnColumnOptions:fa,_fnAdjustColumnSizing:U,_fnVisibleToColumnIndex:ga,_fnColumnIndexToVisible:X,_fnVisbleColumns:Y,_fnGetColumns:W,_fnColumnTypes:Da,_fnApplyColumnDefs:gb,_fnHungarianMap:S,_fnCamelToHungarian:G,_fnLanguageCompat:M,_fnBrowserDetect:eb,_fnAddData:H,_fnAddTr:ha,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==l?b._DT_RowIndex:
|
||||||
|
null},_fnNodeToColumnIndex:function(a,b,c){return g.inArray(c,a.aoData[b].anCells)},_fnGetCellData:A,_fnSetCellData:Ea,_fnSplitObjNotation:Ga,_fnGetObjectDataFn:T,_fnSetObjectDataFn:Ba,_fnGetDataMaster:Ha,_fnClearTable:ja,_fnDeleteIndex:ka,_fnInvalidateRow:la,_fnGetRowElements:ia,_fnCreateTr:Fa,_fnBuildHead:hb,_fnDrawHead:I,_fnDraw:J,_fnReDraw:K,_fnAddOptionsHtml:kb,_fnDetectHeader:$,_fnGetUniqueThs:ma,_fnFeatureHtmlFilter:mb,_fnFilterComplete:aa,_fnFilterCustom:vb,_fnFilterColumn:ub,_fnFilter:tb,
|
||||||
|
_fnFilterCreateSearch:Na,_fnEscapeRegex:Oa,_fnFilterData:wb,_fnFeatureHtmlInfo:pb,_fnUpdateInfo:xb,_fnInfoMacros:yb,_fnInitialise:ra,_fnInitComplete:pa,_fnLengthChange:Pa,_fnFeatureHtmlLength:lb,_fnFeatureHtmlPaginate:qb,_fnPageChange:Ra,_fnFeatureHtmlProcessing:nb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:ob,_fnScrollDraw:V,_fnApplyToChildren:F,_fnCalculateColumnWidths:Ca,_fnThrottle:Ma,_fnConvertToWidth:zb,_fnScrollingWidthAdjust:Bb,_fnGetWidestNode:Ab,_fnGetMaxLenString:Cb,_fnStringToCss:s,_fnScrollBarWidth:Db,
|
||||||
|
_fnSortFlatten:Q,_fnSort:jb,_fnSortAria:Fb,_fnSortListener:Sa,_fnSortAttachListener:Ka,_fnSortingClasses:sa,_fnSortData:Eb,_fnSaveState:ta,_fnLoadState:Gb,_fnSettingsFromNode:ua,_fnLog:O,_fnMap:D,_fnBindAction:Ta,_fnCallbackReg:y,_fnCallbackFire:t,_fnLengthOverflow:Qa,_fnRenderer:La,_fnDataSource:z,_fnRowAttributes:Ia,_fnCalculateEnd:function(){}});g.fn.dataTable=p;g.fn.dataTableSettings=p.settings;g.fn.dataTableExt=p.ext;g.fn.DataTable=function(a){return g(this).dataTable(a).api()};g.each(p,function(a,
|
||||||
|
b){g.fn.DataTable[a]=b});return g.fn.dataTable};"function"===typeof define&&define.amd?define("datatables",["jquery"],M):"object"===typeof exports?M(require("jquery")):jQuery&&!jQuery.fn.dataTable&&M(jQuery)})(window,document);
|
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.1 KiB |
@ -0,0 +1,182 @@
|
|||||||
|
/* iCheck.js Minimal skin
|
||||||
|
----------------------------------- */
|
||||||
|
.icheckbox,.iradio{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(minimal.png) no-repeat;border: none;cursor: pointer}
|
||||||
|
.icheckbox,.icheckbox.static:hover{background-position: 0 0}
|
||||||
|
.icheckbox.hover,.icheckbox:hover{background-position: -20px 0}
|
||||||
|
.icheckbox.checked{background-position: -40px 0}
|
||||||
|
.icheckbox.disabled{background-position: -60px 0;cursor: default}
|
||||||
|
.icheckbox.checked.disabled{background-position: -80px 0}
|
||||||
|
.iradio,.iradio.static:hover{background-position: -100px 0}
|
||||||
|
.iradio.hover,.iradio:hover{background-position: -120px 0}
|
||||||
|
.iradio.checked{background-position: -140px 0}
|
||||||
|
.iradio.disabled{background-position: -160px 0;cursor: default}
|
||||||
|
.iradio.checked.disabled{background-position: -180px 0}
|
||||||
|
|
||||||
|
/* Retina support */
|
||||||
|
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox,.iradio{background-image: url(minimal@2x.png);
|
||||||
|
-webkit-background-size: 200px 20px;
|
||||||
|
background-size: 200px 20px}
|
||||||
|
}
|
||||||
|
/* red */
|
||||||
|
.icheckbox-red,.iradio-red{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(red.png) no-repeat;border: none;cursor: pointer}
|
||||||
|
.icheckbox-red,.icheckbox-red.static:hover{background-position: 0 0}
|
||||||
|
.icheckbox-red.hover,.icheckbox-red:hover{background-position: -20px 0}
|
||||||
|
.icheckbox-red.checked{background-position: -40px 0}
|
||||||
|
.icheckbox-red.disabled{background-position: -60px 0;cursor: default}
|
||||||
|
.icheckbox-red.checked.disabled{background-position: -80px 0}
|
||||||
|
.iradio-red,.iradio-red.static:hover{background-position: -100px 0}
|
||||||
|
.iradio-red.hover,.iradio-red:hover{background-position: -120px 0}
|
||||||
|
.iradio-red.checked{background-position: -140px 0}
|
||||||
|
.iradio-red.disabled{background-position: -160px 0;cursor: default}
|
||||||
|
.iradio-red.checked.disabled{background-position: -180px 0}
|
||||||
|
|
||||||
|
/* Retina support */
|
||||||
|
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-red,.iradio-red{background-image: url(red@2x.png);
|
||||||
|
-webkit-background-size: 200px 20px;
|
||||||
|
background-size: 200px 20px}
|
||||||
|
}
|
||||||
|
/* green */
|
||||||
|
.icheckbox-green,.iradio-green{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(green.png) no-repeat;border: none;cursor: pointer}
|
||||||
|
.icheckbox-green,.icheckbox-green.static:hover{background-position: 0 0}
|
||||||
|
.icheckbox-green.hover,.icheckbox-green:hover{background-position: -20px 0}
|
||||||
|
.icheckbox-green.checked{background-position: -40px 0}
|
||||||
|
.icheckbox-green.disabled{background-position: -60px 0;cursor: default}
|
||||||
|
.icheckbox-green.checked.disabled{background-position: -80px 0}
|
||||||
|
.iradio-green,.iradio-green.static:hover{background-position: -100px 0}
|
||||||
|
.iradio-green.hover,.iradio-green:hover{background-position: -120px 0}
|
||||||
|
.iradio-green.checked{background-position: -140px 0}
|
||||||
|
.iradio-green.disabled{background-position: -160px 0;cursor: default}
|
||||||
|
.iradio-green.checked.disabled{background-position: -180px 0}
|
||||||
|
|
||||||
|
/* Retina support */
|
||||||
|
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-green,.iradio-green{background-image: url(green@2x.png);
|
||||||
|
-webkit-background-size: 200px 20px;
|
||||||
|
background-size: 200px 20px}
|
||||||
|
}
|
||||||
|
/* blue */
|
||||||
|
.icheckbox-blue,.iradio-blue{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(blue.png) no-repeat;border: none;cursor: pointer}
|
||||||
|
.icheckbox-blue,.icheckbox-blue.static:hover{background-position: 0 0}
|
||||||
|
.icheckbox-blue.hover,.icheckbox-blue:hover{background-position: -20px 0}
|
||||||
|
.icheckbox-blue.checked{background-position: -40px 0}
|
||||||
|
.icheckbox-blue.disabled{background-position: -60px 0;cursor: default}
|
||||||
|
.icheckbox-blue.checked.disabled{background-position: -80px 0}
|
||||||
|
.iradio-blue,.iradio-blue.static:hover{background-position: -100px 0}
|
||||||
|
.iradio-blue.hover,.iradio-blue:hover{background-position: -120px 0}
|
||||||
|
.iradio-blue.checked{background-position: -140px 0}
|
||||||
|
.iradio-blue.disabled{background-position: -160px 0;cursor: default}
|
||||||
|
.iradio-blue.checked.disabled{background-position: -180px 0}
|
||||||
|
|
||||||
|
/* Retina support */
|
||||||
|
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-blue,.iradio-blue{background-image: url(blue@2x.png);
|
||||||
|
-webkit-background-size: 200px 20px;
|
||||||
|
background-size: 200px 20px}
|
||||||
|
}
|
||||||
|
/* aero */
|
||||||
|
.icheckbox-aero,.iradio-aero{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(aero.png) no-repeat;border: none;cursor: pointer}
|
||||||
|
.icheckbox-aero,.icheckbox-aero.static:hover{background-position: 0 0}
|
||||||
|
.icheckbox-aero.hover,.icheckbox-aero:hover{background-position: -20px 0}
|
||||||
|
.icheckbox-aero.checked{background-position: -40px 0}
|
||||||
|
.icheckbox-aero.disabled{background-position: -60px 0;cursor: default}
|
||||||
|
.icheckbox-aero.checked.disabled{background-position: -80px 0}
|
||||||
|
.iradio-aero,.iradio-aero.static:hover{background-position: -100px 0}
|
||||||
|
.iradio-aero.hover,.iradio-aero:hover{background-position: -120px 0}
|
||||||
|
.iradio-aero.checked{background-position: -140px 0}
|
||||||
|
.iradio-aero.disabled{background-position: -160px 0;cursor: default}
|
||||||
|
.iradio-aero.checked.disabled{background-position: -180px 0}
|
||||||
|
|
||||||
|
/* Retina support */
|
||||||
|
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-aero,.iradio-aero{background-image: url(aero@2x.png);
|
||||||
|
-webkit-background-size: 200px 20px;
|
||||||
|
background-size: 200px 20px}
|
||||||
|
}
|
||||||
|
/* grey */
|
||||||
|
.icheckbox-grey,.iradio-grey{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(grey.png) no-repeat;border: none;cursor: pointer}
|
||||||
|
.icheckbox-grey,.icheckbox-grey.static:hover{background-position: 0 0}
|
||||||
|
.icheckbox-grey.hover,.icheckbox-grey:hover{background-position: -20px 0}
|
||||||
|
.icheckbox-grey.checked{background-position: -40px 0}
|
||||||
|
.icheckbox-grey.disabled{background-position: -60px 0;cursor: default}
|
||||||
|
.icheckbox-grey.checked.disabled{background-position: -80px 0}
|
||||||
|
.iradio-grey,.iradio-grey.static:hover{background-position: -100px 0}
|
||||||
|
.iradio-grey.hover,.iradio-grey:hover{background-position: -120px 0}
|
||||||
|
.iradio-grey.checked{background-position: -140px 0}
|
||||||
|
.iradio-grey.disabled{background-position: -160px 0;cursor: default}
|
||||||
|
.iradio-grey.checked.disabled{background-position: -180px 0}
|
||||||
|
|
||||||
|
/* Retina support */
|
||||||
|
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-grey,.iradio-grey{background-image: url(grey@2x.png);
|
||||||
|
-webkit-background-size: 200px 20px;
|
||||||
|
background-size: 200px 20px}
|
||||||
|
}
|
||||||
|
/* orange */
|
||||||
|
.icheckbox-orange,.iradio-orange{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(orange.png) no-repeat;border: none;cursor: pointer}
|
||||||
|
.icheckbox-orange,.icheckbox-orange.static:hover{background-position: 0 0}
|
||||||
|
.icheckbox-orange.hover,.icheckbox-orange:hover{background-position: -20px 0}
|
||||||
|
.icheckbox-orange.checked{background-position: -40px 0}
|
||||||
|
.icheckbox-orange.disabled{background-position: -60px 0;cursor: default}
|
||||||
|
.icheckbox-orange.checked.disabled{background-position: -80px 0}
|
||||||
|
.iradio-orange,.iradio-orange.static:hover{background-position: -100px 0}
|
||||||
|
.iradio-orange.hover,.iradio-orange:hover{background-position: -120px 0}
|
||||||
|
.iradio-orange.checked{background-position: -140px 0}
|
||||||
|
.iradio-orange.disabled{background-position: -160px 0;cursor: default}
|
||||||
|
.iradio-orange.checked.disabled{background-position: -180px 0}
|
||||||
|
|
||||||
|
/* Retina support */
|
||||||
|
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-orange,.iradio-orange{background-image: url(orange@2x.png);
|
||||||
|
-webkit-background-size: 200px 20px;
|
||||||
|
background-size: 200px 20px}
|
||||||
|
}
|
||||||
|
/* yellow */
|
||||||
|
.icheckbox-yellow,.iradio-yellow{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(yellow.png) no-repeat;border: none;cursor: pointer}
|
||||||
|
.icheckbox-yellow,.icheckbox-yellow.static:hover{background-position: 0 0}
|
||||||
|
.icheckbox-yellow.hover,.icheckbox-yellow:hover{background-position: -20px 0}
|
||||||
|
.icheckbox-yellow.checked{background-position: -40px 0}
|
||||||
|
.icheckbox-yellow.disabled{background-position: -60px 0;cursor: default}
|
||||||
|
.icheckbox-yellow.checked.disabled{background-position: -80px 0}
|
||||||
|
.iradio-yellow,.iradio-yellow.static:hover{background-position: -100px 0}
|
||||||
|
.iradio-yellow.hover,.iradio-yellow:hover{background-position: -120px 0}
|
||||||
|
.iradio-yellow.checked{background-position: -140px 0}
|
||||||
|
.iradio-yellow.disabled{background-position: -160px 0;cursor: default}
|
||||||
|
.iradio-yellow.checked.disabled{background-position: -180px 0}
|
||||||
|
|
||||||
|
/* Retina support */
|
||||||
|
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-yellow,.iradio-yellow{background-image: url(yellow@2x.png);
|
||||||
|
-webkit-background-size: 200px 20px;
|
||||||
|
background-size: 200px 20px}
|
||||||
|
}
|
||||||
|
/* pink */
|
||||||
|
.icheckbox-pink,.iradio-pink{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(pink.png) no-repeat;border: none;cursor: pointer}
|
||||||
|
.icheckbox-pink,.icheckbox-pink.static:hover{background-position: 0 0}
|
||||||
|
.icheckbox-pink.hover,.icheckbox-pink:hover{background-position: -20px 0}
|
||||||
|
.icheckbox-pink.checked{background-position: -40px 0}
|
||||||
|
.icheckbox-pink.disabled{background-position: -60px 0;cursor: default}
|
||||||
|
.icheckbox-pink.checked.disabled{background-position: -80px 0}
|
||||||
|
.iradio-pink,.iradio-pink.static:hover{background-position: -100px 0}
|
||||||
|
.iradio-pink.hover,.iradio-pink:hover{background-position: -120px 0}
|
||||||
|
.iradio-pink.checked{background-position: -140px 0}
|
||||||
|
.iradio-pink.disabled{background-position: -160px 0;cursor: default}
|
||||||
|
.iradio-pink.checked.disabled{background-position: -180px 0}
|
||||||
|
|
||||||
|
/* Retina support */
|
||||||
|
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-pink,.iradio-pink{background-image: url(pink@2x.png);
|
||||||
|
-webkit-background-size: 200px 20px;
|
||||||
|
background-size: 200px 20px}
|
||||||
|
}
|
||||||
|
/* purple */
|
||||||
|
.icheckbox-purple,.iradio-purple{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(purple.png) no-repeat;border: none;cursor: pointer}
|
||||||
|
.icheckbox-purple,.icheckbox-purple.static:hover{background-position: 0 0}
|
||||||
|
.icheckbox-purple.hover,.icheckbox-purple:hover{background-position: -20px 0}
|
||||||
|
.icheckbox-purple.checked{background-position: -40px 0}
|
||||||
|
.icheckbox-purple.disabled{background-position: -60px 0;cursor: default}
|
||||||
|
.icheckbox-purple.checked.disabled{background-position: -80px 0}
|
||||||
|
.iradio-purple,.iradio-purple.static:hover{background-position: -100px 0}
|
||||||
|
.iradio-purple.hover,.iradio-purple:hover{background-position: -120px 0}
|
||||||
|
.iradio-purple.checked{background-position: -140px 0}
|
||||||
|
.iradio-purple.disabled{background-position: -160px 0;cursor: default}
|
||||||
|
.iradio-purple.checked.disabled{background-position: -180px 0}
|
||||||
|
|
||||||
|
/* Retina support */
|
||||||
|
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-purple,.iradio-purple{background-image: url(purple@2x.png);
|
||||||
|
-webkit-background-size: 200px 20px;
|
||||||
|
background-size: 200px 20px}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
|||||||
|
// iCheck v0.7, http://git.io/uhUPMA
|
||||||
|
(function(b){function m(a,b,d,c){var e=a[0],l=a.parent(),j=/disable|enable/.test(d)?"disabled":"checked",f="update"==d?{checked:e.checked,disabled:e.disabled}:e[j];if(/^check|disable/.test(d)&&!f)n(a,!0,l,j);else if(/uncheck|enable/.test(d)&&f)p(a,!0,l,j);else if("update"==d)for(j in f)f[j]?n(a,!1,l,j,c):p(a,!1,l,j,c);else b||(!0==d&&!e.disabled&&a.trigger("is.Clicked"),f?n(a,!0,l,j):p(a,!0,l,j))}function n(a,k,d,c,e){k&&(a[0][c]=!0);!0!==d.data(c)&&("checked"==c&&("radio"==a[0].type&&a[0].name)&&
|
||||||
|
b("input[name="+a[0].name+"]").each(function(){this!==a[0]&&b(this).data("icheck")&&p(b(this),!0,b(this).parent(),c)}),(k||e)&&a.trigger("is.Changed"),k&&a.trigger("is."+c.replace("di","Di").replace("ch","Ch")),d.data(c,!0).addClass(r(a,c)))}function p(a,b,d,c,e){var l="disabled"==c?"Enabled":"Unchecked";b&&(a[0][c]=!1);!1!==d.data(c)&&((b||e)&&a.trigger("is.Changed"),b&&a.trigger("is."+l),d.data(c,!1).removeClass(r(a,c)))}function u(a,k){if(a.data("icheck")){var d=a[0].id,c=b("label[for="+d+"]");
|
||||||
|
a.parent().html(a.attr("style",a.data("icheck").style||"").trigger(k||""));a.removeData("icheck").unbind(".df").unwrap();d&&c.length&&c.unbind(".df")}}function r(a,b){if(a.data("icheck"))return a.data("icheck").options[b+"Class"]}b.fn.iCheck=function(a){if(/^(check|uncheck|disable|enable|update|destroy)$/.test(a))return this.each(function(){/destroy/.test(a)?u(b(this),"is.Destroyed"):m(b(this),!0,a)});if("object"==typeof a||!a){var k=navigator.userAgent,d=b.extend({},{checkboxClass:"icheckbox",radioClass:"iradio",
|
||||||
|
checkedClass:"checked",disabledClass:"disabled",hoverClass:"hover",focusClass:"focus",activeClass:"active",labelHover:!0,labelHoverClass:"hover"},a),c=/^(checkbox|radio)$/.test(d.handle)?":"+d.handle:":checkbox, :radio",e=(""+d.increaseArea).replace("%","")|0;-50>e&&(e=-50);return this.each(function(){(b(this).is(c)?b(this):b(this).find(c)).each(function(){u(b(this));var a=this,c=a.id,f={position:"absolute",top:-e+"%",left:-e+"%",display:"block",width:100+2*e+"%",height:100+2*e+"%",margin:0,padding:0,
|
||||||
|
background:"#fff",border:0,opacity:0},r=/ipad|iphone|ipod|android|blackberry|windows phone|opera mini/i.test(k)?{position:"absolute",visibility:"hidden"}:e|0?f:{position:"absolute",opacity:0},w="checkbox"==a.type?d.checkboxClass:d.radioClass,h=b(this).data("icheck",{style:b(this).attr("style"),options:d}).css(r),q=b("label[for="+c+"]"),g=h.wrap('<div class="'+w+'"/>').trigger("is.Created").parent().append(d.insert),f=b("<ins/>").css(f).appendTo(g).click(function(){h.click();m(h,!1,!0)}),s=d.hoverClass,
|
||||||
|
t=d.labelHoverClass,v;!0==d.cursor&&f.css("cursor","pointer");!0==d.inheritClass&&g.addClass(a.className);!0==d.inheritID&&c&&g.attr("id","icheck-"+c);"static"==g.css("position")&&g.css("position","relative");m(h,!0,"update");c&&q.length&&q.bind("click.df mouseenter.df mouseleave.df touchbegin.df touchend.df",function(c){var e=c.type,f=b(this);"click"==e?(c.preventDefault(),h.click(),m(h,!1,!0)):!0==d.labelHover&&!a.disabled&&(/mouseenter|touchbegin/.test(e)?(g.addClass(s),f.addClass(t)):(g.removeClass(s),
|
||||||
|
f.removeClass(t)))});h.bind("focus.df blur.df keyup.df keydown.df keypress.df",function(c){var b=c.type,e=c.keyCode||c.charCode||c.which;c=/MSIE [5-8]/.test(k)?"keyup"==b&&"keypress"!==v:"keyup"==b;e="keypress"==b&&32==e;/focus|blur/.test(b)?"focus"==b?g.addClass(d.focusClass):g.removeClass(d.focusClass):"radio"==a.type?(c?m(h,!0,"update",!0):e&&!a.checked&&n(h,!1,g,"checked",!0),v=b):"checkbox"==a.type&&e&&(a.checked?p(h,!1,g,"checked",!0):n(h,!1,g,"checked",!0))});f.bind("mousedown mouseup mouseout mouseenter mouseleave touchbegin touchend",
|
||||||
|
function(b){b=b.type;var e=/mousedown|mouseup|mouseout/.test(b)?d.activeClass:s;a.disabled||(/mousedown|mouseenter|touchbegin/.test(b)?g.addClass(e):g.removeClass(e),c&&(q.length&&!0==d.labelHover&&e==s)&&(/mouseleave|touchend/.test(b)?q.removeClass(t):q.addClass(t)))})})})}return this}})(jQuery);
|
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 11 KiB |
@ -0,0 +1,109 @@
|
|||||||
|
/* Demo Note: This demo uses a FileProgress class that handles the UI for displaying the file name and percent complete.
|
||||||
|
The FileProgress class is not part of SWFUpload.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* **********************
|
||||||
|
Event Handlers
|
||||||
|
These are my custom event handlers to make my
|
||||||
|
web application behave the way I went when SWFUpload
|
||||||
|
completes different tasks. These aren't part of the SWFUpload
|
||||||
|
package. They are part of my application. Without these none
|
||||||
|
of the actions SWFUpload makes will show up in my application.
|
||||||
|
********************** */
|
||||||
|
function preLoad() {
|
||||||
|
if (!this.support.loading) {
|
||||||
|
alert("你需要安装Flash Player 9.028或者更高版本,才能使用上传功能。");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function loadFailed() {
|
||||||
|
alert("装在上传组件失败,请重新刷新页面重试。");
|
||||||
|
}
|
||||||
|
|
||||||
|
function fileQueued(file) {
|
||||||
|
try {
|
||||||
|
if(this.customSettings.tdFilesQueued != undefined) {
|
||||||
|
this.customSettings.tdFilesQueued.innerHTML = this.getStats().files_queued;
|
||||||
|
}
|
||||||
|
} catch (ex) {
|
||||||
|
this.debug(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function fileDialogComplete() {
|
||||||
|
this.startUpload();
|
||||||
|
}
|
||||||
|
|
||||||
|
function uploadStart(file) {
|
||||||
|
try {
|
||||||
|
if(this.customSettings.progressCount != undefined) {
|
||||||
|
this.customSettings.progressCount = 0;
|
||||||
|
}
|
||||||
|
updateDisplay.call(this, file);
|
||||||
|
}
|
||||||
|
catch (ex) {
|
||||||
|
this.debug(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function uploadProgress(file, bytesLoaded, bytesTotal) {
|
||||||
|
try {
|
||||||
|
if(this.customSettings.progressCount != undefined) {
|
||||||
|
this.customSettings.progressCount++;
|
||||||
|
}
|
||||||
|
updateDisplay.call(this, file);
|
||||||
|
} catch (ex) {
|
||||||
|
this.debug(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function uploadSuccess(file, serverData) {
|
||||||
|
try {
|
||||||
|
updateDisplay.call(this, file);
|
||||||
|
} catch (ex) {
|
||||||
|
this.debug(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function uploadComplete(file) {
|
||||||
|
if(this.customSettings.tdFilesQueued != undefined) {
|
||||||
|
this.customSettings.tdFilesQueued.innerHTML = this.getStats().files_queued;
|
||||||
|
}
|
||||||
|
if(this.customSettings.tdFilesUploaded != undefined) {
|
||||||
|
this.customSettings.tdFilesUploaded.innerHTML = this.getStats().successful_uploads;
|
||||||
|
}
|
||||||
|
if(this.customSettings.tdErrors != undefined) {
|
||||||
|
this.customSettings.tdErrors.innerHTML = this.getStats().upload_errors;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateDisplay(file) {
|
||||||
|
if(this.customSettings.tdCurrentSpeed != undefined) {
|
||||||
|
this.customSettings.tdCurrentSpeed.innerHTML = SWFUpload.speed.formatBPS(file.currentSpeed);
|
||||||
|
}
|
||||||
|
if(this.customSettings.tdAverageSpeed != undefined) {
|
||||||
|
this.customSettings.tdAverageSpeed.innerHTML = SWFUpload.speed.formatBPS(file.averageSpeed);
|
||||||
|
}
|
||||||
|
if(this.customSettings.tdMovingAverageSpeed != undefined) {
|
||||||
|
this.customSettings.tdMovingAverageSpeed.innerHTML = SWFUpload.speed.formatBPS(file.movingAverageSpeed);
|
||||||
|
}
|
||||||
|
if(this.customSettings.tdTimeRemaining != undefined) {
|
||||||
|
this.customSettings.tdTimeRemaining.innerHTML = SWFUpload.speed.formatTime(file.timeRemaining);
|
||||||
|
}
|
||||||
|
if(this.customSettings.tdTimeElapsed != undefined) {
|
||||||
|
this.customSettings.tdTimeElapsed.innerHTML = SWFUpload.speed.formatTime(file.timeElapsed);
|
||||||
|
}
|
||||||
|
if(this.customSettings.tdPercentUploaded != undefined) {
|
||||||
|
this.customSettings.tdPercentUploaded.innerHTML = SWFUpload.speed.formatPercent(file.percentUploaded);
|
||||||
|
}
|
||||||
|
if(this.customSettings.tdSizeUploaded != undefined) {
|
||||||
|
this.customSettings.tdSizeUploaded.innerHTML = SWFUpload.speed.formatBytes(file.sizeUploaded);
|
||||||
|
}
|
||||||
|
if(this.customSettings.tdProgressEventCount != undefined) {
|
||||||
|
this.customSettings.tdProgressEventCount.innerHTML = this.customSettings.progressCount;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
Cookie Plug-in
|
||||||
|
|
||||||
|
This plug in automatically gets all the cookies for this site and adds them to the post_params.
|
||||||
|
Cookies are loaded only on initialization. The refreshCookies function can be called to update the post_params.
|
||||||
|
The cookies will override any other post params with the same name.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var SWFUpload;
|
||||||
|
if (typeof(SWFUpload) === "function") {
|
||||||
|
SWFUpload.prototype.initSettings = function (oldInitSettings) {
|
||||||
|
return function (userSettings) {
|
||||||
|
if (typeof(oldInitSettings) === "function") {
|
||||||
|
oldInitSettings.call(this, userSettings);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.refreshCookies(false); // The false parameter must be sent since SWFUpload has not initialzed at this point
|
||||||
|
};
|
||||||
|
}(SWFUpload.prototype.initSettings);
|
||||||
|
|
||||||
|
// refreshes the post_params and updates SWFUpload. The sendToFlash parameters is optional and defaults to True
|
||||||
|
SWFUpload.prototype.refreshCookies = function (sendToFlash) {
|
||||||
|
if (sendToFlash === undefined) {
|
||||||
|
sendToFlash = true;
|
||||||
|
}
|
||||||
|
sendToFlash = !!sendToFlash;
|
||||||
|
|
||||||
|
// Get the post_params object
|
||||||
|
var postParams = this.settings.post_params;
|
||||||
|
|
||||||
|
// Get the cookies
|
||||||
|
var i, cookieArray = document.cookie.split(';'), caLength = cookieArray.length, c, eqIndex, name, value;
|
||||||
|
for (i = 0; i < caLength; i++) {
|
||||||
|
c = cookieArray[i];
|
||||||
|
|
||||||
|
// Left Trim spaces
|
||||||
|
while (c.charAt(0) === " ") {
|
||||||
|
c = c.substring(1, c.length);
|
||||||
|
}
|
||||||
|
eqIndex = c.indexOf("=");
|
||||||
|
if (eqIndex > 0) {
|
||||||
|
name = c.substring(0, eqIndex);
|
||||||
|
value = c.substring(eqIndex + 1);
|
||||||
|
postParams[name] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sendToFlash) {
|
||||||
|
this.setPostParams(postParams);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,96 @@
|
|||||||
|
/*
|
||||||
|
Proxy Plug-in
|
||||||
|
|
||||||
|
Features:
|
||||||
|
Times an upload to see if it appear suspiciously fast which might indicate a proxy server or anti-virus suite intercepting the upload.
|
||||||
|
If the upload seems too fast an uploadError event is fired with PROXY error code after the final uploadProgress event.
|
||||||
|
|
||||||
|
Adds a SWFUpload setting allowing you to tweak the bytes/s for triggering the error:
|
||||||
|
proxy_detect_threshold : 256000
|
||||||
|
|
||||||
|
Adds an UPLOAD_ERROR entry called PROXY:
|
||||||
|
function uploadError(file, errorCode, message) {
|
||||||
|
if (errorCode === SWFUpload.UPLOAD_ERROR.PROXY) {
|
||||||
|
alert("You might have a proxy!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
var SWFUpload;
|
||||||
|
if (typeof(SWFUpload) === "function") {
|
||||||
|
SWFUpload.proxyDetect = {};
|
||||||
|
SWFUpload.UPLOAD_ERROR.PROXY = -30300;
|
||||||
|
|
||||||
|
SWFUpload.prototype.initSettings = (function (oldInitSettings) {
|
||||||
|
return function (userSettings) {
|
||||||
|
if (typeof(oldInitSettings) === "function") {
|
||||||
|
oldInitSettings.call(this, userSettings);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.ensureDefault = function (settingName, defaultValue) {
|
||||||
|
this.settings[settingName] = (userSettings[settingName] == undefined) ? defaultValue : userSettings[settingName];
|
||||||
|
};
|
||||||
|
|
||||||
|
// List used to keep the speed stats for the files we are tracking
|
||||||
|
this.proxyDetectFileStartTimes = {};
|
||||||
|
this.proxyDetectSettings = {};
|
||||||
|
|
||||||
|
this.ensureDefault("proxy_detect_threshold", 256000); // Default is 250 KB per second
|
||||||
|
|
||||||
|
this.proxyDetectSettings.user_upload_progress_handler = this.settings.upload_progress_handler;
|
||||||
|
this.proxyDetectSettings.user_upload_complete_handler = this.settings.upload_complete_handler;
|
||||||
|
|
||||||
|
this.settings.upload_progress_handler = SWFUpload.proxyDetect.uploadProgressHandler;
|
||||||
|
this.settings.upload_complete_handler = SWFUpload.proxyDetect.uploadCompleteHandler;
|
||||||
|
|
||||||
|
|
||||||
|
delete this.ensureDefault;
|
||||||
|
};
|
||||||
|
}(SWFUpload.prototype.initSettings));
|
||||||
|
|
||||||
|
SWFUpload.proxyDetect.uploadProgressHandler = function (file, bytesComplete, bytesTotal) {
|
||||||
|
var ex1 = null, time, differenceMS, bps;
|
||||||
|
try {
|
||||||
|
if (typeof this.proxyDetectSettings.user_upload_progress_handler === "function") {
|
||||||
|
this.proxyDetectSettings.user_upload_progress_handler.call(this, file, bytesComplete, bytesTotal);
|
||||||
|
}
|
||||||
|
} catch (ex1) { }
|
||||||
|
|
||||||
|
|
||||||
|
if (bytesComplete === 0) {
|
||||||
|
this.proxyDetectFileStartTimes[file.ID] = new Date();
|
||||||
|
|
||||||
|
} else if (bytesComplete === bytesTotal) {
|
||||||
|
try {
|
||||||
|
// Calculate the Bps and decide if we should trigger the error
|
||||||
|
time = new Date();
|
||||||
|
differenceMS = time.getTime() - this.proxyDetectFileStartTimes[file.ID].getTime();
|
||||||
|
|
||||||
|
if (differenceMS === 0) {
|
||||||
|
differenceMS = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
bps = bytesTotal / (differenceMS * 1000);
|
||||||
|
if (bps > parseInt(this.settings.proxy_detect_threshold, 10)) {
|
||||||
|
this.queueEvent("upload_error_handler", [file, SWFUpload.UPLOAD_ERROR.PROXY, bps]);
|
||||||
|
}
|
||||||
|
} catch (ex) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ex1 !== null) {
|
||||||
|
throw(ex1);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
SWFUpload.proxyDetect.uploadCompleteHandler = function (file) {
|
||||||
|
try {
|
||||||
|
delete this.proxyDetectFileStartTimes[file.ID];
|
||||||
|
} catch (ex) {
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof this.proxyDetectSettings.user_upload_progress_handler === "function") {
|
||||||
|
return this.proxyDetectSettings.user_upload_progress_handler.call(this, file);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
@ -0,0 +1,98 @@
|
|||||||
|
/*
|
||||||
|
Queue Plug-in
|
||||||
|
|
||||||
|
Features:
|
||||||
|
*Adds a cancelQueue() method for cancelling the entire queue.
|
||||||
|
*All queued files are uploaded when startUpload() is called.
|
||||||
|
*If false is returned from uploadComplete then the queue upload is stopped.
|
||||||
|
If false is not returned (strict comparison) then the queue upload is continued.
|
||||||
|
*Adds a QueueComplete event that is fired when all the queued files have finished uploading.
|
||||||
|
Set the event handler with the queue_complete_handler setting.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
var SWFUpload;
|
||||||
|
if (typeof(SWFUpload) === "function") {
|
||||||
|
SWFUpload.queue = {};
|
||||||
|
|
||||||
|
SWFUpload.prototype.initSettings = (function (oldInitSettings) {
|
||||||
|
return function (userSettings) {
|
||||||
|
if (typeof(oldInitSettings) === "function") {
|
||||||
|
oldInitSettings.call(this, userSettings);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.queueSettings = {};
|
||||||
|
|
||||||
|
this.queueSettings.queue_cancelled_flag = false;
|
||||||
|
this.queueSettings.queue_upload_count = 0;
|
||||||
|
|
||||||
|
this.queueSettings.user_upload_complete_handler = this.settings.upload_complete_handler;
|
||||||
|
this.queueSettings.user_upload_start_handler = this.settings.upload_start_handler;
|
||||||
|
this.settings.upload_complete_handler = SWFUpload.queue.uploadCompleteHandler;
|
||||||
|
this.settings.upload_start_handler = SWFUpload.queue.uploadStartHandler;
|
||||||
|
|
||||||
|
this.settings.queue_complete_handler = userSettings.queue_complete_handler || null;
|
||||||
|
};
|
||||||
|
})(SWFUpload.prototype.initSettings);
|
||||||
|
|
||||||
|
SWFUpload.prototype.startUpload = function (fileID) {
|
||||||
|
this.queueSettings.queue_cancelled_flag = false;
|
||||||
|
this.callFlash("StartUpload", [fileID]);
|
||||||
|
};
|
||||||
|
|
||||||
|
SWFUpload.prototype.cancelQueue = function () {
|
||||||
|
this.queueSettings.queue_cancelled_flag = true;
|
||||||
|
this.stopUpload();
|
||||||
|
|
||||||
|
var stats = this.getStats();
|
||||||
|
while (stats.files_queued > 0) {
|
||||||
|
this.cancelUpload();
|
||||||
|
stats = this.getStats();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
SWFUpload.queue.uploadStartHandler = function (file) {
|
||||||
|
var returnValue;
|
||||||
|
if (typeof(this.queueSettings.user_upload_start_handler) === "function") {
|
||||||
|
returnValue = this.queueSettings.user_upload_start_handler.call(this, file);
|
||||||
|
}
|
||||||
|
|
||||||
|
// To prevent upload a real "FALSE" value must be returned, otherwise default to a real "TRUE" value.
|
||||||
|
returnValue = (returnValue === false) ? false : true;
|
||||||
|
|
||||||
|
this.queueSettings.queue_cancelled_flag = !returnValue;
|
||||||
|
|
||||||
|
return returnValue;
|
||||||
|
};
|
||||||
|
|
||||||
|
SWFUpload.queue.uploadCompleteHandler = function (file) {
|
||||||
|
var user_upload_complete_handler = this.queueSettings.user_upload_complete_handler;
|
||||||
|
var continueUpload;
|
||||||
|
|
||||||
|
if (file.filestatus === SWFUpload.FILE_STATUS.COMPLETE) {
|
||||||
|
this.queueSettings.queue_upload_count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(user_upload_complete_handler) === "function") {
|
||||||
|
continueUpload = (user_upload_complete_handler.call(this, file) === false) ? false : true;
|
||||||
|
} else if (file.filestatus === SWFUpload.FILE_STATUS.QUEUED) {
|
||||||
|
// If the file was stopped and re-queued don't restart the upload
|
||||||
|
continueUpload = false;
|
||||||
|
} else {
|
||||||
|
continueUpload = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (continueUpload) {
|
||||||
|
var stats = this.getStats();
|
||||||
|
if (stats.files_queued > 0 && this.queueSettings.queue_cancelled_flag === false) {
|
||||||
|
this.startUpload();
|
||||||
|
} else if (this.queueSettings.queue_cancelled_flag === false) {
|
||||||
|
this.queueEvent("queue_complete_handler", [this.queueSettings.queue_upload_count]);
|
||||||
|
this.queueSettings.queue_upload_count = 0;
|
||||||
|
} else {
|
||||||
|
this.queueSettings.queue_cancelled_flag = false;
|
||||||
|
this.queueSettings.queue_upload_count = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
@ -0,0 +1,346 @@
|
|||||||
|
/*
|
||||||
|
Speed Plug-in
|
||||||
|
|
||||||
|
Features:
|
||||||
|
*Adds several properties to the 'file' object indicated upload speed, time left, upload time, etc.
|
||||||
|
- currentSpeed -- String indicating the upload speed, bits per second
|
||||||
|
- averageSpeed -- Overall average upload speed, bits per second
|
||||||
|
- movingAverageSpeed -- Speed over averaged over the last several measurements, bits per second
|
||||||
|
- timeRemaining -- Estimated remaining upload time in seconds
|
||||||
|
- timeElapsed -- Number of seconds passed for this upload
|
||||||
|
- percentUploaded -- Percentage of the file uploaded (0 to 100)
|
||||||
|
- sizeUploaded -- Formatted size uploaded so far, bytes
|
||||||
|
|
||||||
|
*Adds setting 'moving_average_history_size' for defining the window size used to calculate the moving average speed.
|
||||||
|
|
||||||
|
*Adds several Formatting functions for formatting that values provided on the file object.
|
||||||
|
- SWFUpload.speed.formatBPS(bps) -- outputs string formatted in the best units (Gbps, Mbps, Kbps, bps)
|
||||||
|
- SWFUpload.speed.formatTime(seconds) -- outputs string formatted in the best units (x Hr y M z S)
|
||||||
|
- SWFUpload.speed.formatSize(bytes) -- outputs string formatted in the best units (w GB x MB y KB z B )
|
||||||
|
- SWFUpload.speed.formatPercent(percent) -- outputs string formatted with a percent sign (x.xx %)
|
||||||
|
- SWFUpload.speed.formatUnits(baseNumber, divisionArray, unitLabelArray, fractionalBoolean)
|
||||||
|
- Formats a number using the division array to determine how to apply the labels in the Label Array
|
||||||
|
- factionalBoolean indicates whether the number should be returned as a single fractional number with a unit (speed)
|
||||||
|
or as several numbers labeled with units (time)
|
||||||
|
*/
|
||||||
|
|
||||||
|
var SWFUpload;
|
||||||
|
if (typeof(SWFUpload) === "function") {
|
||||||
|
SWFUpload.speed = {};
|
||||||
|
|
||||||
|
SWFUpload.prototype.initSettings = (function (oldInitSettings) {
|
||||||
|
return function (userSettings) {
|
||||||
|
if (typeof(oldInitSettings) === "function") {
|
||||||
|
oldInitSettings.call(this, userSettings);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.ensureDefault = function (settingName, defaultValue) {
|
||||||
|
this.settings[settingName] = (userSettings[settingName] == undefined) ? defaultValue : userSettings[settingName];
|
||||||
|
};
|
||||||
|
|
||||||
|
// List used to keep the speed stats for the files we are tracking
|
||||||
|
this.fileSpeedStats = {};
|
||||||
|
this.speedSettings = {};
|
||||||
|
|
||||||
|
this.ensureDefault("moving_average_history_size", "10");
|
||||||
|
|
||||||
|
this.speedSettings.user_file_queued_handler = this.settings.file_queued_handler;
|
||||||
|
this.speedSettings.user_file_queue_error_handler = this.settings.file_queue_error_handler;
|
||||||
|
this.speedSettings.user_upload_start_handler = this.settings.upload_start_handler;
|
||||||
|
this.speedSettings.user_upload_error_handler = this.settings.upload_error_handler;
|
||||||
|
this.speedSettings.user_upload_progress_handler = this.settings.upload_progress_handler;
|
||||||
|
this.speedSettings.user_upload_success_handler = this.settings.upload_success_handler;
|
||||||
|
this.speedSettings.user_upload_complete_handler = this.settings.upload_complete_handler;
|
||||||
|
|
||||||
|
this.settings.file_queued_handler = SWFUpload.speed.fileQueuedHandler;
|
||||||
|
this.settings.file_queue_error_handler = SWFUpload.speed.fileQueueErrorHandler;
|
||||||
|
this.settings.upload_start_handler = SWFUpload.speed.uploadStartHandler;
|
||||||
|
this.settings.upload_error_handler = SWFUpload.speed.uploadErrorHandler;
|
||||||
|
this.settings.upload_progress_handler = SWFUpload.speed.uploadProgressHandler;
|
||||||
|
this.settings.upload_success_handler = SWFUpload.speed.uploadSuccessHandler;
|
||||||
|
this.settings.upload_complete_handler = SWFUpload.speed.uploadCompleteHandler;
|
||||||
|
|
||||||
|
delete this.ensureDefault;
|
||||||
|
};
|
||||||
|
})(SWFUpload.prototype.initSettings);
|
||||||
|
|
||||||
|
|
||||||
|
SWFUpload.speed.fileQueuedHandler = function (file) {
|
||||||
|
if (typeof this.speedSettings.user_file_queued_handler === "function") {
|
||||||
|
file = SWFUpload.speed.extendFile(file);
|
||||||
|
|
||||||
|
return this.speedSettings.user_file_queued_handler.call(this, file);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
SWFUpload.speed.fileQueueErrorHandler = function (file, errorCode, message) {
|
||||||
|
if (typeof this.speedSettings.user_file_queue_error_handler === "function") {
|
||||||
|
file = SWFUpload.speed.extendFile(file);
|
||||||
|
|
||||||
|
return this.speedSettings.user_file_queue_error_handler.call(this, file, errorCode, message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
SWFUpload.speed.uploadStartHandler = function (file) {
|
||||||
|
if (typeof this.speedSettings.user_upload_start_handler === "function") {
|
||||||
|
file = SWFUpload.speed.extendFile(file, this.fileSpeedStats);
|
||||||
|
return this.speedSettings.user_upload_start_handler.call(this, file);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
SWFUpload.speed.uploadErrorHandler = function (file, errorCode, message) {
|
||||||
|
file = SWFUpload.speed.extendFile(file, this.fileSpeedStats);
|
||||||
|
SWFUpload.speed.removeTracking(file, this.fileSpeedStats);
|
||||||
|
|
||||||
|
if (typeof this.speedSettings.user_upload_error_handler === "function") {
|
||||||
|
return this.speedSettings.user_upload_error_handler.call(this, file, errorCode, message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
SWFUpload.speed.uploadProgressHandler = function (file, bytesComplete, bytesTotal) {
|
||||||
|
this.updateTracking(file, bytesComplete);
|
||||||
|
file = SWFUpload.speed.extendFile(file, this.fileSpeedStats);
|
||||||
|
|
||||||
|
if (typeof this.speedSettings.user_upload_progress_handler === "function") {
|
||||||
|
return this.speedSettings.user_upload_progress_handler.call(this, file, bytesComplete, bytesTotal);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
SWFUpload.speed.uploadSuccessHandler = function (file, serverData) {
|
||||||
|
if (typeof this.speedSettings.user_upload_success_handler === "function") {
|
||||||
|
file = SWFUpload.speed.extendFile(file, this.fileSpeedStats);
|
||||||
|
return this.speedSettings.user_upload_success_handler.call(this, file, serverData);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
SWFUpload.speed.uploadCompleteHandler = function (file) {
|
||||||
|
file = SWFUpload.speed.extendFile(file, this.fileSpeedStats);
|
||||||
|
SWFUpload.speed.removeTracking(file, this.fileSpeedStats);
|
||||||
|
|
||||||
|
if (typeof this.speedSettings.user_upload_complete_handler === "function") {
|
||||||
|
return this.speedSettings.user_upload_complete_handler.call(this, file);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Private: extends the file object with the speed plugin values
|
||||||
|
SWFUpload.speed.extendFile = function (file, trackingList) {
|
||||||
|
var tracking;
|
||||||
|
|
||||||
|
if (!file) {
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (trackingList) {
|
||||||
|
tracking = trackingList[file.id];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tracking) {
|
||||||
|
file.currentSpeed = tracking.currentSpeed;
|
||||||
|
file.averageSpeed = tracking.averageSpeed;
|
||||||
|
file.movingAverageSpeed = tracking.movingAverageSpeed;
|
||||||
|
file.timeRemaining = tracking.timeRemaining;
|
||||||
|
file.timeElapsed = tracking.timeElapsed;
|
||||||
|
file.percentUploaded = tracking.percentUploaded;
|
||||||
|
file.sizeUploaded = tracking.bytesUploaded;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
file.currentSpeed = 0;
|
||||||
|
file.averageSpeed = 0;
|
||||||
|
file.movingAverageSpeed = 0;
|
||||||
|
file.timeRemaining = 0;
|
||||||
|
file.timeElapsed = 0;
|
||||||
|
file.percentUploaded = 0;
|
||||||
|
file.sizeUploaded = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return file;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Private: Updates the speed tracking object, or creates it if necessary
|
||||||
|
SWFUpload.prototype.updateTracking = function (file, bytesUploaded) {
|
||||||
|
var tracking = this.fileSpeedStats[file.id];
|
||||||
|
if (!tracking) {
|
||||||
|
this.fileSpeedStats[file.id] = tracking = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sanity check inputs
|
||||||
|
bytesUploaded = bytesUploaded || tracking.bytesUploaded || 0;
|
||||||
|
if (bytesUploaded < 0) {
|
||||||
|
bytesUploaded = 0;
|
||||||
|
}
|
||||||
|
if (bytesUploaded > file.size) {
|
||||||
|
bytesUploaded = file.size;
|
||||||
|
}
|
||||||
|
|
||||||
|
var tickTime = (new Date()).getTime();
|
||||||
|
if (!tracking.startTime) {
|
||||||
|
tracking.startTime = (new Date()).getTime();
|
||||||
|
tracking.lastTime = tracking.startTime;
|
||||||
|
tracking.currentSpeed = 0;
|
||||||
|
tracking.averageSpeed = 0;
|
||||||
|
tracking.movingAverageSpeed = 0;
|
||||||
|
tracking.movingAverageHistory = [];
|
||||||
|
tracking.timeRemaining = 0;
|
||||||
|
tracking.timeElapsed = 0;
|
||||||
|
tracking.percentUploaded = bytesUploaded / file.size;
|
||||||
|
tracking.bytesUploaded = bytesUploaded;
|
||||||
|
} else if (tracking.startTime > tickTime) {
|
||||||
|
this.debug("When backwards in time");
|
||||||
|
} else {
|
||||||
|
// Get time and deltas
|
||||||
|
var now = (new Date()).getTime();
|
||||||
|
var lastTime = tracking.lastTime;
|
||||||
|
var deltaTime = now - lastTime;
|
||||||
|
var deltaBytes = bytesUploaded - tracking.bytesUploaded;
|
||||||
|
|
||||||
|
if (deltaBytes === 0 || deltaTime === 0) {
|
||||||
|
return tracking;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update tracking object
|
||||||
|
tracking.lastTime = now;
|
||||||
|
tracking.bytesUploaded = bytesUploaded;
|
||||||
|
|
||||||
|
// Calculate speeds
|
||||||
|
tracking.currentSpeed = (deltaBytes * 8 ) / (deltaTime / 1000);
|
||||||
|
tracking.averageSpeed = (tracking.bytesUploaded * 8) / ((now - tracking.startTime) / 1000);
|
||||||
|
|
||||||
|
// Calculate moving average
|
||||||
|
tracking.movingAverageHistory.push(tracking.currentSpeed);
|
||||||
|
if (tracking.movingAverageHistory.length > this.settings.moving_average_history_size) {
|
||||||
|
tracking.movingAverageHistory.shift();
|
||||||
|
}
|
||||||
|
|
||||||
|
tracking.movingAverageSpeed = SWFUpload.speed.calculateMovingAverage(tracking.movingAverageHistory);
|
||||||
|
|
||||||
|
// Update times
|
||||||
|
tracking.timeRemaining = (file.size - tracking.bytesUploaded) * 8 / tracking.movingAverageSpeed;
|
||||||
|
tracking.timeElapsed = (now - tracking.startTime) / 1000;
|
||||||
|
|
||||||
|
// Update percent
|
||||||
|
tracking.percentUploaded = (tracking.bytesUploaded / file.size * 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
return tracking;
|
||||||
|
};
|
||||||
|
SWFUpload.speed.removeTracking = function (file, trackingList) {
|
||||||
|
try {
|
||||||
|
trackingList[file.id] = null;
|
||||||
|
delete trackingList[file.id];
|
||||||
|
} catch (ex) {
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
SWFUpload.speed.formatUnits = function (baseNumber, unitDivisors, unitLabels, singleFractional) {
|
||||||
|
var i, unit, unitDivisor, unitLabel;
|
||||||
|
|
||||||
|
if (baseNumber === 0) {
|
||||||
|
return "0 " + unitLabels[unitLabels.length - 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (singleFractional) {
|
||||||
|
unit = baseNumber;
|
||||||
|
unitLabel = unitLabels.length >= unitDivisors.length ? unitLabels[unitDivisors.length - 1] : "";
|
||||||
|
for (i = 0; i < unitDivisors.length; i++) {
|
||||||
|
if (baseNumber >= unitDivisors[i]) {
|
||||||
|
unit = (baseNumber / unitDivisors[i]).toFixed(2);
|
||||||
|
unitLabel = unitLabels.length >= i ? " " + unitLabels[i] : "";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return unit + unitLabel;
|
||||||
|
} else {
|
||||||
|
var formattedStrings = [];
|
||||||
|
var remainder = baseNumber;
|
||||||
|
|
||||||
|
for (i = 0; i < unitDivisors.length; i++) {
|
||||||
|
unitDivisor = unitDivisors[i];
|
||||||
|
unitLabel = unitLabels.length > i ? " " + unitLabels[i] : "";
|
||||||
|
|
||||||
|
unit = remainder / unitDivisor;
|
||||||
|
if (i < unitDivisors.length -1) {
|
||||||
|
unit = Math.floor(unit);
|
||||||
|
} else {
|
||||||
|
unit = unit.toFixed(2);
|
||||||
|
}
|
||||||
|
if (unit > 0) {
|
||||||
|
remainder = remainder % unitDivisor;
|
||||||
|
|
||||||
|
formattedStrings.push(unit + unitLabel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return formattedStrings.join(" ");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
SWFUpload.speed.formatBPS = function (baseNumber) {
|
||||||
|
var bpsUnits = [1073741824, 1048576, 1024, 1], bpsUnitLabels = ["Gbps", "Mbps", "Kbps", "bps"];
|
||||||
|
return SWFUpload.speed.formatUnits(baseNumber, bpsUnits, bpsUnitLabels, true);
|
||||||
|
|
||||||
|
};
|
||||||
|
SWFUpload.speed.formatTime = function (baseNumber) {
|
||||||
|
var timeUnits = [86400, 3600, 60, 1], timeUnitLabels = ["d", "h", "m", "s"];
|
||||||
|
return SWFUpload.speed.formatUnits(baseNumber, timeUnits, timeUnitLabels, false);
|
||||||
|
|
||||||
|
};
|
||||||
|
SWFUpload.speed.formatBytes = function (baseNumber) {
|
||||||
|
var sizeUnits = [1073741824, 1048576, 1024, 1], sizeUnitLabels = ["GB", "MB", "KB", "bytes"];
|
||||||
|
return SWFUpload.speed.formatUnits(baseNumber, sizeUnits, sizeUnitLabels, true);
|
||||||
|
|
||||||
|
};
|
||||||
|
SWFUpload.speed.formatPercent = function (baseNumber) {
|
||||||
|
return baseNumber.toFixed(2) + "%";
|
||||||
|
};
|
||||||
|
|
||||||
|
SWFUpload.speed.calculateMovingAverage = function (history) {
|
||||||
|
var vals = [], size, sum = 0.0, mean = 0.0, varianceTemp = 0.0, variance = 0.0, standardDev = 0.0;
|
||||||
|
var i;
|
||||||
|
var mSum = 0, mCount = 0;
|
||||||
|
|
||||||
|
size = history.length;
|
||||||
|
|
||||||
|
// Check for sufficient data
|
||||||
|
if (size >= 8) {
|
||||||
|
// Clone the array and Calculate sum of the values
|
||||||
|
for (i = 0; i < size; i++) {
|
||||||
|
vals[i] = history[i];
|
||||||
|
sum += vals[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
mean = sum / size;
|
||||||
|
|
||||||
|
// Calculate variance for the set
|
||||||
|
for (i = 0; i < size; i++) {
|
||||||
|
varianceTemp += Math.pow((vals[i] - mean), 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
variance = varianceTemp / size;
|
||||||
|
standardDev = Math.sqrt(variance);
|
||||||
|
|
||||||
|
//Standardize the Data
|
||||||
|
for (i = 0; i < size; i++) {
|
||||||
|
vals[i] = (vals[i] - mean) / standardDev;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate the average excluding outliers
|
||||||
|
var deviationRange = 2.0;
|
||||||
|
for (i = 0; i < size; i++) {
|
||||||
|
|
||||||
|
if (vals[i] <= deviationRange && vals[i] >= -deviationRange) {
|
||||||
|
mCount++;
|
||||||
|
mSum += history[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// Calculate the average (not enough data points to remove outliers)
|
||||||
|
mCount = size;
|
||||||
|
for (i = 0; i < size; i++) {
|
||||||
|
mSum += history[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return mSum / mCount;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
After Width: | Height: | Size: 8.3 KiB |
@ -0,0 +1,271 @@
|
|||||||
|
<%
|
||||||
|
'Februari 2014 - Version 1.17 by Gerrit van Kuipers
|
||||||
|
Class AspJSON
|
||||||
|
Public data
|
||||||
|
Private p_JSONstring
|
||||||
|
private aj_in_string, aj_in_escape, aj_i_tmp, aj_char_tmp, aj_s_tmp, aj_line_tmp, aj_line, aj_lines, aj_currentlevel, aj_currentkey, aj_currentvalue, aj_newlabel, aj_XmlHttp, aj_RegExp, aj_colonfound
|
||||||
|
|
||||||
|
Private Sub Class_Initialize()
|
||||||
|
Set data = Collection()
|
||||||
|
|
||||||
|
Set aj_RegExp = new regexp
|
||||||
|
aj_RegExp.Pattern = "\s{0,}(\S{1}[\s,\S]*\S{1})\s{0,}"
|
||||||
|
aj_RegExp.Global = False
|
||||||
|
aj_RegExp.IgnoreCase = True
|
||||||
|
aj_RegExp.Multiline = True
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub Class_Terminate()
|
||||||
|
Set data = Nothing
|
||||||
|
Set aj_RegExp = Nothing
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub loadJSON(inputsource)
|
||||||
|
inputsource = aj_MultilineTrim(inputsource)
|
||||||
|
If Len(inputsource) = 0 Then Err.Raise 1, "loadJSON Error", "No data to load."
|
||||||
|
|
||||||
|
select case Left(inputsource, 1)
|
||||||
|
case "{", "["
|
||||||
|
case else
|
||||||
|
Set aj_XmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP")
|
||||||
|
aj_XmlHttp.open "GET", inputsource, False
|
||||||
|
aj_XmlHttp.setRequestHeader "Content-Type", "text/json"
|
||||||
|
aj_XmlHttp.setRequestHeader "CharSet", "UTF-8"
|
||||||
|
aj_XmlHttp.Send
|
||||||
|
inputsource = aj_XmlHttp.responseText
|
||||||
|
set aj_XmlHttp = Nothing
|
||||||
|
end select
|
||||||
|
|
||||||
|
p_JSONstring = CleanUpJSONstring(inputsource)
|
||||||
|
aj_lines = Split(p_JSONstring, Chr(13) & Chr(10))
|
||||||
|
|
||||||
|
Dim level(99)
|
||||||
|
aj_currentlevel = 1
|
||||||
|
Set level(aj_currentlevel) = data
|
||||||
|
For Each aj_line In aj_lines
|
||||||
|
aj_currentkey = ""
|
||||||
|
aj_currentvalue = ""
|
||||||
|
If Instr(aj_line, ":") > 0 Then
|
||||||
|
aj_in_string = False
|
||||||
|
aj_in_escape = False
|
||||||
|
aj_colonfound = False
|
||||||
|
For aj_i_tmp = 1 To Len(aj_line)
|
||||||
|
If aj_in_escape Then
|
||||||
|
aj_in_escape = False
|
||||||
|
Else
|
||||||
|
Select Case Mid(aj_line, aj_i_tmp, 1)
|
||||||
|
Case """"
|
||||||
|
aj_in_string = Not aj_in_string
|
||||||
|
Case ":"
|
||||||
|
If Not aj_in_escape And Not aj_in_string Then
|
||||||
|
aj_currentkey = Left(aj_line, aj_i_tmp - 1)
|
||||||
|
aj_currentvalue = Mid(aj_line, aj_i_tmp + 1)
|
||||||
|
aj_colonfound = True
|
||||||
|
Exit For
|
||||||
|
End If
|
||||||
|
Case "\"
|
||||||
|
aj_in_escape = True
|
||||||
|
End Select
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
if aj_colonfound then
|
||||||
|
aj_currentkey = aj_Strip(aj_JSONDecode(aj_currentkey), """")
|
||||||
|
If Not level(aj_currentlevel).exists(aj_currentkey) Then level(aj_currentlevel).Add aj_currentkey, ""
|
||||||
|
end if
|
||||||
|
End If
|
||||||
|
If right(aj_line,1) = "{" Or right(aj_line,1) = "[" Then
|
||||||
|
If Len(aj_currentkey) = 0 Then aj_currentkey = level(aj_currentlevel).Count
|
||||||
|
Set level(aj_currentlevel).Item(aj_currentkey) = Collection()
|
||||||
|
Set level(aj_currentlevel + 1) = level(aj_currentlevel).Item(aj_currentkey)
|
||||||
|
aj_currentlevel = aj_currentlevel + 1
|
||||||
|
aj_currentkey = ""
|
||||||
|
ElseIf right(aj_line,1) = "}" Or right(aj_line,1) = "]" or right(aj_line,2) = "}," Or right(aj_line,2) = "]," Then
|
||||||
|
aj_currentlevel = aj_currentlevel - 1
|
||||||
|
ElseIf Len(Trim(aj_line)) > 0 Then
|
||||||
|
if Len(aj_currentvalue) = 0 Then aj_currentvalue = aj_line
|
||||||
|
aj_currentvalue = getJSONValue(aj_currentvalue)
|
||||||
|
|
||||||
|
If Len(aj_currentkey) = 0 Then aj_currentkey = level(aj_currentlevel).Count
|
||||||
|
level(aj_currentlevel).Item(aj_currentkey) = aj_currentvalue
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Function Collection()
|
||||||
|
set Collection = Server.CreateObject("Scripting.Dictionary")
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function AddToCollection(dictobj)
|
||||||
|
if TypeName(dictobj) <> "Dictionary" then Err.Raise 1, "AddToCollection Error", "Not a collection."
|
||||||
|
aj_newlabel = dictobj.Count
|
||||||
|
dictobj.Add aj_newlabel, Collection()
|
||||||
|
set AddToCollection = dictobj.item(aj_newlabel)
|
||||||
|
end function
|
||||||
|
|
||||||
|
Private Function CleanUpJSONstring(aj_originalstring)
|
||||||
|
aj_originalstring = Replace(aj_originalstring, Chr(13) & Chr(10), "")
|
||||||
|
aj_originalstring = Mid(aj_originalstring, 2, Len(aj_originalstring) - 2)
|
||||||
|
aj_in_string = False : aj_in_escape = False : aj_s_tmp = ""
|
||||||
|
For aj_i_tmp = 1 To Len(aj_originalstring)
|
||||||
|
aj_char_tmp = Mid(aj_originalstring, aj_i_tmp, 1)
|
||||||
|
If aj_in_escape Then
|
||||||
|
aj_in_escape = False
|
||||||
|
aj_s_tmp = aj_s_tmp & aj_char_tmp
|
||||||
|
Else
|
||||||
|
Select Case aj_char_tmp
|
||||||
|
Case "\" : aj_s_tmp = aj_s_tmp & aj_char_tmp : aj_in_escape = True
|
||||||
|
Case """" : aj_s_tmp = aj_s_tmp & aj_char_tmp : aj_in_string = Not aj_in_string
|
||||||
|
Case "{", "["
|
||||||
|
aj_s_tmp = aj_s_tmp & aj_char_tmp & aj_InlineIf(aj_in_string, "", Chr(13) & Chr(10))
|
||||||
|
Case "}", "]"
|
||||||
|
aj_s_tmp = aj_s_tmp & aj_InlineIf(aj_in_string, "", Chr(13) & Chr(10)) & aj_char_tmp
|
||||||
|
Case "," : aj_s_tmp = aj_s_tmp & aj_char_tmp & aj_InlineIf(aj_in_string, "", Chr(13) & Chr(10))
|
||||||
|
Case Else : aj_s_tmp = aj_s_tmp & aj_char_tmp
|
||||||
|
End Select
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
CleanUpJSONstring = ""
|
||||||
|
aj_s_tmp = split(aj_s_tmp, Chr(13) & Chr(10))
|
||||||
|
For Each aj_line_tmp In aj_s_tmp
|
||||||
|
aj_line_tmp = replace(replace(aj_line_tmp, chr(10), ""), chr(13), "")
|
||||||
|
CleanUpJSONstring = CleanUpJSONstring & aj_Trim(aj_line_tmp) & Chr(13) & Chr(10)
|
||||||
|
Next
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function getJSONValue(ByVal val)
|
||||||
|
val = Trim(val)
|
||||||
|
If Left(val,1) = ":" Then val = Mid(val, 2)
|
||||||
|
If Right(val,1) = "," Then val = Left(val, Len(val) - 1)
|
||||||
|
val = Trim(val)
|
||||||
|
|
||||||
|
Select Case val
|
||||||
|
Case "true" : getJSONValue = True
|
||||||
|
Case "false" : getJSONValue = False
|
||||||
|
Case "null" : getJSONValue = Null
|
||||||
|
Case Else
|
||||||
|
If (Instr(val, """") = 0) Then
|
||||||
|
If IsNumeric(val) Then
|
||||||
|
getJSONValue = CDbl(val)
|
||||||
|
Else
|
||||||
|
getJSONValue = val
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
If Left(val,1) = """" Then val = Mid(val, 2)
|
||||||
|
If Right(val,1) = """" Then val = Left(val, Len(val) - 1)
|
||||||
|
getJSONValue = aj_JSONDecode(Trim(val))
|
||||||
|
End If
|
||||||
|
End Select
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private JSONoutput_level
|
||||||
|
Public Function JSONoutput()
|
||||||
|
dim wrap_dicttype, aj_label
|
||||||
|
JSONoutput_level = 1
|
||||||
|
wrap_dicttype = "[]"
|
||||||
|
For Each aj_label In data
|
||||||
|
If Not aj_IsInt(aj_label) Then wrap_dicttype = "{}"
|
||||||
|
Next
|
||||||
|
JSONoutput = Left(wrap_dicttype, 1) & Chr(13) & Chr(10) & GetDict(data) & Right(wrap_dicttype, 1)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function PrintJson
|
||||||
|
Response.AddHeader "Content-Type", "text/plain"
|
||||||
|
If IsEmpty(Request.QueryString("callback")) Then
|
||||||
|
Response.Write JSONoutput()
|
||||||
|
Else
|
||||||
|
Response.Write Request.QueryString("callback") & "(" & JSONoutput() & ")"
|
||||||
|
End If
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function GetDict(objDict)
|
||||||
|
dim aj_item, aj_keyvals, aj_label, aj_dicttype
|
||||||
|
For Each aj_item In objDict
|
||||||
|
Select Case TypeName(objDict.Item(aj_item))
|
||||||
|
Case "Dictionary"
|
||||||
|
GetDict = GetDict & Space(JSONoutput_level * 4)
|
||||||
|
|
||||||
|
aj_dicttype = "[]"
|
||||||
|
For Each aj_label In objDict.Item(aj_item).Keys
|
||||||
|
If Not aj_IsInt(aj_label) Then aj_dicttype = "{}"
|
||||||
|
Next
|
||||||
|
If aj_IsInt(aj_item) Then
|
||||||
|
GetDict = GetDict & (Left(aj_dicttype,1) & Chr(13) & Chr(10))
|
||||||
|
Else
|
||||||
|
GetDict = GetDict & ("""" & aj_JSONEncode(aj_item) & """" & ": " & Left(aj_dicttype,1) & Chr(13) & Chr(10))
|
||||||
|
End If
|
||||||
|
JSONoutput_level = JSONoutput_level + 1
|
||||||
|
|
||||||
|
aj_keyvals = objDict.Keys
|
||||||
|
GetDict = GetDict & (GetSubDict(objDict.Item(aj_item)) & Space(JSONoutput_level * 4) & Right(aj_dicttype,1) & aj_InlineIf(aj_item = aj_keyvals(objDict.Count - 1),"" , ",") & Chr(13) & Chr(10))
|
||||||
|
Case Else
|
||||||
|
aj_keyvals = objDict.Keys
|
||||||
|
GetDict = GetDict & (Space(JSONoutput_level * 4) & aj_InlineIf(aj_IsInt(aj_item), "", """" & aj_JSONEncode(aj_item) & """: ") & WriteValue(objDict.Item(aj_item)) & aj_InlineIf(aj_item = aj_keyvals(objDict.Count - 1),"" , ",") & Chr(13) & Chr(10))
|
||||||
|
End Select
|
||||||
|
Next
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function aj_IsInt(val)
|
||||||
|
aj_IsInt = (TypeName(val) = "Integer" Or TypeName(val) = "Long")
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function GetSubDict(objSubDict)
|
||||||
|
GetSubDict = GetDict(objSubDict)
|
||||||
|
JSONoutput_level= JSONoutput_level -1
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function WriteValue(ByVal val)
|
||||||
|
Select Case TypeName(val)
|
||||||
|
Case "Double", "Integer", "Long": WriteValue = val
|
||||||
|
Case "Null" : WriteValue = "null"
|
||||||
|
Case "Boolean" : WriteValue = aj_InlineIf(val, "true", "false")
|
||||||
|
Case Else : WriteValue = """" & aj_JSONEncode(val) & """"
|
||||||
|
End Select
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function aj_JSONEncode(ByVal val)
|
||||||
|
val = Replace(val, "\", "\\")
|
||||||
|
val = Replace(val, """", "\""")
|
||||||
|
'val = Replace(val, "/", "\/")
|
||||||
|
val = Replace(val, Chr(8), "\b")
|
||||||
|
val = Replace(val, Chr(12), "\f")
|
||||||
|
val = Replace(val, Chr(10), "\n")
|
||||||
|
val = Replace(val, Chr(13), "\r")
|
||||||
|
val = Replace(val, Chr(9), "\t")
|
||||||
|
aj_JSONEncode = Trim(val)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function aj_JSONDecode(ByVal val)
|
||||||
|
val = Replace(val, "\""", """")
|
||||||
|
val = Replace(val, "\\", "\")
|
||||||
|
val = Replace(val, "\/", "/")
|
||||||
|
val = Replace(val, "\b", Chr(8))
|
||||||
|
val = Replace(val, "\f", Chr(12))
|
||||||
|
val = Replace(val, "\n", Chr(10))
|
||||||
|
val = Replace(val, "\r", Chr(13))
|
||||||
|
val = Replace(val, "\t", Chr(9))
|
||||||
|
aj_JSONDecode = Trim(val)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function aj_InlineIf(condition, returntrue, returnfalse)
|
||||||
|
If condition Then aj_InlineIf = returntrue Else aj_InlineIf = returnfalse
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function aj_Strip(ByVal val, stripper)
|
||||||
|
If Left(val, 1) = stripper Then val = Mid(val, 2)
|
||||||
|
If Right(val, 1) = stripper Then val = Left(val, Len(val) - 1)
|
||||||
|
aj_Strip = val
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function aj_MultilineTrim(TextData)
|
||||||
|
aj_MultilineTrim = aj_RegExp.Replace(TextData, "$1")
|
||||||
|
End Function
|
||||||
|
|
||||||
|
private function aj_Trim(val)
|
||||||
|
aj_Trim = Trim(val)
|
||||||
|
Do While Left(aj_Trim, 1) = Chr(9) : aj_Trim = Mid(aj_Trim, 2) : Loop
|
||||||
|
Do While Right(aj_Trim, 1) = Chr(9) : aj_Trim = Left(aj_Trim, Len(aj_Trim) - 1) : Loop
|
||||||
|
aj_Trim = Trim(aj_Trim)
|
||||||
|
end function
|
||||||
|
End Class
|
||||||
|
%>
|
@ -0,0 +1,138 @@
|
|||||||
|
<%
|
||||||
|
' Power by Techird
|
||||||
|
' Processor Usage:
|
||||||
|
' Set p = new MultiformProcessor
|
||||||
|
' Set formValues = p.Process()
|
||||||
|
' filename = formValues.Item("filename")
|
||||||
|
' Set stream = formValues.Item("file1") // the name of the file input
|
||||||
|
' stream.SaveToFile "upload/" & filename
|
||||||
|
' stream.Close
|
||||||
|
Class MultiformProcessor
|
||||||
|
Private adTypeBinary
|
||||||
|
Private adTypeText
|
||||||
|
Private adModeReadWrite
|
||||||
|
Private binCtLf
|
||||||
|
Private binCtLf2
|
||||||
|
|
||||||
|
|
||||||
|
private Sub Class_Initialize()
|
||||||
|
adTypeBinary = 1
|
||||||
|
adTypeText = 2
|
||||||
|
adModeReadWrite = 3
|
||||||
|
binCtLf = ChrB(13) & ChrB(10)
|
||||||
|
binCtLf2 = binCtLf & binCtLf
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Function OpenStream( optype )
|
||||||
|
Set stream = Server.CreateObject("ADODB.Stream")
|
||||||
|
stream.Type = optype
|
||||||
|
stream.Mode = adModeReadWrite
|
||||||
|
stream.Open
|
||||||
|
Set OpenStream = stream
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function CopyStreamPart( stream, pBgn, pEnd )
|
||||||
|
Dim iStream, oStream
|
||||||
|
Set iStream = stream
|
||||||
|
Set oStream = OpenStream( adTypeBinary )
|
||||||
|
iStream.Position = pBgn
|
||||||
|
iStream.CopyTo oStream, pEnd - pBgn
|
||||||
|
Set CopyStreamPart = oStream
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function GetString( stream, pBgn, pEnd )
|
||||||
|
Dim iStream, oStream
|
||||||
|
Set iStream = stream
|
||||||
|
Set oStream = OpenStream( adTypeBinary )
|
||||||
|
iStream.Position = pBgn
|
||||||
|
iStream.CopyTo oStream, pEnd - pBgn
|
||||||
|
oStream.Position = 0
|
||||||
|
oStream.Type = adTypeText
|
||||||
|
oStream.Charset = GetCharset
|
||||||
|
GetString = oStream.ReadText
|
||||||
|
oStream.Close
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function GetCharset()
|
||||||
|
If Charset = "" Then
|
||||||
|
GetCharset = "utf-8"
|
||||||
|
Else
|
||||||
|
GetCharset = Charset
|
||||||
|
End If
|
||||||
|
End Function
|
||||||
|
|
||||||
|
'See RFC 2388
|
||||||
|
'http://www.ietf.org/rfc/rfc2388.txt
|
||||||
|
public Function Process()
|
||||||
|
Dim formBytes, bLen, pBgn, pEnd, header, stream
|
||||||
|
Dim varPtn, filePtn, formValues, key, field
|
||||||
|
|
||||||
|
formBytes = Request.BinaryRead( Request.TotalBytes )
|
||||||
|
|
||||||
|
Set stream = OpenStream( adTypeBinary )
|
||||||
|
stream.Write formBytes
|
||||||
|
|
||||||
|
Set varPtn = new RegExp
|
||||||
|
varPtn.Pattern = "(\w+?)=""(.+?)"""
|
||||||
|
varPtn.Global = True
|
||||||
|
|
||||||
|
Set filePtn = new RegExp
|
||||||
|
filePtn.Pattern = "filename="
|
||||||
|
|
||||||
|
Set formValues = Server.CreateObject("Scripting.Dictionary")
|
||||||
|
|
||||||
|
'Find boundary
|
||||||
|
bLen = InStrB( 1, formBytes, binCtLf ) - 1
|
||||||
|
boundary = LeftB( formBytes, bLen )
|
||||||
|
|
||||||
|
'Init begin pointer to byte start
|
||||||
|
pBgn = 1
|
||||||
|
|
||||||
|
Do
|
||||||
|
'Find begin pointer and end pointer for block header
|
||||||
|
pBgn = pBgn + bLen + LenB( binCtLf ) - 1
|
||||||
|
pEnd = InStrB( pBgn, formBytes, binCtLf2 )
|
||||||
|
|
||||||
|
'If next block not found, means all blocks processed
|
||||||
|
If pEnd = 0 Then
|
||||||
|
Exit Do 'Load Finished
|
||||||
|
End If
|
||||||
|
|
||||||
|
'Decode the headerf
|
||||||
|
header = GetString( stream, pBgn, pEnd )
|
||||||
|
|
||||||
|
'Test if the block is a file block
|
||||||
|
isFileBlock = filePtn.Test( header )
|
||||||
|
|
||||||
|
'Find begin pointer and end pointer for block content
|
||||||
|
pBgn = pEnd + LenB(binCtLf2) - 1
|
||||||
|
pEnd = InStrB(pBgn, formBytes, boundary) - LenB( binCtLf ) - 1
|
||||||
|
|
||||||
|
'Extract field values from header, which like key = "filed"
|
||||||
|
Set matches = varPtn.Execute( header )
|
||||||
|
For Each match In matches
|
||||||
|
key = match.SubMatches(0)
|
||||||
|
field = match.SubMatches(1)
|
||||||
|
'filename as a field
|
||||||
|
If key = "filename" Then
|
||||||
|
formValues.Add key, field
|
||||||
|
'name specified fields
|
||||||
|
ElseIf key = "name" Then
|
||||||
|
If isFileBlock Then
|
||||||
|
'Resolve content as stream for fileblock
|
||||||
|
formValues.Add field, CopyStreamPart(stream, pBgn, pEnd)
|
||||||
|
Else
|
||||||
|
'Resolve content as string for non-fileblock
|
||||||
|
formValues.Add field, GetString(stream, pBgn, pEnd)
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
'Move over the begin pointer to next block
|
||||||
|
pBgn = pEnd + LenB( binCtLf ) + 1
|
||||||
|
Loop
|
||||||
|
stream.Close
|
||||||
|
Set Process = formValues
|
||||||
|
End Function
|
||||||
|
End Class
|
||||||
|
%>
|
@ -0,0 +1,81 @@
|
|||||||
|
<%
|
||||||
|
|
||||||
|
Class PathFormatter
|
||||||
|
Public Function Format( ByVal pathFormat, ByVal filename )
|
||||||
|
Dim ext, name
|
||||||
|
If IsEmpty( format ) Then
|
||||||
|
format = "{yyyy}{mm}{dd}{hh}{ii}{ss}{rand:6}"
|
||||||
|
End If
|
||||||
|
|
||||||
|
Set invalidPattern = new RegExp
|
||||||
|
invalidPattern.Pattern = "[\\\/\:\*\?\<\>\|""]"
|
||||||
|
invalidPattern.Global = true
|
||||||
|
filename = invalidPattern.Replace( filename, "" )
|
||||||
|
|
||||||
|
ext = GetExt( filename )
|
||||||
|
name = GetNameWithoutExt( filename )
|
||||||
|
|
||||||
|
pathFormat = Replace( pathFormat, "{filename}", name )
|
||||||
|
pathFormat = Replace( pathFormat, "{time}", TimeStamp() )
|
||||||
|
pathFormat = Replace( pathFormat, "{yyyy}", Year(Now) )
|
||||||
|
pathFormat = Replace( pathFormat, "{yy}", Year(Now) Mod 100 )
|
||||||
|
pathFormat = Replace( pathFormat, "{mm}", LeadZero( Month(Now) ) )
|
||||||
|
pathFormat = Replace( pathFormat, "{dd}", LeadZero( Day(Now) ) )
|
||||||
|
pathFormat = Replace( pathFormat, "{hh}", LeadZero( Hour(Now) ) )
|
||||||
|
pathFormat = Replace( pathFormat, "{ii}", LeadZero( Minute(Now) ) )
|
||||||
|
pathFormat = Replace( pathFormat, "{ss}", LeadZero( Second(Now) ) )
|
||||||
|
|
||||||
|
Set randPattern = new RegExp
|
||||||
|
randPattern.Pattern = "{rand(\:?)(\d+)}"
|
||||||
|
Set matches = randPattern.Execute(pathFormat)
|
||||||
|
If matches.Count Then
|
||||||
|
Set match = matches(0)
|
||||||
|
digit = 6
|
||||||
|
If match.SubMatches.Count > 1 Then
|
||||||
|
digit = 0 + match.SubMatches(1)
|
||||||
|
End If
|
||||||
|
min = 1
|
||||||
|
Do While digit > 0
|
||||||
|
min = min * 10
|
||||||
|
digit = digit - 1
|
||||||
|
Loop
|
||||||
|
max = min * 10
|
||||||
|
pathFormat = randPattern.Replace( pathFormat, Rand( min, max ) )
|
||||||
|
End If
|
||||||
|
Format = pathFormat + ext
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function GetExt( file )
|
||||||
|
GetExt = Right( file, Len(file) - InStrRev(file, ".") + 1 )
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function GetNameWithoutExt( file )
|
||||||
|
GetNameWithoutExt = Left( file, InStrRev(file, ".") - 1 )
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function TimeStamp()
|
||||||
|
TimeStamp = DateDiff("s", "1970-1-1 8:00:00", Now())
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function Rand( min, max )
|
||||||
|
Randomize
|
||||||
|
Rand = Int( (max - min + 1) * Rnd + min )
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function GetFormatedDate()
|
||||||
|
Dim yyyy, mm, dd
|
||||||
|
yyyy = Year(Date)
|
||||||
|
mm = LeadZero(Month(Date))
|
||||||
|
dd = LeadZero(Day(Date))
|
||||||
|
GetFormatedDate = yyyy & mm & dd
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function LeadZero( number )
|
||||||
|
If number < 10 Then
|
||||||
|
LeadZero = "0" & number
|
||||||
|
Else
|
||||||
|
LeadZero = number
|
||||||
|
End If
|
||||||
|
End Function
|
||||||
|
End Class
|
||||||
|
%>
|
@ -0,0 +1,9 @@
|
|||||||
|
<!--#include file="ASPJson.class.asp"-->
|
||||||
|
<!--#include file="config_loader.asp"-->
|
||||||
|
|
||||||
|
<%
|
||||||
|
Set json = new ASPJson
|
||||||
|
Set json.data = config
|
||||||
|
|
||||||
|
json.PrintJson()
|
||||||
|
%>
|
@ -0,0 +1,32 @@
|
|||||||
|
<!--#include file="ASPJson.class.asp"-->
|
||||||
|
<!--#include file="config_loader.asp"-->
|
||||||
|
<!--#include file="Uploader.class.asp"-->
|
||||||
|
<%
|
||||||
|
|
||||||
|
Set up = new Uploader
|
||||||
|
up.MaxSize = config.Item("catcherMaxSize")
|
||||||
|
up.AllowType = config.Item("catcherAllowFiles")
|
||||||
|
up.PathFormat = config.Item("catcherPathFormat")
|
||||||
|
|
||||||
|
urls = Split(Request.Item("source[]"), ", ")
|
||||||
|
Set list = new ASPJson.Collection
|
||||||
|
|
||||||
|
For i = 0 To UBound(urls)
|
||||||
|
up.UploadRemote( urls(i) )
|
||||||
|
Dim instance
|
||||||
|
Set instance = new ASPJson.Collection
|
||||||
|
instance.Add "state", up.State
|
||||||
|
instance.Add "url", up.FilePath
|
||||||
|
instance.Add "source", urls(i)
|
||||||
|
list.Add i, instance
|
||||||
|
Next
|
||||||
|
|
||||||
|
Set json = new ASPJson
|
||||||
|
|
||||||
|
With json.data
|
||||||
|
.Add "state", "SUCCESS"
|
||||||
|
.Add "list", list
|
||||||
|
End With
|
||||||
|
|
||||||
|
json.PrintJson()
|
||||||
|
%>
|
@ -0,0 +1,81 @@
|
|||||||
|
<!--#include file="ASPJson.class.asp"-->
|
||||||
|
<!--#include file="config_loader.asp"-->
|
||||||
|
|
||||||
|
<%
|
||||||
|
listTemplateName = Session.Value("ueditor_asp_listTemplateName")
|
||||||
|
|
||||||
|
start = CInt(Request.Item("start"))
|
||||||
|
size = CInt(Request.Item("size"))
|
||||||
|
total = 0
|
||||||
|
|
||||||
|
If size < 0 Then
|
||||||
|
size = CInt(config.Item( listTemplateName + "ManagerListSize" ))
|
||||||
|
End If
|
||||||
|
|
||||||
|
path = config.Item( listTemplateName + "ManagerListPath" )
|
||||||
|
Set extensions = config.Item( listTemplateName + "ManagerAllowFiles")
|
||||||
|
|
||||||
|
Set list = new ASPJson.Collection
|
||||||
|
|
||||||
|
Set fso = Server.CreateObject("Scripting.FileSystemObject")
|
||||||
|
If fso.FolderExists(Server.MapPath(path)) = False Then
|
||||||
|
state = "找不到目录:" + path
|
||||||
|
Else
|
||||||
|
Set all = ListAllFilesInFolder( fso, path )
|
||||||
|
total = all.Count
|
||||||
|
index = 0
|
||||||
|
For Each file in all
|
||||||
|
If index >= start And index < start + size Then
|
||||||
|
Dim fileObject
|
||||||
|
Set fileObject = new ASPJson.Collection
|
||||||
|
fileObject.Add "url", file
|
||||||
|
list.Add index - start, fileObject
|
||||||
|
End If
|
||||||
|
index = index + 1
|
||||||
|
Next
|
||||||
|
state = "SUCCESS"
|
||||||
|
End If
|
||||||
|
|
||||||
|
Set json = new ASPJson
|
||||||
|
With json.data
|
||||||
|
.Add "state", state
|
||||||
|
.Add "list", list
|
||||||
|
.Add "start", start
|
||||||
|
.Add "size", size
|
||||||
|
.Add "total", total
|
||||||
|
End With
|
||||||
|
|
||||||
|
json.PrintJson()
|
||||||
|
|
||||||
|
Function ListAllFilesInFolder( fso, path )
|
||||||
|
Dim list
|
||||||
|
Set list = Server.CreateObject("Scripting.Dictionary")
|
||||||
|
Set folder = fso.GetFolder(Server.MapPath(path))
|
||||||
|
For Each file In folder.Files
|
||||||
|
If CheckExt(file.Name) Then
|
||||||
|
list.Add path & "/" & file.Name, true
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
For Each subFolder In folder.SubFolders
|
||||||
|
Set subList = ListAllFilesInFolder( fso, path & "/" & subFolder.Name )
|
||||||
|
For Each subListFile In subList
|
||||||
|
list.Add subListFile, true
|
||||||
|
Next
|
||||||
|
Next
|
||||||
|
Set ListAllFilesInFolder = list
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Function CheckExt( filename )
|
||||||
|
For Each ext In extensions
|
||||||
|
If UCase(GetExt(filename)) = UCase(extensions.Item(ext)) Then
|
||||||
|
CheckExt = true
|
||||||
|
Exit Function
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
CheckExt = false
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Function GetExt( file )
|
||||||
|
GetExt = Right( file, Len(file) - InStrRev(file, ".") + 1 )
|
||||||
|
End Function
|
||||||
|
%>
|
@ -0,0 +1,29 @@
|
|||||||
|
<!--#include file="ASPJson.class.asp"-->
|
||||||
|
<!--#include file="config_loader.asp"-->
|
||||||
|
<!--#include file="Uploader.class.asp"-->
|
||||||
|
<%
|
||||||
|
uploadTemplateName = Session.Value("ueditor_asp_uploadTemplateName")
|
||||||
|
|
||||||
|
Set up = new Uploader
|
||||||
|
up.MaxSize = config.Item( uploadTemplateName & "MaxSize" )
|
||||||
|
up.FileField = config.Item( uploadTemplateName & "FieldName" )
|
||||||
|
up.PathFormat = config.Item( uploadTemplateName & "PathFormat" )
|
||||||
|
|
||||||
|
If Not IsEmpty( Session.Value("base64Upload") ) Then
|
||||||
|
up.UploadBase64( Session.Value("base64Upload") )
|
||||||
|
Else
|
||||||
|
up.AllowType = config.Item( uploadTemplateName & "AllowFiles" )
|
||||||
|
up.UploadForm()
|
||||||
|
End If
|
||||||
|
|
||||||
|
Set json = new ASPJson
|
||||||
|
|
||||||
|
With json.data
|
||||||
|
.Add "url", up.FilePath
|
||||||
|
.Add "original", up.OriginalFileName
|
||||||
|
.Add "state", up.State
|
||||||
|
.Add "title", up.OriginalFileName
|
||||||
|
End With
|
||||||
|
|
||||||
|
json.PrintJson()
|
||||||
|
%>
|
@ -0,0 +1,21 @@
|
|||||||
|
<%
|
||||||
|
Set json = new ASPJson
|
||||||
|
Set fso = Server.CreateObject("Scripting.FileSystemObject")
|
||||||
|
|
||||||
|
Set stream = Server.CreateObject("ADODB.Stream")
|
||||||
|
|
||||||
|
stream.Open()
|
||||||
|
stream.Charset = "UTF-8"
|
||||||
|
stream.LoadFromFile Server.MapPath( "config.json" )
|
||||||
|
|
||||||
|
content = stream.ReadText()
|
||||||
|
|
||||||
|
Set commentPattern = new RegExp
|
||||||
|
commentPattern.Multiline = true
|
||||||
|
commentPattern.Pattern = "/\*[\s\S]+?\*/"
|
||||||
|
commentPattern.Global = true
|
||||||
|
content = commentPattern.Replace(content, "")
|
||||||
|
json.loadJSON( content )
|
||||||
|
|
||||||
|
Set config = json.data
|
||||||
|
%>
|
@ -0,0 +1,44 @@
|
|||||||
|
<%@ LANGUAGE="VBSCRIPT" CODEPAGE="65001" %>
|
||||||
|
<%
|
||||||
|
action = Request.Item("action")
|
||||||
|
|
||||||
|
Session.Contents.Remove("ueditor_asp_uploadTemplateName")
|
||||||
|
Session.Contents.Remove("ueditor_asp_base64Upload")
|
||||||
|
Session.Contents.Remove("ueditor_asp_listTemplateName")
|
||||||
|
|
||||||
|
|
||||||
|
Select Case action
|
||||||
|
|
||||||
|
Case "config"
|
||||||
|
Server.Execute("action_config.asp")
|
||||||
|
|
||||||
|
Case "uploadimage"
|
||||||
|
Session.Value("ueditor_asp_uploadTemplateName") = "image"
|
||||||
|
Server.Execute("action_upload.asp")
|
||||||
|
|
||||||
|
Case "uploadscrawl"
|
||||||
|
Session.Value("ueditor_asp_uploadTemplateName") = "scrawl"
|
||||||
|
Session.Value("base64Upload") = "scrawl.png"
|
||||||
|
Server.Execute("action_upload.asp")
|
||||||
|
|
||||||
|
Case "uploadvideo"
|
||||||
|
Session.Value("ueditor_asp_uploadTemplateName") = "video"
|
||||||
|
Server.Execute("action_upload.asp")
|
||||||
|
|
||||||
|
Case "uploadfile"
|
||||||
|
Session.Value("ueditor_asp_uploadTemplateName") = "file"
|
||||||
|
Server.Execute("action_upload.asp")
|
||||||
|
|
||||||
|
Case "listimage"
|
||||||
|
Session.Value("ueditor_asp_listTemplateName") = "image"
|
||||||
|
Server.Execute("action_list.asp")
|
||||||
|
|
||||||
|
Case "listfile"
|
||||||
|
Session.Value("ueditor_asp_listTemplateName") = "file"
|
||||||
|
Server.Execute("action_list.asp")
|
||||||
|
|
||||||
|
Case "catchimage"
|
||||||
|
Server.Execute("action_crawler.asp")
|
||||||
|
End Select
|
||||||
|
|
||||||
|
%>
|