diff --git a/.babelrc b/.babelrc
new file mode 100644
index 0000000..b83e94c
--- /dev/null
+++ b/.babelrc
@@ -0,0 +1,3 @@
+{
+ "presets": ["es2015","stage-2"]
+}
\ No newline at end of file
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..0baadd4
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,7 @@
+module.exports = {
+ "extends": "standard",
+ "plugins": [
+ "standard",
+ "promise"
+ ]
+};
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8cdcaea
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+dist/
+node_modules/
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..dec2e7a
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..513d457
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/pty.iml b/.idea/pty.iml
new file mode 100644
index 0000000..24643cc
--- /dev/null
+++ b/.idea/pty.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/watcherTasks.xml b/.idea/watcherTasks.xml
new file mode 100644
index 0000000..4a2b2a1
--- /dev/null
+++ b/.idea/watcherTasks.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index 2f60b94..e69de29 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +0,0 @@
-# pty
-葡萄园自动灌溉控制系统
diff --git a/gulpfile.babel.js b/gulpfile.babel.js
new file mode 100644
index 0000000..9bac7d3
--- /dev/null
+++ b/gulpfile.babel.js
@@ -0,0 +1,6 @@
+/**
+ * Created by fan on 2017/7/11.
+ */
+import requireDir from 'require-dir'
+
+requireDir('./tasks')
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..3e0adb7
--- /dev/null
+++ b/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "pty",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1",
+ "dev": "gulp dev"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC",
+ "devDependencies": {
+ "babel-core": "^6.25.0",
+ "babel-polyfill": "^6.23.0",
+ "babel-preset-es2015": "^6.24.1",
+ "babel-preset-stage-2": "^6.24.1",
+ "browser-sync": "^2.18.12",
+ "del": "^3.0.0",
+ "eslint": "^4.2.0",
+ "eslint-config-standard": "^10.2.1",
+ "eslint-plugin-import": "^2.7.0",
+ "eslint-plugin-node": "^5.1.0",
+ "eslint-plugin-promise": "^3.5.0",
+ "eslint-plugin-standard": "^3.0.1",
+ "gulp": "^3.9.1",
+ "gulp-autoprefixer": "^4.0.0",
+ "gulp-babel": "^6.1.2",
+ "gulp-cached": "^1.1.1",
+ "gulp-imagemin": "^3.3.0",
+ "gulp-plumber": "^1.1.0",
+ "gulp-requirejs-optimize": "^1.2.0",
+ "gulp-sass": "^3.1.0",
+ "gulp-sequence": "^0.4.6",
+ "gulp-sourcemaps": "^2.6.0",
+ "require-dir": "^0.3.2"
+ }
+}
diff --git a/src/images/560b355eccf2d.jpg b/src/images/560b355eccf2d.jpg
new file mode 100644
index 0000000..5c59d0d
Binary files /dev/null and b/src/images/560b355eccf2d.jpg differ
diff --git a/src/images/btn.png b/src/images/btn.png
new file mode 100644
index 0000000..213bf3b
Binary files /dev/null and b/src/images/btn.png differ
diff --git a/src/images/btn_hover.png b/src/images/btn_hover.png
new file mode 100644
index 0000000..87a68f6
Binary files /dev/null and b/src/images/btn_hover.png differ
diff --git a/src/images/w7.jpg b/src/images/w7.jpg
new file mode 100644
index 0000000..7efb391
Binary files /dev/null and b/src/images/w7.jpg differ
diff --git a/src/index.html b/src/index.html
new file mode 100644
index 0000000..31fe6c8
--- /dev/null
+++ b/src/index.html
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/js/app.js b/src/js/app.js
new file mode 100644
index 0000000..6fb1ee4
--- /dev/null
+++ b/src/js/app.js
@@ -0,0 +1,29 @@
+require.config({
+ baseUrl: 'lib',
+ paths: {
+ 'jquery': 'jquery.min',
+ 'art-template': 'template-web',
+ 'jedate': 'jedate/jquery.jedate.min',
+ 'layer': 'layer/layer',
+ 'module': '../js/modules',
+ 'router': '../js/router',
+ 'page': '../js/pages',
+ 'tpl': '../template'
+ },
+ shim: {
+ 'director': {
+ exports: 'Router'
+ },
+ 'WebVideoCtrl': {
+ exports: 'WebVideoCtrl'
+ }
+ }
+})
+
+require(['domReady!', 'router/router'], (doc, router) => {
+ router.init()
+ setInterval(() => {
+ let date = new Date()
+
+ }, 1000)
+})
diff --git a/src/js/modules/clock.js b/src/js/modules/clock.js
new file mode 100644
index 0000000..2e2ca4f
--- /dev/null
+++ b/src/js/modules/clock.js
@@ -0,0 +1,9 @@
+/**
+ * Created by lf on 2017/7/12.
+ */
+define(function () {
+ var day = ['日', '一', '二', '三', '四', '五', '六']
+ return function () {
+
+ }
+})
\ No newline at end of file
diff --git a/src/js/modules/ma.js b/src/js/modules/ma.js
new file mode 100644
index 0000000..cc2276c
--- /dev/null
+++ b/src/js/modules/ma.js
@@ -0,0 +1,5 @@
+define([], function () {
+ return function () {
+ alert('i called the module aa')
+ }
+})
diff --git a/src/js/modules/mb.js b/src/js/modules/mb.js
new file mode 100644
index 0000000..5c3e0ac
--- /dev/null
+++ b/src/js/modules/mb.js
@@ -0,0 +1,5 @@
+define([], function () {
+ return function () {
+ alert('i called the module b')
+ }
+})
diff --git a/src/js/modules/mc.js b/src/js/modules/mc.js
new file mode 100644
index 0000000..a2be407
--- /dev/null
+++ b/src/js/modules/mc.js
@@ -0,0 +1,5 @@
+define([], function () {
+ return function () {
+ alert('i called the module c')
+ }
+})
diff --git a/src/js/pages/pa.js b/src/js/pages/pa.js
new file mode 100644
index 0000000..22c0fe8
--- /dev/null
+++ b/src/js/pages/pa.js
@@ -0,0 +1,12 @@
+/* eslint-disable no-undef */
+define(['art-template', 'module/ma', 'text!tpl/pa.html'], function (template, ma, tpl) {
+ function render (el, data) {
+ var render = template.compile(tpl)
+ var html = render(data)
+ document.getElementById(el).innerHTML = html
+ }
+ return function () {
+ render('router-view', {str: '我是页面AA'})
+ ma()
+ }
+})
diff --git a/src/js/pages/pb.js b/src/js/pages/pb.js
new file mode 100644
index 0000000..3b17318
--- /dev/null
+++ b/src/js/pages/pb.js
@@ -0,0 +1,12 @@
+/* eslint-disable no-undef */
+define(['art-template', 'module/mb', 'text!tpl/pb.html'], function (template, mb, tpl) {
+ function render (el, data) {
+ var render = template.compile(tpl)
+ var html = render(data)
+ document.getElementById(el).innerHTML = html
+ }
+ return function () {
+ render('router-view', {str: '我是页面B'})
+ mb()
+ }
+})
diff --git a/src/js/pages/pc.js b/src/js/pages/pc.js
new file mode 100644
index 0000000..a22411b
--- /dev/null
+++ b/src/js/pages/pc.js
@@ -0,0 +1,12 @@
+/* eslint-disable no-undef */
+define(['art-template', 'module/mc', 'text!tpl/pc.html'], function (template, mc, tpl) {
+ function render (el, data) {
+ var render = template.compile(tpl)
+ var html = render(data)
+ document.getElementById(el).innerHTML = html
+ }
+ return function () {
+ render('router-view', {str: '我是页面C'})
+ mc()
+ }
+})
diff --git a/src/js/router/router.js b/src/js/router/router.js
new file mode 100644
index 0000000..d2eb0dd
--- /dev/null
+++ b/src/js/router/router.js
@@ -0,0 +1,4 @@
+define(['router/routes', 'director'], function (Routes, Router) {
+ var router = Router(Routes)
+ return router
+})
diff --git a/src/js/router/routes.js b/src/js/router/routes.js
new file mode 100644
index 0000000..a21c728
--- /dev/null
+++ b/src/js/router/routes.js
@@ -0,0 +1,5 @@
+define({
+ '/aa': () => { require(['page/pa'], (a) => {a()}) },
+ '/bb': () => { require(['page/pb'], (b) => {b()}) },
+ '/cc': () => { require(['page/pc'], (c) => {c()}) },
+})
\ No newline at end of file
diff --git a/src/lib/director.js b/src/lib/director.js
new file mode 100644
index 0000000..72b9aac
--- /dev/null
+++ b/src/lib/director.js
@@ -0,0 +1,745 @@
+//
+// Generated on Tue Dec 16 2014 12:13:47 GMT+0100 (CET) by Charlie Robbins, Paolo Fragomeni & the Contributors (Using Codesurgeon).
+// Version 1.2.6
+//
+(function (exports) {
+
+ /*
+ * browser.js: Browser specific functionality for director.
+ *
+ * (C) 2011, Charlie Robbins, Paolo Fragomeni, & the Contributors.
+ * MIT LICENSE
+ *
+ */
+
+ var dloc = document.location;
+
+ function dlocHashEmpty() {
+ // Non-IE browsers return '' when the address bar shows '#'; Director's logic
+ // assumes both mean empty.
+ return dloc.hash === "" || dloc.hash === "#";
+ }
+ var listener = {
+ mode: "modern",
+ hash: dloc.hash,
+ history: false,
+
+ check: function () {
+ var h = dloc.hash;
+ if (h != this.hash) {
+ this.hash = h;
+ this.onHashChanged();
+ }
+ },
+
+ fire: function () {
+ if (this.mode === "modern") {
+ this.history === true ? window.onpopstate() : window.onhashchange();
+ } else {
+ this.onHashChanged();
+ }
+ },
+
+ init: function (fn, history) {
+ var self = this;
+ this.history = history;
+
+ if (!Router.listeners) {
+ Router.listeners = [];
+ }
+
+ function onchange(onChangeEvent) {
+ for (var i = 0, l = Router.listeners.length; i < l; i++) {
+ Router.listeners[i](onChangeEvent);
+ }
+ }
+
+ //note IE8 is being counted as 'modern' because it has the hashchange event
+ if ("onhashchange" in window && (document.documentMode === undefined ||
+ document.documentMode > 7)) {
+ // At least for now HTML5 history is available for 'modern' browsers only
+ if (this.history === true) {
+ // There is an old bug in Chrome that causes onpopstate to fire even
+ // upon initial page load. Since the handler is run manually in init(),
+ // this would cause Chrome to run it twise. Currently the only
+ // workaround seems to be to set the handler after the initial page load
+ // http://code.google.com/p/chromium/issues/detail?id=63040
+ setTimeout(function () {
+ window.onpopstate = onchange;
+ }, 500);
+ } else {
+ window.onhashchange = onchange;
+ }
+ this.mode = "modern";
+ } else {
+ //
+ // IE support, based on a concept by Erik Arvidson ...
+ //
+ var frame = document.createElement("iframe");
+ frame.id = "state-frame";
+ frame.style.display = "none";
+ document.body.appendChild(frame);
+ this.writeFrame("");
+
+ if ("onpropertychange" in document && "attachEvent" in document) {
+ document.attachEvent("onpropertychange", function () {
+ if (event.propertyName === "location") {
+ self.check();
+ }
+ });
+ }
+
+ window.setInterval(function () {
+ self.check();
+ }, 50);
+
+ this.onHashChanged = onchange;
+ this.mode = "legacy";
+ }
+
+ Router.listeners.push(fn);
+
+ return this.mode;
+ },
+
+ destroy: function (fn) {
+ if (!Router || !Router.listeners) {
+ return;
+ }
+
+ var listeners = Router.listeners;
+
+ for (var i = listeners.length - 1; i >= 0; i--) {
+ if (listeners[i] === fn) {
+ listeners.splice(i, 1);
+ }
+ }
+ },
+
+ setHash: function (s) {
+ // Mozilla always adds an entry to the history
+ if (this.mode === "legacy") {
+ this.writeFrame(s);
+ }
+
+ if (this.history === true) {
+ window.history.pushState({}, document.title, s);
+ // Fire an onpopstate event manually since pushing does not obviously
+ // trigger the pop event.
+ this.fire();
+ } else {
+ dloc.hash = (s[0] === "/") ? s : "/" + s;
+ }
+ return this;
+ },
+
+ writeFrame: function (s) {
+ // IE support...
+ var f = document.getElementById("state-frame");
+ var d = f.contentDocument || f.contentWindow.document;
+ d.open();
+ d.write("";
+ it += "", it += "", it += "", document.write(it)
+ }
+ return this
+ }(),
+ s = e.WebVideoCtrl = t;
+ s.version = "1.0.6"
+ }
+}(this);
\ No newline at end of file
diff --git a/src/style/style.scss b/src/style/style.scss
new file mode 100644
index 0000000..ca610e8
--- /dev/null
+++ b/src/style/style.scss
@@ -0,0 +1,110 @@
+body {
+ background: url("../images/w7.jpg") no-repeat;
+ background-size: cover;
+}
+
+body,html {
+ width: 100%;
+ height: 100%;
+ margin: 0;
+ padding: 0;
+}
+
+.app-head {
+ position: relative;
+ height: 120px;
+}
+
+.app-title {
+ position: absolute;
+ top: 10px;
+ left: calc(50% - 383px);
+ color: #00ff00;
+ letter-spacing: 3px;
+ font-weight: normal;
+ font-size: 36px;
+}
+
+.app-date {
+ position: absolute;
+ right: 66px;
+ top: 20px;
+ line-height: 50px;
+}
+
+.app-date label {
+ color: #00ff00;
+ margin-right: 12px;
+}
+
+.app-date input {
+ height: 34px;
+ border: 2px solid #fff;
+ background: transparent;
+ color: #fff;
+}
+
+input[name="date"] {
+ width: 220px;
+ text-indent: 60px;
+}
+
+input[name="time"] {
+ width: 96px;
+ margin-right: 11px;
+ text-indent: 14px;
+}
+
+input[name="day"] {
+ width: 60px;
+ text-indent: 22px;
+}
+
+.app-container {
+ height: calc(100% - 120px);
+}
+.app-router {
+ float: left;
+ width: calc(100% - 294px);
+ height: 100%;
+}
+.app-menu {
+ float: right;
+ width: 294px;
+ height: 100%;
+}
+.app-menu ul {
+ margin-top: 30px;
+ padding-left: 0;
+ height: calc(100% - 60px);
+ min-height: 300px;
+ border-left: 2px solid #fff;
+ list-style: none;
+
+}
+
+.app-menu ul li {
+ display: block;
+ height: 20%;
+ min-height: 100px;
+ //max-height: 140px;
+}
+
+.app-menu ul li a {
+ position: relative;
+ top: calc(50% - 29.5px);
+ display: block;
+ margin-left: 65px;
+ width: 164px;
+ height: 59px;
+ line-height: 59px;
+ color: #000;
+ font-weight: bold;
+ letter-spacing: 4px;
+ text-decoration: none;
+ text-align: center;
+ background: url(../images/btn.png) no-repeat;
+}
+.app-menu ul li a:hover, .app-menu ul li a.active {
+ background: url(../images/btn_hover.png) no-repeat;
+}
\ No newline at end of file
diff --git a/src/template/pa.html b/src/template/pa.html
new file mode 100644
index 0000000..d78e442
--- /dev/null
+++ b/src/template/pa.html
@@ -0,0 +1 @@
+{{str}}
\ No newline at end of file
diff --git a/src/template/pb.html b/src/template/pb.html
new file mode 100644
index 0000000..d78e442
--- /dev/null
+++ b/src/template/pb.html
@@ -0,0 +1 @@
+{{str}}
\ No newline at end of file
diff --git a/src/template/pc.html b/src/template/pc.html
new file mode 100644
index 0000000..d78e442
--- /dev/null
+++ b/src/template/pc.html
@@ -0,0 +1 @@
+{{str}}
\ No newline at end of file
diff --git a/tasks/clean.js b/tasks/clean.js
new file mode 100644
index 0000000..f1efe1c
--- /dev/null
+++ b/tasks/clean.js
@@ -0,0 +1,9 @@
+/**
+ * Created by fan on 2017/7/11.
+ */
+import gulp from 'gulp'
+import del from 'del'
+
+gulp.task('clean', function (callback) {
+ return del(['dist', 'tmp'], callback)
+})
diff --git a/tasks/dev.js b/tasks/dev.js
new file mode 100644
index 0000000..3140d2b
--- /dev/null
+++ b/tasks/dev.js
@@ -0,0 +1,9 @@
+/**
+ * Created by fan on 2017/7/11.
+ */
+import gulp from 'gulp'
+import gulpSequence from 'gulp-sequence'
+
+gulp.task('dev', gulpSequence('clean',
+ ['move-index', 'move-assets', 'move-lib', 'move-template', 'imgmin', 'es6', 'sass'],
+ 'server'))
diff --git a/tasks/imgmin.js b/tasks/imgmin.js
new file mode 100644
index 0000000..bbb28ed
--- /dev/null
+++ b/tasks/imgmin.js
@@ -0,0 +1,21 @@
+/**
+ * Created by fan on 2017/7/11.
+ */
+import gulp from 'gulp'
+import imagemin from 'gulp-imagemin'
+import cached from 'gulp-cached'
+
+/**
+ * 图片压缩, 并转移到tmp文件夹
+ */
+gulp.task('imgmin', function () {
+ return gulp.src('src/images/**/*.{jpg,jpeg,png,gif}')
+ .pipe(cached('imgmin'))
+ .pipe(imagemin({
+ optimizationLevel: 5, // 类型:Number 默认:3 取值范围:0-7(优化等级)
+ progressive: true, // 类型:Boolean 默认:false 无损压缩jpg图片
+ interlaced: true, // 类型:Boolean 默认:false 隔行扫描gif进行渲染
+ multipass: true // 类型:Boolean 默认:false 多次优化svg直到完全优化
+ }))
+ .pipe(gulp.dest('dist/images'))
+})
diff --git a/tasks/move.js b/tasks/move.js
new file mode 100644
index 0000000..bdf73f5
--- /dev/null
+++ b/tasks/move.js
@@ -0,0 +1,29 @@
+/**
+ * Created by fan on 2017/7/11.
+ */
+import gulp from 'gulp'
+import cached from 'gulp-cached'
+
+gulp.task('move-index', function () {
+ return gulp.src('src/index.html')
+ .pipe(cached('move-index'))
+ .pipe(gulp.dest('dist'))
+})
+
+gulp.task('move-assets', function () {
+ return gulp.src('src/assets/*.*')
+ .pipe(cached('move-assets'))
+ .pipe(gulp.dest('dist/assets'))
+})
+
+gulp.task('move-lib', function () {
+ return gulp.src('src/lib/**/*.*')
+ .pipe(cached('move-lib'))
+ .pipe(gulp.dest('dist/lib'))
+})
+
+gulp.task('move-template', function () {
+ return gulp.src('src/template/*.*')
+ .pipe(cached('move-template'))
+ .pipe(gulp.dest('dist/template'))
+})
\ No newline at end of file
diff --git a/tasks/sass.js b/tasks/sass.js
new file mode 100644
index 0000000..108fd70
--- /dev/null
+++ b/tasks/sass.js
@@ -0,0 +1,21 @@
+/**
+ * Created by fan on 2017/7/11.
+ */
+import gulp from 'gulp'
+import sass from 'gulp-sass'
+// import cached from 'gulp-cached'
+import autoprefixer from 'gulp-autoprefixer'
+
+gulp.task('sass', () => {
+ return gulp.src('src/style/**/*.scss')
+ // .pipe(cached('sass'))
+ .pipe(sass({
+ outputStyle: 'expanded'
+ }).on('error', sass.logError))
+ .pipe(autoprefixer({
+ browsers: ['last 6 version', 'ie 9'],
+ cascade: true, // 是否美化属性值 默认:true
+ remove: true // 是否去掉不必要的前缀 默认:true
+ }))
+ .pipe(gulp.dest('dist/css'))
+})
diff --git a/tasks/script.js b/tasks/script.js
new file mode 100644
index 0000000..1323978
--- /dev/null
+++ b/tasks/script.js
@@ -0,0 +1,19 @@
+import gulp from 'gulp'
+import cached from 'gulp-cached'
+import babel from 'gulp-babel'
+import sourcemaps from 'gulp-sourcemaps'
+import plumber from 'gulp-plumber'
+
+gulp.task('es6', () => {
+ return gulp.src('src/js/**/*.js')
+ .pipe(sourcemaps.init())
+ .pipe(plumber({ // plumber触发错误提示
+ errorHandler: console.log
+ }))
+ .pipe(cached('es6'))
+ .pipe(babel({
+ presets: ['es2015', 'stage-2']
+ }).on('error', function () { console.log('error') }))
+ .pipe(sourcemaps.write('./map'))
+ .pipe(gulp.dest('dist/js'))
+})
diff --git a/tasks/server.js b/tasks/server.js
new file mode 100644
index 0000000..7bc945a
--- /dev/null
+++ b/tasks/server.js
@@ -0,0 +1,33 @@
+/**
+ * Created by fan on 2017/7/11.
+ */
+import gulp from 'gulp'
+import browserSync from 'browser-sync'
+
+let server = browserSync.create('myserver')
+
+/**
+ * 启动静态服务器,并监控文件刷新浏览器
+ */
+gulp.task('server', function () {
+ server.init({
+ server: './dist',
+ port: '8080',
+ ui: {
+ port: 8081
+ }
+ })
+ gulp.watch('src/style/**/*.scss', ['sass'])
+ gulp.watch('src/js/**/*.js', ['es6'])
+ gulp.watch('src/images/**/*.{jpg,jpeg,png,gif}', ['imgmin'])
+ gulp.watch('src/assets/*.*', ['move-assets'])
+ gulp.watch('src/lib/**/*.*', ['move-lib'])
+ gulp.watch('src/template/*.*', ['move-template'])
+ gulp.watch('src/index.html', ['move-index'])
+ server.watch('dist/css/**/*.css', function (event, file) {
+ if (event === 'change') {
+ server.reload(file)
+ }
+ })
+ gulp.watch(['dist/**/*.*', '!dist/css/**/*.css']).on('change', server.reload)
+})