提交 addb3fe2 编写于 作者: E eoLinker API Management

更新release

上级 8d9dfdf1
{
"directory":"bower_components"
}
\ No newline at end of file
.tmp
.sass-cache
bower_components
node_modules
/node_modules
/nbproject/private/
nbproject
#GoKu Gateway(Lite)
* 开发目录结构要求:采取navbar、footer、header、content、sidebar树状结构
* js命名采取小驼峰模式(eg:eoNavbar)
* css class命名采取-拼接模式(eg:eo-navbar)id命名设计js需标明(eg:eo-navbar-js)
* 常量命名采用全大写及下划线拼接方式(eg:HTTP_CONSTANT)
* 任何服务及过滤器均采用开头大写小驼峰模式(eg:AuthInterceptor)
* 所有文件命名均采用小驼峰模式
* controller中不能设计dom操作
* 涉及交互尽量采用service
# 部署说明
## 运行
首先进入要存放文件的文件夹路径
`git clone https://git.oschina.net/riverLethe/eo-help.git`
`cd eo-help`
运行`npm install`安装运行依赖
运行`bower install`安装前端依赖
安装完毕后可运行
`gulp serve` --开发模式
`gulp build` --编译模式(将项目文件输出为上线文件)
`gulp serve:dist` --调试上线模式
### Gulp
目录结构
--gulp
* --base.js 配置基本项目依赖
* --build.js 生成上线版本脚本
* --config.js 全局配置文件
* --server.js 代理服务器/服务器启动脚本
详细配置见文件注释
## 框架目录
主要功能目录
* gulp 脚本管理
* src 项目源文件
* app.conf.json Angular全部变量配置文件,通过[dev-config/prod-config任务编译]
* config.rb compass配置文件
* vendor.base.json 前端启动依赖文件(打包会随源文件一同压缩)
* vendor.json 前端依赖库文件(通过Lazyload模块加载)
* package.json 编译模块依赖文件以及项目配置--新增模块请注意加上 `npm install --save 新安装模块`
* bower.json 前端依赖库json文件 `bower install --save 新安装模块`
## 源文件
### app目录
主要文件
* assets 存放静态文件
* config 全局配置文件,包括路由配置模块`routes`,全局定义模块`core`,以及按需加载模块`lazyload`
* directive 指令模块,页面所有的指令文件写在这里,模块位置为`eo-help(项目名).directive`
* service 服务模块,页面所有的服务文件写在这里,模块位置为`eo-help(项目名).service`
* filter 过滤器模块,页面所有的过滤器文件写在这里,模块位置为`eo-help(项目名).filter`
* constant 存放常量文件
* resource Api配置模块,全局的Api配置位置(目前Api数量较少,不考虑多文件,后期可能会改为多文件)
* app.module.js 全局模块依赖声明模块,如无需全局依赖更改,不要随意改动该文件内容.
* app.conf.js 由app.conf.json编译而来的全局变量文件,配置当前开发模式DEV/PRODUCTION
* vendor.js 前端依赖js库文件,随index.html注入文档
* vendor.scss 前端依赖scss库文件,通过在index.scss中引入
* index.scss 全局的样式文件.
{
"development": {
"serverUrl": "/",
"isDebug":true,
"assetUrl":"app/",
"COOKIE_CONFIG":{
"path":"/",
"domain":"localhost"
},
"WEBSOCKET_PORT":11204
},
"production": {
"serverUrl": "../",
"isDebug":false,
"assetUrl":"",
"COOKIE_CONFIG":{
"path":"/",
"domain":".goku.com"
},
"WEBSOCKET_PORT":1204
},
"test": {
"serverUrl": "../",
"isDebug":false,
"assetUrl":"",
"COOKIE_CONFIG":{
"path":"/",
"domain":".goku.com"
},
"WEBSOCKET_PORT":11204
}
}
\ No newline at end of file
{
"name": "eolinker",
"version": "1.0.0",
"authors": [
"riverLethe "
],
"description": "",
"main": "",
"moduleType": [],
"license": "MIT",
"homepage": "",
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"test",
"tests"
],
"dependencies": {
"angular-ui-router": "^0.4.0",
"angular-animate": "^1.5.0",
"angular-resource": "^1.5.0",
"oclazyload": "^1.0.9",
"particles.js": "^2.0.0",
"angular-md5": "^0.1.10",
"angular-cookies": "^1.5.8",
"clipboard": "^1.5.12",
"crypto-js": "^3.1.9",
"mockjs": "1.0.1-beta3",
"ace-builds": "^1.2.9",
"zepto": "^1.2.0"
},
"overrides": {}
}
require 'compass/import-once/activate'
Encoding.default_external = Encoding.find('utf-8')
# Require any additional compass plugins here.
# bootstrap 已经包含normalize
# require 'compass-normalize'
# Set this to the root of your project when deployed:
http_path = "/"
# project_path = ""
css_dir = ".tmp/serve/app"
sass_dir = "src/app"
images_dir = "src/assets/images"
javascripts_dir = "src/app/"
sprite_load_path = ["src/assets/images/sprite"]
# You can select your preferred output style here (can be overridden via the command line):
# output_style = :expanded or :nested or :compact or :compressed
# output_style = :expanded
# To enable relative paths to assets via compass helper functions. Uncomment:
# relative_assets = true
# To disable debugging comments that display the original location of your selectors. Uncomment:
# line_comments = false
# If you prefer the indented syntax, you might want to regenerate this
# project again passing --syntax sass, or you can uncomment this:
# preferred_syntax = :sass
# and then run:
# sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass
sourcemap = true
# 使用绝对路径方便调试http://sass-lang.com/documentation/file.SASS_REFERENCE.html#options
sass_options = {:sourcemap => :file}
\ No newline at end of file
此差异已折叠。
<!DOCTYPE html><html data-ng-app="goku"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width, initial-scale=0.1,maximum-scale=1.0,user-scalable=0"><meta name="author" content="广州银云信息科技有限公司"><meta name="description" content="GoKu Gateway(Lite),国内首个轻量级Go语言开源微服务API网关,性能优异,支持私有云部署,实现API转发、请求参数转换、IP黑白名单等功能,提供图形化界面管理,能够快速管理多个API网关,提高API业务安全性。"><meta name="keywords" content="api,Api,API, apigateway,API网关,OpenAPI,微服务管理,service mesh,microservices,API中间件,流量控制,权限管理,IP黑白名单,请求转发,API服务治理平台"><title>GoKu Gateway(Lite)| 国内首个轻量级Go语言开源微服务API网关</title><link href="assets/images/favicon.ico" rel="shortcut icon"><meta name="renderer" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><link rel="stylesheet" href="styles/app-d55cf0dff7.css"></head><!--[if lt IE 8]>
<style>html,body{overflow:hidden;height:100%}</style>
<div class="tb-ie-updater-layer"></div>
<div class="tb-ie-updater-box" data-spm="20161112">
<a href="https://www.google.cn/intl/zh-CN/chrome/browser/desktop/" class="tb-ie-updater-google" target="_blank" data-spm-click="gostr=/tbieupdate;locaid=d1;name=google">谷歌 Chrome</a>
<a href="http://www.uc.cn/ucbrowser/download/" class="tb-ie-updater-uc" target="_blank" data-spm-click="gostr=/tbieupdate20161112;locaid=d2;name=uc">UC 浏览器</a>"
</div>
<![endif]--><body><div class="base-container-div" ui-view=""></div><eo-modal></eo-modal><script id="plug-inner-script"></script></body><script src="scripts/app-207f0de0a3.js"></script></html>
\ No newline at end of file
angular.module("ui.bootstrap.paging",[]).factory("uibPaging",["$parse",function(e){return{create:function(a,t,n){a.setNumPages=n.numPages?e(n.numPages).assign:angular.noop,a.ngModelCtrl={$setViewValue:angular.noop},a._watchers=[],a.init=function(e,i){a.ngModelCtrl=e,a.config=i,e.$render=function(){a.render()},n.itemsPerPage?a._watchers.push(t.$parent.$watch(n.itemsPerPage,function(e){a.itemsPerPage=parseInt(e,10),t.totalPages=a.calculateTotalPages(),a.updatePage()})):a.itemsPerPage=i.itemsPerPage,t.$watch("totalItems",function(e,n){(angular.isDefined(e)||e!==n)&&(t.totalPages=a.calculateTotalPages(),a.updatePage())})},a.calculateTotalPages=function(){var e=a.itemsPerPage<1?1:Math.ceil(t.totalItems/a.itemsPerPage);return Math.max(e||0,1)},a.render=function(){t.page=parseInt(a.ngModelCtrl.$viewValue,10)||1},t.selectPage=function(e,n){n&&n.preventDefault();var i=!t.ngDisabled||!n;i&&t.page!==e&&e>0&&e<=t.totalPages&&(n&&n.target&&n.target.blur(),a.ngModelCtrl.$setViewValue(e),a.ngModelCtrl.$render())},t.getText=function(e){return t[e+"Text"]||a.config[e+"Text"]},t.noPrevious=function(){return 1===t.page},t.noNext=function(){return t.page===t.totalPages},a.updatePage=function(){a.setNumPages(t.$parent,t.totalPages),t.page>t.totalPages?t.selectPage(t.totalPages):a.ngModelCtrl.$render()},t.$on("$destroy",function(){for(;a._watchers.length;)a._watchers.shift()()})}}}]),angular.module("ui.bootstrap.pager",["ui.bootstrap.paging"]).controller("UibPagerController",["$scope","$attrs","uibPaging","uibPagerConfig",function(e,a,t,n){e.align=angular.isDefined(a.align)?e.$parent.$eval(a.align):n.align,t.create(this,e,a)}]).constant("uibPagerConfig",{itemsPerPage:10,previousText:"« Previous",nextText:"Next »",align:!0}).directive("uibPager",["uibPagerConfig",function(e){return{scope:{totalItems:"=",previousText:"@",nextText:"@",ngDisabled:"="},require:["uibPager","?ngModel"],controller:"UibPagerController",controllerAs:"pager",templateUrl:function(e,a){return a.templateUrl||"./libs/pagination/template/pager/pager.html"},replace:!0,link:function(a,t,n,i){var r=i[0],o=i[1];o&&r.init(o,e)}}}]),angular.module("ui.bootstrap.pagination",["ui.bootstrap.paging"]).controller("UibPaginationController",["$scope","$attrs","$parse","uibPaging","uibPaginationConfig",function(e,a,t,n,i){function r(e,a,t){return{number:e,text:a,active:t}}function o(e,a){var t=[],n=1,i=a,o=angular.isDefined(s)&&s<a;o&&(g?(n=Math.max(e-Math.floor(s/2),1),i=n+s-1,i>a&&(i=a,n=i-s+1)):(n=(Math.ceil(e/s)-1)*s+1,i=Math.min(n+s-1,a)));for(var l=n;l<=i;l++){var f=r(l,c(l),l===e);t.push(f)}if(o&&s>0&&(!g||u||p)){if(n>1){if(!p||n>3){var P=r(n-1,"...",!1);t.unshift(P)}if(p){if(3===n){var d=r(2,"2",!1);t.unshift(d)}var b=r(1,"1",!1);t.unshift(b)}}if(i<a){if(!p||i<a-2){var m=r(i+1,"...",!1);t.push(m)}if(p){if(i===a-2){var $=r(a-1,a-1,!1);t.push($)}var v=r(a,a,!1);t.push(v)}}}return t}var l=this,s=angular.isDefined(a.maxSize)?e.$parent.$eval(a.maxSize):i.maxSize,g=angular.isDefined(a.rotate)?e.$parent.$eval(a.rotate):i.rotate,u=angular.isDefined(a.forceEllipses)?e.$parent.$eval(a.forceEllipses):i.forceEllipses,p=angular.isDefined(a.boundaryLinkNumbers)?e.$parent.$eval(a.boundaryLinkNumbers):i.boundaryLinkNumbers,c=angular.isDefined(a.pageLabel)?function(t){return e.$parent.$eval(a.pageLabel,{$page:t})}:angular.identity;e.boundaryLinks=angular.isDefined(a.boundaryLinks)?e.$parent.$eval(a.boundaryLinks):i.boundaryLinks,e.directionLinks=angular.isDefined(a.directionLinks)?e.$parent.$eval(a.directionLinks):i.directionLinks,n.create(this,e,a),a.maxSize&&l._watchers.push(e.$parent.$watch(t(a.maxSize),function(e){s=parseInt(e,10),l.render()}));var f=this.render;this.render=function(){f(),e.page>0&&e.page<=e.totalPages&&(e.pages=o(e.page,e.totalPages))}}]).constant("uibPaginationConfig",{itemsPerPage:10,boundaryLinks:!1,boundaryLinkNumbers:!1,directionLinks:!0,firstText:"First",previousText:"Previous",nextText:"Next",lastText:"Last",rotate:!0,forceEllipses:!1}).directive("uibPagination",["$parse","uibPaginationConfig",function(e,a){return{scope:{totalItems:"=",firstText:"@",previousText:"@",nextText:"@",lastText:"@",ngDisabled:"="},require:["uibPagination","?ngModel"],controller:"UibPaginationController",controllerAs:"pagination",templateUrl:function(e,a){return a.templateUrl||"./libs/pagination/template/pagination/pagination.html"},replace:!0,link:function(e,t,n,i){var r=i[0],o=i[1];o&&r.init(o,a)}}}]);
\ No newline at end of file
<ul class="pager">
<li ng-class="{disabled: noPrevious()||ngDisabled, previous: align}"><a href ng-click="selectPage(page - 1, $event)">{{::getText('previous')}}</a></li>
<li ng-class="{disabled: noNext()||ngDisabled, next: align}"><a href ng-click="selectPage(page + 1, $event)">{{::getText('next')}}</a></li>
</ul>
<ul class="pagination">
<li ng-if="::boundaryLinks" ng-class="{disabled: noPrevious()||ngDisabled}" class="pagination-first "><a href class="iconfont" ng-click="selectPage(1, $event)">{{::getText('first')}}</a></li>
<li ng-if="::directionLinks" ng-class="{disabled: noPrevious()||ngDisabled}" class="pagination-prev "><a href class="iconfont" ng-click="selectPage(page - 1, $event)">{{::getText('previous')}}</a></li>
<li ng-repeat="page in pages track by $index" ng-class="{active: page.active,disabled: ngDisabled&&!page.active,'last-page':$last,'first-page':$first,'only-page':$last==$first}" class="pagination-page"><a href ng-click="selectPage(page.number, $event)" >{{page.text}}</a></li>
<li ng-if="::directionLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-next "><a class="iconfont" href ng-click="selectPage(page + 1, $event)">{{::getText('next')}}</a></li>
<li ng-if="::boundaryLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-last "><a href ng-click="selectPage(totalPages, $event)" class="iconfont">{{::getText('last')}}</a></li>
</ul>
!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.Clipboard=t()}}(function(){var t;return function e(t,n,o){function i(a,c){if(!n[a]){if(!t[a]){var s="function"==typeof require&&require;if(!c&&s)return s(a,!0);if(r)return r(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var u=n[a]={exports:{}};t[a][0].call(u.exports,function(e){var n=t[a][1][e];return i(n?n:e)},u,u.exports,e,t,n,o)}return n[a].exports}for(var r="function"==typeof require&&require,a=0;a<o.length;a++)i(o[a]);return i}({1:[function(t,e,n){var o=t("matches-selector");e.exports=function(t,e,n){for(var i=n?t:t.parentNode;i&&i!==document;){if(o(i,e))return i;i=i.parentNode}}},{"matches-selector":5}],2:[function(t,e,n){function o(t,e,n,o,r){var a=i.apply(this,arguments);return t.addEventListener(n,a,r),{destroy:function(){t.removeEventListener(n,a,r)}}}function i(t,e,n,o){return function(n){n.delegateTarget=r(n.target,e,!0),n.delegateTarget&&o.call(t,n)}}var r=t("closest");e.exports=o},{closest:1}],3:[function(t,e,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){var e=Object.prototype.toString.call(t);return"[object Function]"===e}},{}],4:[function(t,e,n){function o(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!c.string(e))throw new TypeError("Second argument must be a String");if(!c.fn(n))throw new TypeError("Third argument must be a Function");if(c.node(t))return i(t,e,n);if(c.nodeList(t))return r(t,e,n);if(c.string(t))return a(t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function i(t,e,n){return t.addEventListener(e,n),{destroy:function(){t.removeEventListener(e,n)}}}function r(t,e,n){return Array.prototype.forEach.call(t,function(t){t.addEventListener(e,n)}),{destroy:function(){Array.prototype.forEach.call(t,function(t){t.removeEventListener(e,n)})}}}function a(t,e,n){return s(document.body,t,e,n)}var c=t("./is"),s=t("delegate");e.exports=o},{"./is":3,delegate:2}],5:[function(t,e,n){function o(t,e){if(r)return r.call(t,e);for(var n=t.parentNode.querySelectorAll(e),o=0;o<n.length;++o)if(n[o]==t)return!0;return!1}var i=Element.prototype,r=i.matchesSelector||i.webkitMatchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector;e.exports=o},{}],6:[function(t,e,n){function o(t){var e;if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName)t.focus(),t.setSelectionRange(0,t.value.length),e=t.value;else{t.hasAttribute("contenteditable")&&t.focus();var n=window.getSelection(),o=document.createRange();o.selectNodeContents(t),n.removeAllRanges(),n.addRange(o),e=n.toString()}return e}e.exports=o},{}],7:[function(t,e,n){function o(){}o.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){function o(){i.off(t,o),e.apply(n,arguments)}var i=this;return o._=e,this.on(t,o,n)},emit:function(t){var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,i=n.length;for(o;i>o;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],i=[];if(o&&e)for(var r=0,a=o.length;a>r;r++)o[r].fn!==e&&o[r].fn._!==e&&i.push(o[r]);return i.length?n[t]=i:delete n[t],this}},e.exports=o},{}],8:[function(e,n,o){!function(i,r){if("function"==typeof t&&t.amd)t(["module","select"],r);else if("undefined"!=typeof o)r(n,e("select"));else{var a={exports:{}};r(a,i.select),i.clipboardAction=a.exports}}(this,function(t,e){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=n(e),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},a=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),c=function(){function t(e){o(this,t),this.resolveOptions(e),this.initSelection()}return t.prototype.resolveOptions=function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.action=t.action,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""},t.prototype.initSelection=function(){this.text?this.selectFake():this.target&&this.selectTarget()},t.prototype.selectFake=function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=document.body.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px",this.fakeElem.style.top=(window.pageYOffset||document.documentElement.scrollTop)+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,document.body.appendChild(this.fakeElem),this.selectedText=(0,i["default"])(this.fakeElem),this.copyText()},t.prototype.removeFake=function(){this.fakeHandler&&(document.body.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(document.body.removeChild(this.fakeElem),this.fakeElem=null)},t.prototype.selectTarget=function(){this.selectedText=(0,i["default"])(this.target),this.copyText()},t.prototype.copyText=function(){var t=void 0;try{t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)},t.prototype.handleResult=function(t){t?this.emitter.emit("success",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)}):this.emitter.emit("error",{action:this.action,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})},t.prototype.clearSelection=function(){this.target&&this.target.blur(),window.getSelection().removeAllRanges()},t.prototype.destroy=function(){this.removeFake()},a(t,[{key:"action",set:function(){var t=arguments.length<=0||void 0===arguments[0]?"copy":arguments[0];if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==("undefined"==typeof t?"undefined":r(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),t}();t.exports=c})},{select:6}],9:[function(e,n,o){!function(i,r){if("function"==typeof t&&t.amd)t(["module","./clipboard-action","tiny-emitter","good-listener"],r);else if("undefined"!=typeof o)r(n,e("./clipboard-action"),e("tiny-emitter"),e("good-listener"));else{var a={exports:{}};r(a,i.clipboardAction,i.tinyEmitter,i.goodListener),i.clipboard=a.exports}}(this,function(t,e,n,o){"use strict";function i(t){return t&&t.__esModule?t:{"default":t}}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function c(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function s(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}var l=i(e),u=i(n),f=i(o),d=function(t){function e(n,o){r(this,e);var i=a(this,t.call(this));return i.resolveOptions(o),i.listenClick(n),i}return c(e,t),e.prototype.resolveOptions=function(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText},e.prototype.listenClick=function(t){var e=this;this.listener=(0,f["default"])(t,"click",function(t){return e.onClick(t)})},e.prototype.onClick=function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new l["default"]({action:this.action(e),target:this.target(e),text:this.text(e),trigger:e,emitter:this})},e.prototype.defaultAction=function(t){return s("action",t)},e.prototype.defaultTarget=function(t){var e=s("target",t);return e?document.querySelector(e):void 0},e.prototype.defaultText=function(t){return s("text",t)},e.prototype.destroy=function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)},e}(u["default"]);t.exports=d})},{"./clipboard-action":8,"good-listener":4,"tiny-emitter":7}]},{},[9])(9)});
\ No newline at end of file
'use strict';
var gulp = require('gulp'),
path = require('path'),
fs = require('fs'),
config = require('./config'),
_ = require('lodash'),
$ = require('gulp-load-plugins')({
pattern: ['gulp-*', 'event-stream', 'main-bower-files', 'uglify-save-license', 'del']
}),
browserSync = require('browser-sync'),
gulpsync = $.sync(gulp),
reload = browserSync.reload;//实时刷新
gulp.task('dev-config',function () {
return gulp.src('app.conf.json')
.pipe($.ngConfig(config.modules.ConstantModuleName,{
environment: 'development',
createModule: false,
wrap: true
}))
.pipe(gulp.dest(path.join(config.paths.src,'/app')))//join() 方法用于把数组中的所有元素放入一个字符串。
});
gulp.task('prod-config',function () {
return gulp.src('app.conf.json')
.pipe($.ngConfig(config.modules.ConstantModuleName,{
environment: 'production',
createModule: false,
wrap: true//生成闭包
}))
.pipe(gulp.dest(path.join(config.paths.src,'/app')))
});
gulp.task('test-config',function () {
return gulp.src('app.conf.json')
.pipe($.ngConfig(config.modules.ConstantModuleName,{
environment: 'test',
createModule: false,
wrap: true//生成闭包
}))
.pipe(gulp.dest(path.join(config.paths.src,'/app')))
});
/**
* [代码质量管理]
*/
gulp.task('jshint',function () {
return gulp.src(path.join(config.paths.src,'app/**/*.js'))
.pipe($.plumber(config.errorHandler()))
.pipe($.jshint())
.pipe(reload({ stream: true }))
.pipe($.size());
});
/**
* [清理DIST,TEMP文件夹]
*/
gulp.task('clean', function () {
$.del([path.join(config.paths.dist, '/'), path.join(config.paths.tmp, '/')]);
});
/**
* [编译之前将scss注入index.scss]
*/
gulp.task('inject_sass',function () {
var injectFiles = gulp.src([
path.join(config.paths.src,'app/**/*.scss'),
path.join('!'+ config.paths.src, 'app/index.scss')
],{read:false});
var injectOptions = {
transform: function(filePath) {
filePath = filePath.replace(config.paths.src + '/app/', '');
return '@import "' + filePath + '";';
},
starttag: '// injector',
endtag: '// endinjector',
addRootSlash: false
};
return gulp.src(path.join(config.paths.src,'app/index.scss'))
.pipe($.inject(injectFiles,injectOptions))
.pipe(gulp.dest(path.join(config.paths.src,'app/')))
});
gulp.task('clean', function () {
$.del([path.join(config.paths.dist, '/'), path.join(config.paths.tmp, '/')]);
});
/**
* [SASS预编译模块,依赖compass模块编译]
*/
gulp.task('styles:compass',['inject_sass'],function () {
return gulp.src(path.join(config.paths.src,'app/index.scss'))
.pipe($.plumber(config.errorHandler()))
.pipe($.compass({
config_file: path.join(__dirname, '/../config.rb'),
css: path.join(config.paths.tmp, '/serve/app/'),
sass: path.join(config.paths.src, '/app/'),
}))
//sprite图片路径修复
.pipe($.replace('../../../src/assets/images/', '../assets/images/'))
.pipe(gulp.dest(path.join(config.paths.tmp,'/serve/app/')))
//css改变时无刷新改变页面
.pipe(reload({ stream: true }));
});
/**
* [Html中的CSS以及JS注入]
*/
gulp.task('inject', ['jshint', 'styles:compass','vendor:base'], function () {
var injectStyles = gulp.src([
path.join(config.paths.tmp, '/serve/app/**/*.css')
], { read: false });
var injectScripts = gulp.src([
path.join(config.paths.src, '/app/**/*.js'),
path.join('!' +config.paths.src, '/app/vendor.js'),
]).pipe($.angularFilesort());
var injectOptions = {
ignorePath: [config.paths.src, path.join(config.paths.tmp, '/serve')],
addRootSlash: false
};
return gulp.src(path.join(config.paths.src, '/*.html'))
.pipe($.plumber(config.errorHandler()))
.pipe($.inject($.eventStream.merge(
injectStyles,
injectScripts
),injectOptions))
.pipe(gulp.dest(path.join(config.paths.tmp, '/serve')));
});
gulp.task('vendor', gulpsync.sync(['vendor:base']) );
// gulp.task('vendor', gulpsync.sync(['vendor:base', 'vendor:app']) );
/**
* [复制依赖文件]
*/
gulp.task('vendor:base', function() {
var jsFilter = $.filter('**/*.js',{restore: true}),
cssFilter = $.filter('**/*.css',{restore: true});
return gulp.src(config.vendor.base.source)
.pipe($.expectFile(config.vendor.base.source))
.pipe(jsFilter)
.pipe($.concat(config.vendor.base.name+'.js'))
.pipe(jsFilter.restore)
.pipe(cssFilter)
.pipe($.concat(config.vendor.base.name+'.scss'))
.pipe(cssFilter.restore)
.pipe(gulp.dest(config.vendor.base.dest))
;
});
gulp.task('vendor:app', function() {
var jsFilter = $.filter('*.js',{restore: true}),
cssFilter = $.filter('*.css',{restore: true});
return gulp.src(config.vendor.app.source, {base: 'bower_components'})
.pipe($.expectFile(config.vendor.app.source))
.pipe(jsFilter)
.pipe(jsFilter.restore)
.pipe(cssFilter)
.pipe(cssFilter.restore)
.pipe(gulp.dest(config.vendor.app.dest) );
});
\ No newline at end of file
'use strict';
var gulp = require('gulp');
var path = require('path');
var config = require('./config');
var _ = require('lodash');
var wiredep = require('wiredep').stream;
var $ = require('gulp-load-plugins')({
pattern: ['gulp-*', 'main-bower-files', 'uglify-save-license', 'del', 'imagemin-pngquant']
});
var sass = require('gulp-sass');
gulp.task('clean:dist', function() {
$.del([path.join(config.paths.dist, '/')]);
});
/**
* [生成Html模版文件]
*/
gulp.task('partials', function() {
return gulp.src([
path.join(config.paths.src, '/app/**/*.html')
])
.pipe($.minifyHtml({
empty: true,
spare: true,
quotes: true
}))
.pipe($.angularTemplatecache('templateCacheHtml.js', {
module: config.modules.templateModuleName,
root: 'app'
}))
.pipe(gulp.dest(config.paths.tmp + '/partials/'));
});
/**
* [Html,Js,Css压缩合并]
*/
gulp.task('html', ['plug:timestamp', 'inject', 'partials'], function() {
var partialsInjectFile = gulp.src(path.join(config.paths.tmp, '/partials/templateCacheHtml.js'), {
read: false
});
var partialsInjectOptions = {
starttag: '<!-- inject:partials -->',
ignorePath: path.join(config.paths.tmp, '/partials'),
addRootSlash: false
};
var htmlFilter = $.filter('*.html', {
restore: true
});
var jsFilter = $.filter('**/*.js', {
restore: true
});
var cssFilter = $.filter('**/*.css', {
restore: true
});
return gulp.src(path.join(config.paths.tmp, '/serve/*.html'))
//error
.pipe($.plumber(config.errorHandler()))
//inject template
.pipe($.inject(partialsInjectFile, partialsInjectOptions))
//js
.pipe($.useref()) //合并和压缩
.pipe(jsFilter)
//修复HTML图片地址
.pipe($.replace('app/assets/', 'assets/'))
.pipe($.stripDebug())
.pipe($.uglify())
.pipe(jsFilter.restore)
//css
.pipe(cssFilter)
//修复HTML图片地址
.pipe($.replace('app/assets/', 'assets/'))
.pipe($.replace('(assets/', '(../assets/'))
.pipe($.autoprefixer({
browsers: ['last 20 versions'],
cascade: false
}))
.pipe($.csso())
.pipe(cssFilter.restore)
//md5后缀
.pipe($.if('*.css', $.rev()))
.pipe($.if('*.js', $.rev()))
//替换md5后缀的文件名
.pipe($.revReplace())
//html处理
.pipe(htmlFilter)
// .pipe($.replace('<base href="/">', '<base href="/goku/">'))
.pipe($.minifyHtml({
empty: true,
spare: true,
quotes: true,
conditionals: true
}))
.pipe(htmlFilter.restore)
.pipe(gulp.dest(path.join(config.paths.dist, '/')))
.pipe($.size({
title: path.join(config.paths.dist, '/'),
showFiles: true
}));
});
/**
* [图片压缩]
*/
gulp.task('images', function() {
return gulp.src([
path.join(config.paths.src, '/assets/images/**/*'),
path.join('!' + config.paths.src, '/assets/images/sprite/**/*')
])
.pipe($.imagemin({
progressive: true,
svgoPlugins: [{
removeViewBox: false
}],
use: [$.imageminPngquant()]
}))
.pipe(gulp.dest(path.join(config.paths.dist, '/assets/images')));
});
gulp.task('fonts', function() {
return gulp.src(config.vendor.base.source, {
base: 'bower_components'
})
.pipe($.filter('**/*.{eot,svg,ttf,woff,woff2}'))
.pipe($.flatten())
.pipe(gulp.dest(path.join(config.paths.dist, '/fonts/')));
});
/**
* [复制文件] 前端依赖库以及静态文件
*/
gulp.task('plug:timestamp', function() {
return gulp.src([
path.join(config.paths.src, '/app/constant/plug.constant.js')
])
.pipe($.replace(/.js\?timestamp=.*?\'/g, '.js?timestamp='+(new Date()).getTime()+'\''))
.pipe($.replace(/.css\?timestamp=.*?\'/g, '.css?timestamp='+(new Date()).getTime()+'\''))
.pipe(gulp.dest(path.join(config.paths.src, '/app/constant')));
});
gulp.task('other:vendor:js', function() {
return gulp.src([
path.join(config.paths.src, '/vendor/**/*.js')
])
.pipe($.filter(function(file) {
return file.stat.isFile();
}))
.pipe($.stripDebug())
.pipe($.uglify())
.pipe(gulp.dest(path.join(config.paths.dist, '/vendor')));
});
gulp.task('other:vendor',['other:vendor:js'], function() {
return gulp.src([
path.join(config.paths.src, '/vendor/**/*'),
path.join('!' + config.paths.src, '/vendor/**/*.js')
])
.pipe($.filter(function(file) {
return file.stat.isFile();
}))
.pipe(gulp.dest(path.join(config.paths.dist, '/vendor')));
});
gulp.task('other:plug', ['other:plug:css'], function() {
return gulp.src([
path.join(config.paths.src, '/plug/**/*.js'),
])
.pipe($.filter(function(file) {
return file.stat.isFile();
}))
.pipe($.stripDebug())
.pipe($.uglify())
.pipe(gulp.dest(path.join(config.paths.dist, '/plug')));
});
gulp.task('other:plug:css', function() {
return gulp.src([
path.join(config.paths.src, '/plug/**/*'),
path.join('!' + config.paths.src, '/plug/**/*.scss'),
path.join('!' + config.paths.src, '/plug/**/*.js')
])
.pipe(gulp.dest(path.join(config.paths.dist, '/plug')));
});
gulp.task('plug:compass', function() {
return gulp.src(path.join(config.paths.src, '/plug/**/*.scss'))
.pipe(sass().on("error", sass.logError))
.pipe(gulp.dest(path.join(config.paths.src, '/plug')));
});
gulp.task('other:libs:js', function() {
return gulp.src([
path.join(config.paths.src, '/libs/**/*.js')
])
.pipe($.filter(function(file) {
return file.stat.isFile();
}))
.pipe($.stripDebug())
.pipe($.uglify())
.pipe(gulp.dest(path.join(config.paths.dist, '/libs')));
});
gulp.task('other:libs',['other:libs:js'], function() {
return gulp.src([
path.join(config.paths.src, '/libs/**/*'),
path.join('!' + config.paths.src, '/libs/**/*.js')
])
.pipe($.filter(function(file) {
return file.stat.isFile();
}))
.pipe(gulp.dest(path.join(config.paths.dist, '/libs')));
});
gulp.task('other:assets', function() {
return gulp.src([
path.join(config.paths.src, '/app/assets/**/*')
])
.pipe($.filter(function(file) {
return file.stat.isFile();
}))
.pipe(gulp.dest(path.join(config.paths.dist, '/assets')));
});
gulp.task('build', $.sequence('prod-config', ['clean:dist', 'html'], ['images', 'fonts'], 'other:vendor', 'other:plug', 'other:libs', 'other:assets'));
gulp.task('build:e2e', $.sequence('test-config', ['clean:dist', 'html'], ['images', 'fonts'], 'other:vendor', 'other:plug', 'other:libs', 'other:assets'));
'use strict';
var gutil = require('gulp-util');// node require 动态加载gulp-util
exports.paths = {//node export/module.exports(m.e优先级最高) 将函数、变量等导出,以使其它JavaScript脚本通过require()函数引入并使用
src: 'src',
dist: 'dist',
tmp: '.tmp',
e2e: 'test_e2e',
env:{
}
};
exports.modules={
ConstantModuleName:'goku',
templateModuleName:'goku'
}
/**
* [依赖配置]
*/
exports.vendor = {
// 程序启动依赖模块
base: {
source: require('../vendor.base.json'),
dest: 'src/app',
name: 'vendor'
},
// 按需加载模块
app: {
source: require('../vendor.json'),
dest: 'src/vendor'
}
};
/**
* 错误处理
*/
exports.errorHandler = function() {
return function (err) {
gutil.beep();/*# 发出滴声提示*/
gutil.log(err.toString());/*# 输出错误信息*/
}
};
'use strict';
var gulp = require('gulp'),
config = require('./config'),
path = require('path'),
browserSync = require('browser-sync'),
proxyMiddleware = require('http-proxy-middleware'),
browserSyncSpa = require('browser-sync-spa'),
gulpSequence = require('gulp-sequence');
gulp.task('watch', ['inject', 'vendor'], function () {
//监控index.html,和bower.json文件
gulp.watch([path.join(config.paths.src, '/*.html'), 'bower.json', 'vendor.base.json', 'vendor.json'], ['inject']);
//监控CSS文件
gulp.watch([path.join(config.paths.src, '/app/**/*.scss')], function (event) {
if (event.type === 'changed') {
gulp.start('styles:compass');
} else {
gulp.start('inject');
}
});
//监控插件SCSS文件
gulp.watch([path.join(config.paths.src,'/plug/**/*.scss')], function (event) {
if (event.type === 'changed') {
gulp.start('plug:compass');
}
});
//监控JS文件
gulp.watch([path.join(config.paths.src, '/app/**/*.js')], function (event) {
if (event.type === 'changed') {
gulp.start('jshint');
} else {
gulp.start('inject');
}
});
//监控html文件
gulp.watch([
path.join(config.paths.src, '/app/**/*.html')
], function (event) {
browserSync.reload(event.path);
});
});
function browserSyncInit(baseDir, open, port) {
var onProxyRes = function (proxyRes, req, res) {
// 重写set-cookie位置
if (proxyRes.headers['set-cookie']) {
proxyRes.headers['set-cookie'][0] = proxyRes.headers['set-cookie'][0].replace('/', '')
}
}
browserSync.use(browserSyncSpa({
selector: '[ng-app]'
}));
browserSync.init({
startPath: '/',
port: port || 3000,
open: open || false,//决定Browsersync启动时自动打开的网址。默认为“本地” false://停止自动打开浏览器
server: {
baseDir: baseDir,
routes: {
"/bower_components": "bower_components"
},
//使用代理
middleware: [
proxyMiddleware(['/Web'], {onProxyRes: onProxyRes, target: 'http://127.0.0.1:8080', changeOrigin: true,secure: false})
// ,proxyMiddleware(['/automated'], {onProxyRes: onProxyRes, target: 'http://localhost:11205', changeOrigin: true})
]
}
});
}
exports.browserSyncInit = browserSyncInit;
gulp.task('serve', ['dev-config', 'watch'], function () {
browserSyncInit([path.join(config.paths.tmp, '/serve'), config.paths.src], true);
});
gulp.task('serve:dist', ['build'], function () {
browserSyncInit(config.paths.dist, true);
});
\ No newline at end of file
'use strict';
var gulp = require('gulp');
var fs = require('fs');
fs.readdirSync('./gulp').forEach(function (file) {
if((/\.(js|coffee)$/i).test(file)){
require('./gulp/' + file);
}
});
gulp.task('default', ['clean'], function () {
gulp.start('build');
});
\ No newline at end of file
{
"name": "angular",
"version": "1.6.4",
"license": "MIT",
"main": "./angular.js",
"ignore": [],
"dependencies": {},
"homepage": "https://github.com/angular/bower-angular",
"_release": "1.6.4",
"_resolution": {
"type": "version",
"tag": "v1.6.4",
"commit": "097304875bf47c499c7a45711e28f16937dfacfd"
},
"_source": "https://github.com/angular/bower-angular.git",
"_target": ">=1.2.0",
"_originalSource": "angular"
}
\ No newline at end of file
The MIT License (MIT)
Copyright (c) 2016 Angular
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
# packaged angular
This repo is for distribution on `npm` and `bower`. The source for this module is in the
[main AngularJS repo](https://github.com/angular/angular.js).
Please file issues and pull requests against that repo.
## Install
You can install this package either with `npm` or with `bower`.
### npm
```shell
npm install angular
```
Then add a `<script>` to your `index.html`:
```html
<script src="/node_modules/angular/angular.js"></script>
```
Or `require('angular')` from your code.
### bower
```shell
bower install angular
```
Then add a `<script>` to your `index.html`:
```html
<script src="/bower_components/angular/angular.js"></script>
```
## Documentation
Documentation is available on the
[AngularJS docs site](http://docs.angularjs.org/).
## License
The MIT License
Copyright (c) 2010-2015 Google, Inc. http://angularjs.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
/* Include this file in your html if you are using the CSP mode. */
@charset "UTF-8";
[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak],
.ng-cloak, .x-ng-cloak,
.ng-hide:not(.ng-hide-animate) {
display: none !important;
}
ng\:form {
display: block;
}
.ng-animate-shim {
visibility:hidden;
}
.ng-anchor {
position:absolute;
}
此差异已折叠。
此差异已折叠。
{
"name": "angular",
"version": "1.6.4",
"license": "MIT",
"main": "./angular.js",
"ignore": [],
"dependencies": {
}
}
require('./angular');
module.exports = angular;
{
"name": "angular",
"version": "1.6.4",
"description": "HTML enhanced for web apps",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "https://github.com/angular/angular.js.git"
},
"keywords": [
"angular",
"framework",
"browser",
"client-side"
],
"author": "Angular Core Team <angular-core+npm@google.com>",
"license": "MIT",
"bugs": {
"url": "https://github.com/angular/angular.js/issues"
},
"homepage": "http://angularjs.org"
}
0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli 'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli 'rebuild',
1 verbose cli 'node-sass' ]
2 info using npm@3.8.3
3 info using node@v5.10.1
4 info readInstalled object
5 verbose rebuild path, id [ 'E:\\eo\\eoapi\\node_modules\\node-sass', 'node-sass@3.8.0' ]
6 silly rebuild set [ 'E:\\eo\\eoapi\\node_modules\\node-sass' ]
7 info build E:\eo\eoapi\node_modules\node-sass
8 info lifecycle node-sass@3.8.0~preinstall: node-sass@3.8.0
9 silly lifecycle node-sass@3.8.0~preinstall: no script for preinstall, continuing
10 info linkStuff node-sass@3.8.0
11 silly linkStuff node-sass@3.8.0 has E:\eo\eoapi\node_modules as its parent node_modules
12 verbose linkBins node-sass@3.8.0
13 verbose link bins [ { 'node-sass': 'bin/node-sass' },
13 verbose link bins 'E:\\eo\\eoapi\\node_modules\\.bin',
13 verbose link bins false ]
14 verbose linkMans node-sass@3.8.0
15 verbose rebuildBundles node-sass@3.8.0
16 verbose rebuildBundles [ '.bin',
16 verbose rebuildBundles 'gaze',
16 verbose rebuildBundles 'globule',
16 verbose rebuildBundles 'lodash',
16 verbose rebuildBundles 'minimatch',
16 verbose rebuildBundles 'minimist',
16 verbose rebuildBundles 'mkdirp' ]
17 verbose rebuild bundle E:\eo\eoapi\node_modules\node-sass\node_modules\globule
18 info build E:\eo\eoapi\node_modules\node-sass\node_modules\globule
19 info lifecycle globule@1.0.0~preinstall: globule@1.0.0
20 silly lifecycle globule@1.0.0~preinstall: no script for preinstall, continuing
21 info linkStuff globule@1.0.0
22 silly linkStuff globule@1.0.0 has E:\eo\eoapi\node_modules\node-sass\node_modules as its parent node_modules
23 verbose linkBins globule@1.0.0
24 verbose linkMans globule@1.0.0
25 verbose rebuildBundles globule@1.0.0
26 info lifecycle globule@1.0.0~install: globule@1.0.0
27 silly lifecycle globule@1.0.0~install: no script for install, continuing
28 info lifecycle globule@1.0.0~postinstall: globule@1.0.0
29 silly lifecycle globule@1.0.0~postinstall: no script for postinstall, continuing
30 verbose rebuild bundle E:\eo\eoapi\node_modules\node-sass\node_modules\lodash
31 info build E:\eo\eoapi\node_modules\node-sass\node_modules\lodash
32 info lifecycle lodash@4.9.0~preinstall: lodash@4.9.0
33 silly lifecycle lodash@4.9.0~preinstall: no script for preinstall, continuing
34 info linkStuff lodash@4.9.0
35 silly linkStuff lodash@4.9.0 has E:\eo\eoapi\node_modules\node-sass\node_modules as its parent node_modules
36 verbose linkBins lodash@4.9.0
37 verbose linkMans lodash@4.9.0
38 verbose rebuildBundles lodash@4.9.0
39 info lifecycle lodash@4.9.0~install: lodash@4.9.0
40 silly lifecycle lodash@4.9.0~install: no script for install, continuing
41 info lifecycle lodash@4.9.0~postinstall: lodash@4.9.0
42 silly lifecycle lodash@4.9.0~postinstall: no script for postinstall, continuing
43 verbose rebuild bundle E:\eo\eoapi\node_modules\node-sass\node_modules\minimatch
44 info build E:\eo\eoapi\node_modules\node-sass\node_modules\minimatch
45 info lifecycle minimatch@3.0.2~preinstall: minimatch@3.0.2
46 silly lifecycle minimatch@3.0.2~preinstall: no script for preinstall, continuing
47 info linkStuff minimatch@3.0.2
48 silly linkStuff minimatch@3.0.2 has E:\eo\eoapi\node_modules\node-sass\node_modules as its parent node_modules
49 verbose linkBins minimatch@3.0.2
50 verbose linkMans minimatch@3.0.2
51 verbose rebuildBundles minimatch@3.0.2
52 info lifecycle minimatch@3.0.2~install: minimatch@3.0.2
53 silly lifecycle minimatch@3.0.2~install: no script for install, continuing
54 info lifecycle minimatch@3.0.2~postinstall: minimatch@3.0.2
55 silly lifecycle minimatch@3.0.2~postinstall: no script for postinstall, continuing
56 verbose rebuild bundle E:\eo\eoapi\node_modules\node-sass\node_modules\minimist
57 info build E:\eo\eoapi\node_modules\node-sass\node_modules\minimist
58 info lifecycle minimist@0.0.8~preinstall: minimist@0.0.8
59 silly lifecycle minimist@0.0.8~preinstall: no script for preinstall, continuing
60 info linkStuff minimist@0.0.8
61 silly linkStuff minimist@0.0.8 has E:\eo\eoapi\node_modules\node-sass\node_modules as its parent node_modules
62 verbose linkBins minimist@0.0.8
63 verbose linkMans minimist@0.0.8
64 verbose rebuildBundles minimist@0.0.8
65 info lifecycle minimist@0.0.8~install: minimist@0.0.8
66 silly lifecycle minimist@0.0.8~install: no script for install, continuing
67 info lifecycle minimist@0.0.8~postinstall: minimist@0.0.8
68 silly lifecycle minimist@0.0.8~postinstall: no script for postinstall, continuing
69 info lifecycle node-sass@3.8.0~install: node-sass@3.8.0
70 verbose lifecycle node-sass@3.8.0~install: unsafe-perm in lifecycle true
71 verbose lifecycle node-sass@3.8.0~install: PATH: C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin;E:\eo\eoapi\node_modules\node-sass\node_modules\.bin;E:\eo\eoapi\node_modules\.bin;C:\Program Files\nodejs;F:\java\java1.8\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\nodejs\;C:\Program Files (x86)\Git\bin\;C:\Ruby22\bin\;C:\Program Files\Microsoft SQL Server\110\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\;C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\;F:\java\java1.8\bin;F:\java\java1.8\jre\bin;C:\Windows\System32\;C:\Users\lethe\AppData\Roaming\npm;C:\Windows\System32\;
72 verbose lifecycle node-sass@3.8.0~install: CWD: E:\eo\eoapi\node_modules\node-sass
73 silly lifecycle node-sass@3.8.0~install: Args: [ '/d /s /c', 'node scripts/install.js' ]
74 silly lifecycle node-sass@3.8.0~install: Returned: code: 0 signal: null
75 info lifecycle node-sass@3.8.0~postinstall: node-sass@3.8.0
76 verbose lifecycle node-sass@3.8.0~postinstall: unsafe-perm in lifecycle true
77 verbose lifecycle node-sass@3.8.0~postinstall: PATH: C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin;E:\eo\eoapi\node_modules\node-sass\node_modules\.bin;E:\eo\eoapi\node_modules\.bin;C:\Program Files\nodejs;F:\java\java1.8\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\nodejs\;C:\Program Files (x86)\Git\bin\;C:\Ruby22\bin\;C:\Program Files\Microsoft SQL Server\110\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\;C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\;F:\java\java1.8\bin;F:\java\java1.8\jre\bin;C:\Windows\System32\;C:\Users\lethe\AppData\Roaming\npm;C:\Windows\System32\;
78 verbose lifecycle node-sass@3.8.0~postinstall: CWD: E:\eo\eoapi\node_modules\node-sass
79 silly lifecycle node-sass@3.8.0~postinstall: Args: [ '/d /s /c', 'node scripts/build.js' ]
80 silly lifecycle node-sass@3.8.0~postinstall: Returned: code: 1 signal: null
81 info lifecycle node-sass@3.8.0~postinstall: Failed to exec postinstall script
82 verbose stack Error: node-sass@3.8.0 postinstall: `node scripts/build.js`
82 verbose stack Exit status 1
82 verbose stack at EventEmitter.<anonymous> (C:\Program Files\nodejs\node_modules\npm\lib\utils\lifecycle.js:239:16)
82 verbose stack at emitTwo (events.js:100:13)
82 verbose stack at EventEmitter.emit (events.js:185:7)
82 verbose stack at ChildProcess.<anonymous> (C:\Program Files\nodejs\node_modules\npm\lib\utils\spawn.js:24:14)
82 verbose stack at emitTwo (events.js:100:13)
82 verbose stack at ChildProcess.emit (events.js:185:7)
82 verbose stack at maybeClose (internal/child_process.js:850:16)
82 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:215:5)
83 verbose pkgid node-sass@3.8.0
84 verbose cwd E:\eo\eoapi
85 error Windows_NT 10.0.10240
86 error argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "rebuild" "node-sass"
87 error node v5.10.1
88 error npm v3.8.3
89 error code ELIFECYCLE
90 error node-sass@3.8.0 postinstall: `node scripts/build.js`
90 error Exit status 1
91 error Failed at the node-sass@3.8.0 postinstall script 'node scripts/build.js'.
91 error Make sure you have the latest version of node.js and npm installed.
91 error If you do, this is most likely a problem with the node-sass package,
91 error not with npm itself.
91 error Tell the author that this fails on your system:
91 error node scripts/build.js
91 error You can get information on how to open an issue for this project with:
91 error npm bugs node-sass
91 error Or if that isn't available, you can get their info via:
91 error npm owner ls node-sass
91 error There is likely additional logging output above.
92 verbose exit [ 1, true ]
此差异已折叠。
{
"name": "eolinker-system",
"version": "1.0.0",
"description": "https://git.oschina.net/riverLethe/eolinker.git",
"main": "gulpfile.js",
"devDependencies": {
"babel-cli": "^6.0.0",
"browser-sync": "^2.10.0",
"browser-sync-spa": "^1.0.3",
"del": "^2.2.0",
"event-stream": "^3.3.2",
"gulp": "*",
"gulp-angular-filesort": "^1.1.1",
"gulp-angular-templatecache": "^1.8.0",
"gulp-autoprefixer": "^2.3.1",
"gulp-changed": "*",
"gulp-concat": "*",
"gulp-cssnano": "*",
"gulp-csso": "^1.0.1",
"gulp-filter": "^3.0.1",
"gulp-htmlmin": "^1.3.0",
"gulp-imagemin": "^2.4.0",
"gulp-inject": "^3.0.0",
"gulp-jshint": "^2.0.0",
"gulp-load-plugins": "^1.2.0",
"gulp-main-bower-files": "^1.3.1",
"gulp-minify-html": "^1.0.5",
"gulp-ng-annotate": "^1.1.0",
"gulp-ng-config": "^1.2.1",
"gulp-plumber": "^1.0.1",
"gulp-rename": "^1.2.2",
"gulp-replace": "^0.5.4",
"gulp-rev": "^7.0.0",
"gulp-rev-all": "^0.8.22",
"gulp-rev-append": "^0.1.6",
"gulp-rev-replace": "^0.4.3",
"gulp-sass": "^2.1.1",
"gulp-sequence": "^0.4.4",
"gulp-size": "^2.0.0",
"gulp-strip-debug": "^1.1.0",
"gulp-uglify": "*",
"gulp-useref": "^3.0.5",
"gulp-util": "^3.0.7",
"imagemin-pngquant": "^4.2.0",
"jshint": "^2.9.1",
"lodash": "^4.3.0",
"wiredep": "^2.2.2"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "babel src -d lib"
},
"author": "riverLethe",
"license": "ISC",
"dependencies": {
"flv.js": "^1.3.1",
"gulp-compass": "^2.1.0",
"gulp-concat": "^2.6.0",
"gulp-expect-file": "0.0.7",
"gulp-filter": "^3.0.1",
"gulp-flatten": "^0.2.0",
"gulp-if": "^2.0.0",
"gulp-strip-debug": "^1.1.0",
"gulp-sync": "^0.1.4",
"gulp-uglify": "^1.5.3",
"http-proxy-middleware": "^0.11.0",
"socket.io": "^2.0.4"
}
}
(function () {
return angular.module("goku")
.constant("serverUrl", "../")
.constant("isDebug", false)
.constant("assetUrl", "")
.constant("COOKIE_CONFIG", {"path":"/","domain":".goku.com"})
.constant("WEBSOCKET_PORT", 1204);
})();
(function() {
'use strict';
/*
* author:广州银云信息科技有限公司
* 全局定义app模块js
*/
angular.module('goku', [
//thrid part
'ui.router',
'oc.lazyLoad',
'ngResource',
'angular-md5',
'ngCookies',
//custom part
'goku.resource',
'goku.modal',
'goku.constant',
'goku.filter',
'goku.directive',
'goku.service'
])
.config(AppConfig)
.run(AppRun);
AppConfig.$inject = ['$qProvider','$controllerProvider', '$compileProvider', '$filterProvider', '$provide', '$logProvider', '$stateProvider', '$urlRouterProvider', '$locationProvider', '$httpProvider', 'isDebug'];
function AppConfig($qProvider,$controllerProvider, $compileProvider, $filterProvider, $provide, $logProvider, $stateProvider, $urlRouterProvider, $locationProvider, $httpProvider, IsDebug) {
var data = {
fun: {
init: null, //初始化功能函数
param: null, //解析请求参数格式功能函数
}
}
data.fun.param = function(arg) {
var query = '',
name, value, fullSubName, subName, subValue, innerObj, i;
for (name in arg.object) {
value = arg.object[name];
if (value instanceof Array) {
for (i = 0; i < value.length; ++i) {
subValue = value[i];
fullSubName = name + '[' + i + ']';
innerObj = {};
innerObj[fullSubName] = subValue;
query += data.fun.param({ object: innerObj }) + '&';
}
} else if (value instanceof Object) {
for (subName in value) {
subValue = value[subName];
fullSubName = name + '[' + subName + ']';
innerObj = {};
innerObj[fullSubName] = subValue;
query += data.fun.param({ object: innerObj }) + '&';
}
} else if (value !== undefined && value !== null)
query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';
}
return query.length ? query.substr(0, query.length - 1) : query;
};
data.fun.init = (function() {
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
// Override $http service's default transformRequest
$httpProvider.defaults.transformRequest = [function(callback) {
return angular.isObject(callback) && String(callback) !== '[object File]' ? data.fun.param({ object: callback }) : callback;
}];
// Enable log
$logProvider.debugEnabled(IsDebug);
$urlRouterProvider.otherwise('/');
// $qProvider.errorOnUnhandledRejections(false);//注销$q.reject抛出错误配置
})();
}
AppRun.$inject = ['$rootScope', '$state', '$stateParams', '$window', '$templateCache', '$http'];
function AppRun($rootScope, $state, $stateParams, $window, $templateCache, $http) {
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
}
})();
\ No newline at end of file
$defaultFontFamily: "Helvetica Neue",
"Helvetica",
"PingFang SC",
"Hiragino Sans GB",
"Microsoft YaHei",
"Noto Sans CJK SC",
"WenQuanYi Micro Hei",
"Arial",
sans-serif;
$defaultFontSize: 14px;
$defaultColor: #333;
$bodyWidth:1250px;
$buttonDeleteBgColor:#f2f2f2;
$buttonDeleteColor:#a3a3a3;
$buttonDeleteBorderColor:#e5e5e5;
$buttonDeleteFocusBgColor:#D32F2F;
$buttonDeleteFocusBorderColor:#C62828;
$buttonDeleteFocusColor:#fff;
$buttonSuccessBgColor:#4CAF50;
$buttonSuccessColor:#fff;
$buttonSuccessFocusBgColor:#43A047;
$buttonSuccessBorderColor:#43A047;
$buttonSuccessFocusBorderColor:#4CAF50;
$buttonSuccessFocusColor:#fff;
$buttonDefaultBgColor:#f5f5f5;
$buttonDefaultColor:#444;
$buttonDefaultFocusBgColor:#fafafa;
$buttonDefaultFocusColor:#444;
$buttonDefaultBorderColor:rgba(0, 0, 0, .06);
$buttonInfoBgColor:#2196F3;
$buttonInfoColor:#fff;
$buttonInfoFocusBgColor:#1E88E5;
$buttonInfoFocusColor:#fff;
$buttonInfoBorderColor:rgba(0, 0, 0, .21);
$buttonDangerBgColor:#D32F2F;
$buttonDangerColor:#fff;
$buttonDangerBorderColor:#C62828;
$buttonDangerFocusBgColor:#C62828;
$buttonDangerFocusColor:#fff;
$buttonDangerFocusBorderColor:#D32F2F;
$buttonWarningBgColor:#FFB300;
$buttonWarningColor:#fff;
$buttonWarningBorderColor:#FFA000;
$buttonWarningFocusBgColor:#D84A4A;
$buttonWarningFocusColor:#fff;
$buttonWarningFocusBorderColor:#D32F2F;
* {
margin: 0;
padding: 0;
outline: none;
color: inherit;
font-family: inherit;
}
.base-container-div {
position: absolute;
width: 100%;
top: 0;
left: 0;
height: 100%;
}
span,
li,
thead th,
p {
cursor: inherit;
}
th,
td {
text-align: left;
word-break: break-all;
}
ol,
ul {
li {
list-style-type: none;
}
}
body {
position: absolute;
font-family: $defaultFontFamily;
background: #fff;
min-width: $bodyWidth;
width: 100%;
height: 100%;
color: #333;
}
a,
button {
cursor: pointer;
text-decoration: none;
* {
cursor: inherit;
}
input[type=text] {
cursor: text;
}
}
textarea {
resize: none;
}
input::-ms-clear {
display: none;
}
input::-ms-reveal {
display: none;
}
select {
font: small-caption; // font-size: 14px;
padding: 0 5px;
cursor: pointer;
}
.absolute {
position: absolute;
}
.eo-blod {
font-weight: bold;
}
.inline-block {
display: inline-block;
}
.eo-static-hidden {
height: 0;
overflow: hidden;
visibility: hidden;
}
@mixin EO-COLOR ($COLOR, $BORDER-COLOR, $BG-COLOR, $BORDER-TYPE:solid) {
background-color: $BG-COLOR;
border: 1px $BORDER-TYPE $BORDER-COLOR;
color: $COLOR;
* {
color: $COLOR;
}
}
@mixin EO-CHECKBOX ($height:23px, $line-height:23px) {
border: 1px solid #e5e5e5;
@include eo-line($height, $line-height);
width: $height;
font-size: 13px;
margin-right: 4px;
cursor: pointer;
display: inline-block;
text-align: center;
border-radius: 3px;
}
.eo-none-tr {
background-color: #fff;
td {
text-align: center;
height: 150px;
line-height: 150px;
&:hover {
background-color: #fff;
}
}
}
@mixin eo-animation ($animation) {
-ms-animation: $animation;
-moz-animation: $animation;
-webkit-animation: $animation;
animation: $animation;
}
@mixin eo-line ($height, $line-height:$height) {
height: $height;
line-height: $line-height;
}
.pull-left {
float: left;
}
.pull-right {
float: right;
}
.hidden {
display: none;
}
.wrap {
width: $bodyWidth;
height: auto;
margin: 0 auto;
}
.mask {
position: fixed;
z-index: -1;
background: #f8f8f8;
width: 100%;
height: 100%;
top: 0;
left: 0;
}
.eo-sv-handle {
cursor: move;
}
.eo-input {
width: 250px;
height: 33px;
border: 1px solid #ddd;
text-indent: 10px;
background-color: #fff;
border-radius: 3px;
color: #333;
&:focus {
border-color: #43A047;
}
}
.eo-radio {
font-size: 14px;
}
.eo-checkbox {
border: 1px solid #dcdcdc;
@include eo-line(23px);
width: 23px;
font-size: 13px;
margin-right: 4px;
cursor: pointer;
display: inline-block;
text-align: center;
border-radius: 3px;
}
.eo-link {
color: #2196F3;
}
@mixin eo-button ($bgColor, $color, $borderColor) {
background-color: $bgColor;
color: $color;
border: 1px solid $borderColor;
@include eo-line(32px);
cursor: pointer;
border-radius: 3px;
}
.eo-button-delete {
@include eo-button($buttonDeleteBgColor, $buttonDeleteColor, $buttonDeleteBgColor);
&:hover {
@include eo-button($buttonDeleteFocusBgColor, $buttonDeleteFocusColor, $buttonDeleteFocusBgColor);
}
}
.eo-button-success {
@include eo-button($buttonSuccessBgColor, $buttonSuccessColor, $buttonSuccessBgColor);
&:hover {
@include eo-button($buttonSuccessFocusBgColor, $buttonSuccessFocusColor, $buttonSuccessFocusBgColor);
}
}
.eo-button-default {
@include eo-button($buttonDefaultBgColor, $buttonDefaultColor, $buttonDefaultBorderColor);
&:hover,
&:focus,
&:active {
@include eo-button($buttonDefaultFocusBgColor, $buttonDefaultFocusColor, $buttonDefaultBorderColor);
}
}
.eo-button-info {
@include eo-button($buttonInfoBgColor, $buttonInfoColor, $buttonInfoBgColor);
&:hover,
&:focus,
&:active {
@include eo-button($buttonInfoFocusBgColor, $buttonInfoFocusColor, $buttonInfoFocusBgColor);
}
}
.eo-button-warning {
@include eo-button(#FF5722, $buttonDangerColor,#FF5722);
&:hover,
&:focus,
&:active {
@include eo-button(#f44336, $buttonDangerFocusColor, #f44336);
}
}
.eo-button-danger {
@include eo-button($buttonDangerBgColor, $buttonDangerColor, $buttonDangerBgColor);
&:hover,
&:focus,
&:active {
@include eo-button($buttonDangerFocusBgColor, $buttonDangerFocusColor, $buttonDangerFocusBgColor);
}
}
@mixin eo-color ($color, $borderColor) {
color: #fff;
background-color: $color;
border: 1px solid $borderColor;
border-radius: 3px;
* {
color: #fff;
}
}
.eo-color-default {
@include eo-color(#2196F3, #1E88E5);
}
.eo-color-success {
@include eo-color($buttonSuccessBgColor, $buttonSuccessBorderColor);
}
.eo-color-warning {
@include eo-color(#FFB300, #FFA000);
}
.eo-color-danger {
@include eo-color(#D32F2F, #C62828);
}
.eo-color-disable {
@include eo-color(#333, #000);
}
.eo-color-info {
@include eo-color(rgb(153, 153, 153), rgb(119, 119, 119));
}
.eo-color-others {
@include eo-color(#795548, #6D4C41);
}
.eo-color-options {
@include eo-color(#607D8B, #546E7A);
}
.eo-color-unuse {
@include eo-color(#FF5722, #fff);
}
.eo-status-default {
color: rgb(39, 107, 225);
* {
color: rgb(39, 107, 225);
}
}
.eo-status-success {
color: $buttonSuccessBgColor;
* {
color: $buttonSuccessBgColor;
}
}
.eo-status-warning {
color: #FF9800;
* {
color: #FF9800;
}
}
.eo-status-error {
color: $buttonDangerBgColor;
* {
color: $buttonDangerBgColor;
}
}
.eo-status-danger {
color: #FF5722;
* {
color: #FF5722;
}
}
.eo-status-tips {
color: #999;
* {
color: #999;
}
}
//动画
@keyframes flicker {
0% {
border: 1px solid #ddd;
}
50% {
border: 1px solid $buttonSuccessBorderColor;
}
100% {
border: 1px solid #ddd;
}
}
.eo-copy {
@include eo-animation(flicker 1s);
}
//modal
@mixin eo-modal-color ($color, $bgColor) {
background-color: $bgColor;
border: 1px solid $color;
span {
color: $color;
.iconfont {
color: $color;
}
}
}
.eo-absolute {
position: absolute;
}
.opacity-none {
opacity: 0;
}
.eo-had-input-error {
input {
border: 1px solid #d85030;
}
}
.eo-input-error {
border: 1px solid #d85030;
&:focus {
border-color: #d85030;
}
}
.eo-input-success {
border: 1px solid $buttonSuccessBgColor;
}
//popover
.popover {
position: absolute;
z-index: 2;
table {
border-spacing: 0;
}
}
.arrow {
border-style: solid;
border-width: 5px 10px 5px 0;
border-color: transparent #333 transparent transparent;
}
.popover-inner {
background-color: #333;
padding: 5px 10px;
min-width: 150px;
max-width: 215px;
.popover-content {
color: #fff;
font-size: 12px;
line-height: 20px;
}
}
//百分比-数字
@mixin eo-height ($percent, $height) {
height: -webkit-calc(#{$percent} - #{$height});
height: -ms-calc(#{$percent} - #{$height});
height: -moz-calc(#{$percent} - #{$height});
height: calc(#{$percent} - #{$height});
}
@mixin eo-min-height ($percent, $height) {
min-height: -webkit-calc(#{$percent} - #{$height});
min-height: -ms-calc(#{$percent} - #{$height});
min-height: -moz-calc(#{$percent} - #{$height});
min-height: calc(#{$percent} - #{$height});
}
@mixin eo-max-height ($percent, $height) {
max-height: -webkit-calc(#{$percent} - #{$height});
max-height: -ms-calc(#{$percent} - #{$height});
max-height: -moz-calc(#{$percent} - #{$height});
max-height: calc(#{$percent} - #{$height});
}
@mixin eo-width ($percent, $width) {
width: -webkit-calc(#{$percent} - #{$width});
width: -ms-calc(#{$percent} - #{$width});
width: -moz-calc(#{$percent} - #{$width});
width: calc(#{$percent} - #{$width});
}
@mixin eo-max-width ($percent, $width) {
max-width: -webkit-calc(#{$percent} - #{$width});
max-width: -ms-calc(#{$percent} - #{$width});
max-width: -moz-calc(#{$percent} - #{$width});
max-width: calc(#{$percent} - #{$width});
}
@mixin eo-left ($percent, $left) {
left: -webkit-calc(#{$percent} - #{$left});
left: -ms-calc(#{$percent} - #{$left});
left: -moz-calc(#{$percent} - #{$left});
left: calc(#{$percent} - #{$left});
}
//placeholder
input::-webkit-input-placeholder,
textarea::-webkit-input-placeholder {
color: #ccc;
}
input:-moz-placeholder,
textarea:-moz-placeholder {
color: #ccc;
}
input::-moz-placeholder,
textarea::-moz-placeholder {
color: #ccc;
}
input:-ms-input-placeholder,
textarea:-ms-input-placeholder {
color: #ccc;
}
//scrollbar
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
/* Track */
::-webkit-scrollbar-track {
background: #fff;
}
/* Handle */
::-webkit-scrollbar-thumb {
-webkit-border-radius: 10px;
border-radius: 10px;
background: #ccc; //-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
}
::-webkit-scrollbar-thumb:window-inactive {
background: #ddd;
}
/*分页*/
.pageFooter {
text-align: center;
.pagination>li>a,
.pagination>li>span {
color: $buttonDefaultFocusColor; //height: 34px;
width: 35px;
}
.pagination>.disabled>a {
color: #e5e5e5;
cursor: default;
}
.pagination-prev,
.pagination-next {
border-radius: 3px;
}
.pagination>.active,
.pagination>.active:hover,
.pagination>.active:focus,
.pagination>.active,
.pagination>.active:hover,
.pagination>.active:focus {
background-color: $buttonSuccessFocusBgColor;
a {
color: #fff;
}
}
.pagination-jump {
margin: 20px 0;
color: $buttonDefaultFocusColor;
margin-top: 37px;
margin-left: 10px;
display: inline-block;
li {
@include eo-line(37px);
display: inline-block;
input {
@include eo-line(33px);
margin: 0 8px;
width: 55px;
border: 1px solid #dfdfdf;
background-color: #fff;
}
button {
width: 50px;
}
input {
text-indent: 1em;
}
}
}
.pagination-sm {
margin: 25px;
display: inline-block;
li {
width: 35px;
@include eo-line(35px, 36px);
background-color: #fff;
border: 1px solid $buttonDefaultBorderColor;
border-left: none;
text-align: center;
display: inline-flex;
}
.pagination-prev {
margin-right: 10px;
border-left: 1px solid $buttonDefaultBorderColor;
}
.pagination-next {
margin-left: 10px;
border-left: 1px solid $buttonDefaultBorderColor;
}
li:nth-child(2) {
border-left: 1px solid $buttonDefaultBorderColor;
}
}
.first-page {
border-radius: 3px 0 0 3px;
}
.last-page {
border-radius: 0 3px 3px 0;
}
.only-page {
border-radius: 3px;
}
}
//wangeditor
.wangEditor-container {
.wangEditor-txt {
ol {
li {
list-style-type: decimal;
}
}
ul {
li {
list-style-type: initial;
}
}
* {
white-space: pre-wrap;
}
}
}
\ No newline at end of file
(function() {
'use strict';
/*
* author:广州银云信息科技有限公司
* 复制input值到剪贴板js(欠缺及需优化地:样式需要自己个项目调控,无法做到自定义样式模板)
*/
angular.module('goku')
.component('copyCommonComponent', {
template: '<inner-html-common-directive html="{{$ctrl.data.info.html}}"></inner-html-common-directive>',
bindings: {
copyModel: '<',
buttonHtml: '@',
isPopup: '@',
switchTemplet: '@'
},
controller: indexController
});
indexController.$inject = ['$rootScope', '$scope'];
function indexController($rootScope, $scope) {
var vm = this;
var data = {
info: {
templet: {
button: '<button class="eo-button-default copy-common-component-' + $scope.$id + '" data-clipboard-text="{{$ctrl.copyModel}}"><span class=\"iconfont icon-copy\" ><\/span>{{$ctrl.data.info.clipboard.text}}</button>',
input: '<input type="text" id="copy-common-component-' + $scope.$id + '" name="link" value="{{$ctrl.copyModel}}" class="eo-input copy-common-component-' + $scope.$id + '" data-clipboard-action="copy" data-clipboard-target="#copy-common-component-' + $scope.$id + '" ng-class="{\'eo-copy\':($ctrl.data.info.clipboard.success)&&($ctrl.data.info.clipboard.isClick)}" data-ng-click="$ctrl.data.fun.click()" readonly>' + '<label for="copy-common-component-' + $scope.$id + '" class="pull-right copy-tips " ng-class="{\'copy-success\':($ctrl.data.info.clipboard.success)&&($ctrl.data.info.clipboard.isClick),\'copy-error\':(!$ctrl.data.info.clipboard.success)&&($ctrl.data.info.clipboard.isClick)}">' + '{{$ctrl.data.info.clipboard.text}}' + '</label>',
textarea: '<textarea id="copy-common-component-' + $scope.$id + '" readonly>{{$ctrl.copyModel}}</textarea><button data-clipboard-action="copy" data-clipboard-target="#copy-common-component-' + $scope.$id + '">{{$ctrl.data.info.clipboard.text}}</button>'
},
clipboard: null
},
fun: {
init: null, //初始化功能函数
reset: null, //重置功能函数
$destory: null, //页面销毁功能函数
}
}
vm.data = {
info: {
html: null,
clipboard: {
isClick: false,
success: false,
text: vm.buttonHtml || '点击复制' //显示button文本(默认文本'点击复制')
}
},
fun: {
click: null, //单击功能函数
}
}
data.fun.reset = function(arg) {
data.info.clipboard = new Clipboard(arg.class);
data.info.clipboard.on('success', function(_default) {
vm.data.info.clipboard.success = true;
vm.data.info.clipboard.isClick = true;
console.info('Text:', _default.text);
if (vm.isPopup) { //成功或者失败是否以弹窗形式提醒
$rootScope.InfoModal("已复制到剪贴板", 'success');
} else {
vm.data.info.clipboard.text = '复制成功';
}
$scope.$digest();
_default.clearSelection();
});
data.info.clipboard.on('error', function(_default) {
vm.data.info.clipboard.success = false;
vm.data.info.clipboard.isClick = true;
console.info('Text:', _default.text);
if (vm.isPopup) {
$rootScope.InfoModal("复制到剪贴板失败", 'error');
} else {
vm.data.info.clipboard.text = '复制失败';
}
$scope.$digest();
});
}
vm.data.fun.click = function() {
vm.data.info.clipboard.isClick = false;
}
data.fun.$destroy = function() {
data.info.clipboard.destroy();
}
vm.$onInit = function() {
switch (vm.switchTemplet) { //选择模板(0:button模板,1:input模板,2:textarea模板,默认input模板)
case '0':
{
vm.data.info.html = data.info.templet.button;
break;
}
case '1':
{
vm.data.info.html = data.info.templet.input;
break;
}
case '2':
{
vm.data.info.html = data.info.templet.textarea;
break;
}
default:
{
vm.data.info.html = data.info.templet.input;
break;
}
}
$scope.$on('$destroy', data.fun.$destroy);
data.fun.reset({
class: ('.copy-common-component-' + $scope.$id)
});
}
}
})();
@import './group/index.scss';
@import './sidebar/index.scss';
@import './list/default/index.scss';
@import './loading/index.scss';
@import './menu/index.scss';
@import './list/require/index.scss';
\ No newline at end of file
<article class="first-level-article">
<table>
<thead>
<tr>
<th ng-style="item.keyStyle" ng-repeat="item in $ctrl.mainObject.item.default">{{item.key}}</th>
<th ng-style="$ctrl.mainObject.item.fun.keyStyle" ng-if="$ctrl.mainObject.item.fun&&(!$ctrl.mainObject.baseInfo.operate||($ctrl.mainObject.baseInfo.operate&&$ctrl.authorityObject.operate))">操作</th>
</tr>
</thead>
<tbody inner-html-common-directive html="{{$ctrl.data.info.html}}">
<tr class="eo-none-tr" ng-if="$ctrl.list.length==0">
<td colspan="{{$ctrl.mainObject.baseInfo.colspan}}">{{$ctrl.mainObject.baseInfo.warning||'尚无任何内容'}}</td>
</tr>
</tbody>
</table>
</article>
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册