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) +})