http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/bower_components/spin.js/spin.js ---------------------------------------------------------------------- diff --git a/griffin-ui/bower_components/spin.js/spin.js b/griffin-ui/bower_components/spin.js/spin.js new file mode 100644 index 0000000..1a3258d --- /dev/null +++ b/griffin-ui/bower_components/spin.js/spin.js @@ -0,0 +1,377 @@ +/** + * Copyright (c) 2011-2014 Felix Gnass + * Licensed under the MIT license + * http://spin.js.org/ + * + * Example: + var opts = { + lines: 12 // The number of lines to draw + , length: 7 // The length of each line + , width: 5 // The line thickness + , radius: 10 // The radius of the inner circle + , scale: 1.0 // Scales overall size of the spinner + , corners: 1 // Roundness (0..1) + , color: '#000' // #rgb or #rrggbb + , opacity: 1/4 // Opacity of the lines + , rotate: 0 // Rotation offset + , direction: 1 // 1: clockwise, -1: counterclockwise + , speed: 1 // Rounds per second + , trail: 100 // Afterglow percentage + , fps: 20 // Frames per second when using setTimeout() + , zIndex: 2e9 // Use a high z-index by default + , className: 'spinner' // CSS class to assign to the element + , top: '50%' // center vertically + , left: '50%' // center horizontally + , shadow: false // Whether to render a shadow + , hwaccel: false // Whether to use hardware acceleration (might be buggy) + , position: 'absolute' // Element positioning + } + var target = document.getElementById('foo') + var spinner = new Spinner(opts).spin(target) + */ +;(function (root, factory) { + + /* CommonJS */ + if (typeof module == 'object' && module.exports) module.exports = factory() + + /* AMD module */ + else if (typeof define == 'function' && define.amd) define(factory) + + /* Browser global */ + else root.Spinner = factory() +}(this, function () { + "use strict" + + var prefixes = ['webkit', 'Moz', 'ms', 'O'] /* Vendor prefixes */ + , animations = {} /* Animation rules keyed by their name */ + , useCssAnimations /* Whether to use CSS animations or setTimeout */ + , sheet /* A stylesheet to hold the @keyframe or VML rules. */ + + /** + * Utility function to create elements. If no tag name is given, + * a DIV is created. Optionally properties can be passed. + */ + function createEl (tag, prop) { + var el = document.createElement(tag || 'div') + , n + + for (n in prop) el[n] = prop[n] + return el + } + + /** + * Appends children and returns the parent. + */ + function ins (parent /* child1, child2, ...*/) { + for (var i = 1, n = arguments.length; i < n; i++) { + parent.appendChild(arguments[i]) + } + + return parent + } + + /** + * Creates an opacity keyframe animation rule and returns its name. + * Since most mobile Webkits have timing issues with animation-delay, + * we create separate rules for each line/segment. + */ + function addAnimation (alpha, trail, i, lines) { + var name = ['opacity', trail, ~~(alpha * 100), i, lines].join('-') + , start = 0.01 + i/lines * 100 + , z = Math.max(1 - (1-alpha) / trail * (100-start), alpha) + , prefix = useCssAnimations.substring(0, useCssAnimations.indexOf('Animation')).toLowerCase() + , pre = prefix && '-' + prefix + '-' || '' + + if (!animations[name]) { + sheet.insertRule( + '@' + pre + 'keyframes ' + name + '{' + + '0%{opacity:' + z + '}' + + start + '%{opacity:' + alpha + '}' + + (start+0.01) + '%{opacity:1}' + + (start+trail) % 100 + '%{opacity:' + alpha + '}' + + '100%{opacity:' + z + '}' + + '}', sheet.cssRules.length) + + animations[name] = 1 + } + + return name + } + + /** + * Tries various vendor prefixes and returns the first supported property. + */ + function vendor (el, prop) { + var s = el.style + , pp + , i + + prop = prop.charAt(0).toUpperCase() + prop.slice(1) + if (s[prop] !== undefined) return prop + for (i = 0; i < prefixes.length; i++) { + pp = prefixes[i]+prop + if (s[pp] !== undefined) return pp + } + } + + /** + * Sets multiple style properties at once. + */ + function css (el, prop) { + for (var n in prop) { + el.style[vendor(el, n) || n] = prop[n] + } + + return el + } + + /** + * Fills in default values. + */ + function merge (obj) { + for (var i = 1; i < arguments.length; i++) { + var def = arguments[i] + for (var n in def) { + if (obj[n] === undefined) obj[n] = def[n] + } + } + return obj + } + + /** + * Returns the line color from the given string or array. + */ + function getColor (color, idx) { + return typeof color == 'string' ? color : color[idx % color.length] + } + + // Built-in defaults + + var defaults = { + lines: 12 // The number of lines to draw + , length: 7 // The length of each line + , width: 5 // The line thickness + , radius: 10 // The radius of the inner circle + , scale: 1.0 // Scales overall size of the spinner + , corners: 1 // Roundness (0..1) + , color: '#000' // #rgb or #rrggbb + , opacity: 1/4 // Opacity of the lines + , rotate: 0 // Rotation offset + , direction: 1 // 1: clockwise, -1: counterclockwise + , speed: 1 // Rounds per second + , trail: 100 // Afterglow percentage + , fps: 20 // Frames per second when using setTimeout() + , zIndex: 2e9 // Use a high z-index by default + , className: 'spinner' // CSS class to assign to the element + , top: '50%' // center vertically + , left: '50%' // center horizontally + , shadow: false // Whether to render a shadow + , hwaccel: false // Whether to use hardware acceleration (might be buggy) + , position: 'absolute' // Element positioning + } + + /** The constructor */ + function Spinner (o) { + this.opts = merge(o || {}, Spinner.defaults, defaults) + } + + // Global defaults that override the built-ins: + Spinner.defaults = {} + + merge(Spinner.prototype, { + /** + * Adds the spinner to the given target element. If this instance is already + * spinning, it is automatically removed from its previous target b calling + * stop() internally. + */ + spin: function (target) { + this.stop() + + var self = this + , o = self.opts + , el = self.el = createEl(null, {className: o.className}) + + css(el, { + position: o.position + , width: 0 + , zIndex: o.zIndex + , left: o.left + , top: o.top + }) + + if (target) { + target.insertBefore(el, target.firstChild || null) + } + + el.setAttribute('role', 'progressbar') + self.lines(el, self.opts) + + if (!useCssAnimations) { + // No CSS animation support, use setTimeout() instead + var i = 0 + , start = (o.lines - 1) * (1 - o.direction) / 2 + , alpha + , fps = o.fps + , f = fps / o.speed + , ostep = (1 - o.opacity) / (f * o.trail / 100) + , astep = f / o.lines + + ;(function anim () { + i++ + for (var j = 0; j < o.lines; j++) { + alpha = Math.max(1 - (i + (o.lines - j) * astep) % f * ostep, o.opacity) + + self.opacity(el, j * o.direction + start, alpha, o) + } + self.timeout = self.el && setTimeout(anim, ~~(1000 / fps)) + })() + } + return self + } + + /** + * Stops and removes the Spinner. + */ + , stop: function () { + var el = this.el + if (el) { + clearTimeout(this.timeout) + if (el.parentNode) el.parentNode.removeChild(el) + this.el = undefined + } + return this + } + + /** + * Internal method that draws the individual lines. Will be overwritten + * in VML fallback mode below. + */ + , lines: function (el, o) { + var i = 0 + , start = (o.lines - 1) * (1 - o.direction) / 2 + , seg + + function fill (color, shadow) { + return css(createEl(), { + position: 'absolute' + , width: o.scale * (o.length + o.width) + 'px' + , height: o.scale * o.width + 'px' + , background: color + , boxShadow: shadow + , transformOrigin: 'left' + , transform: 'rotate(' + ~~(360/o.lines*i + o.rotate) + 'deg) translate(' + o.scale*o.radius + 'px' + ',0)' + , borderRadius: (o.corners * o.scale * o.width >> 1) + 'px' + }) + } + + for (; i < o.lines; i++) { + seg = css(createEl(), { + position: 'absolute' + , top: 1 + ~(o.scale * o.width / 2) + 'px' + , transform: o.hwaccel ? 'translate3d(0,0,0)' : '' + , opacity: o.opacity + , animation: useCssAnimations && addAnimation(o.opacity, o.trail, start + i * o.direction, o.lines) + ' ' + 1 / o.speed + 's linear infinite' + }) + + if (o.shadow) ins(seg, css(fill('#000', '0 0 4px #000'), {top: '2px'})) + ins(el, ins(seg, fill(getColor(o.color, i), '0 0 1px rgba(0,0,0,.1)'))) + } + return el + } + + /** + * Internal method that adjusts the opacity of a single line. + * Will be overwritten in VML fallback mode below. + */ + , opacity: function (el, i, val) { + if (i < el.childNodes.length) el.childNodes[i].style.opacity = val + } + + }) + + + function initVML () { + + /* Utility function to create a VML tag */ + function vml (tag, attr) { + return createEl('<' + tag + ' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">', attr) + } + + // No CSS transforms but VML support, add a CSS rule for VML elements: + sheet.addRule('.spin-vml', 'behavior:url(#default#VML)') + + Spinner.prototype.lines = function (el, o) { + var r = o.scale * (o.length + o.width) + , s = o.scale * 2 * r + + function grp () { + return css( + vml('group', { + coordsize: s + ' ' + s + , coordorigin: -r + ' ' + -r + }) + , { width: s, height: s } + ) + } + + var margin = -(o.width + o.length) * o.scale * 2 + 'px' + , g = css(grp(), {position: 'absolute', top: margin, left: margin}) + , i + + function seg (i, dx, filter) { + ins( + g + , ins( + css(grp(), {rotation: 360 / o.lines * i + 'deg', left: ~~dx}) + , ins( + css( + vml('roundrect', {arcsize: o.corners}) + , { width: r + , height: o.scale * o.width + , left: o.scale * o.radius + , top: -o.scale * o.width >> 1 + , filter: filter + } + ) + , vml('fill', {color: getColor(o.color, i), opacity: o.opacity}) + , vml('stroke', {opacity: 0}) // transparent stroke to fix color bleeding upon opacity change + ) + ) + ) + } + + if (o.shadow) + for (i = 1; i <= o.lines; i++) { + seg(i, -2, 'progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)') + } + + for (i = 1; i <= o.lines; i++) seg(i) + return ins(el, g) + } + + Spinner.prototype.opacity = function (el, i, val, o) { + var c = el.firstChild + o = o.shadow && o.lines || 0 + if (c && i + o < c.childNodes.length) { + c = c.childNodes[i + o]; c = c && c.firstChild; c = c && c.firstChild + if (c) c.opacity = val + } + } + } + + if (typeof document !== 'undefined') { + sheet = (function () { + var el = createEl('style', {type : 'text/css'}) + ins(document.getElementsByTagName('head')[0], el) + return el.sheet || el.styleSheet + }()) + + var probe = css(createEl('group'), {behavior: 'url(#default#VML)'}) + + if (!vendor(probe, 'transform') && probe.adj) initVML() + else useCssAnimations = vendor(probe, 'animation') + } + + return Spinner + +}));
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/bower_components/spin.js/spin.min.js ---------------------------------------------------------------------- diff --git a/griffin-ui/bower_components/spin.js/spin.min.js b/griffin-ui/bower_components/spin.js/spin.min.js new file mode 100644 index 0000000..bd3ae4f --- /dev/null +++ b/griffin-ui/bower_components/spin.js/spin.min.js @@ -0,0 +1,2 @@ +// http://spin.js.org/#v2.3.2 +!function(a,b){"object"==typeof module&&module.exports?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Spinner=b()}(this,function(){"use strict";function a(a,b){var c,d=document.createElement(a||"div");for(c in b)d[c]=b[c];return d}function b(a){for(var b=1,c=arguments.length;c>b;b++)a.appendChild(arguments[b]);return a}function c(a,b,c,d){var e=["opacity",b,~~(100*a),c,d].join("-"),f=.01+c/d*100,g=Math.max(1-(1-a)/b*(100-f),a),h=j.substring(0,j.indexOf("Animation")).toLowerCase(),i=h&&"-"+h+"-"||"";return m[e]||(k.insertRule("@"+i+"keyframes "+e+"{0%{opacity:"+g+"}"+f+"%{opacity:"+a+"}"+(f+.01)+"%{opacity:1}"+(f+b)%100+"%{opacity:"+a+"}100%{opacity:"+g+"}}",k.cssRules.length),m[e]=1),e}function d(a,b){var c,d,e=a.style;if(b=b.charAt(0).toUpperCase()+b.slice(1),void 0!==e[b])return b;for(d=0;d<l.length;d++)if(c=l[d]+b,void 0!==e[c])return c}function e(a,b){for(var c in b)a.style[d(a,c)||c]=b[c];return a}function f(a){for(var b=1;b<arguments.length;b++){var c=arg uments[b];for(var d in c)void 0===a[d]&&(a[d]=c[d])}return a}function g(a,b){return"string"==typeof a?a:a[b%a.length]}function h(a){this.opts=f(a||{},h.defaults,n)}function i(){function c(b,c){return a("<"+b+' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">',c)}k.addRule(".spin-vml","behavior:url(#default#VML)"),h.prototype.lines=function(a,d){function f(){return e(c("group",{coordsize:k+" "+k,coordorigin:-j+" "+-j}),{width:k,height:k})}function h(a,h,i){b(m,b(e(f(),{rotation:360/d.lines*a+"deg",left:~~h}),b(e(c("roundrect",{arcsize:d.corners}),{width:j,height:d.scale*d.width,left:d.scale*d.radius,top:-d.scale*d.width>>1,filter:i}),c("fill",{color:g(d.color,a),opacity:d.opacity}),c("stroke",{opacity:0}))))}var i,j=d.scale*(d.length+d.width),k=2*d.scale*j,l=-(d.width+d.length)*d.scale*2+"px",m=e(f(),{position:"absolute",top:l,left:l});if(d.shadow)for(i=1;i<=d.lines;i++)h(i,-2,"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");for(i=1;i<=d.l ines;i++)h(i);return b(a,m)},h.prototype.opacity=function(a,b,c,d){var e=a.firstChild;d=d.shadow&&d.lines||0,e&&b+d<e.childNodes.length&&(e=e.childNodes[b+d],e=e&&e.firstChild,e=e&&e.firstChild,e&&(e.opacity=c))}}var j,k,l=["webkit","Moz","ms","O"],m={},n={lines:12,length:7,width:5,radius:10,scale:1,corners:1,color:"#000",opacity:.25,rotate:0,direction:1,speed:1,trail:100,fps:20,zIndex:2e9,className:"spinner",top:"50%",left:"50%",shadow:!1,hwaccel:!1,position:"absolute"};if(h.defaults={},f(h.prototype,{spin:function(b){this.stop();var c=this,d=c.opts,f=c.el=a(null,{className:d.className});if(e(f,{position:d.position,width:0,zIndex:d.zIndex,left:d.left,top:d.top}),b&&b.insertBefore(f,b.firstChild||null),f.setAttribute("role","progressbar"),c.lines(f,c.opts),!j){var g,h=0,i=(d.lines-1)*(1-d.direction)/2,k=d.fps,l=k/d.speed,m=(1-d.opacity)/(l*d.trail/100),n=l/d.lines;!function o(){h++;for(var a=0;a<d.lines;a++)g=Math.max(1-(h+(d.lines-a)*n)%l*m,d.opacity),c.opacity(f,a*d.direction+i,g, d);c.timeout=c.el&&setTimeout(o,~~(1e3/k))}()}return c},stop:function(){var a=this.el;return a&&(clearTimeout(this.timeout),a.parentNode&&a.parentNode.removeChild(a),this.el=void 0),this},lines:function(d,f){function h(b,c){return e(a(),{position:"absolute",width:f.scale*(f.length+f.width)+"px",height:f.scale*f.width+"px",background:b,boxShadow:c,transformOrigin:"left",transform:"rotate("+~~(360/f.lines*k+f.rotate)+"deg) translate("+f.scale*f.radius+"px,0)",borderRadius:(f.corners*f.scale*f.width>>1)+"px"})}for(var i,k=0,l=(f.lines-1)*(1-f.direction)/2;k<f.lines;k++)i=e(a(),{position:"absolute",top:1+~(f.scale*f.width/2)+"px",transform:f.hwaccel?"translate3d(0,0,0)":"",opacity:f.opacity,animation:j&&c(f.opacity,f.trail,l+k*f.direction,f.lines)+" "+1/f.speed+"s linear infinite"}),f.shadow&&b(i,e(h("#000","0 0 4px #000"),{top:"2px"})),b(d,b(i,h(g(f.color,k),"0 0 1px rgba(0,0,0,.1)")));return d},opacity:function(a,b,c){b<a.childNodes.length&&(a.childNodes[b].style.opacity=c)}}),"undefi ned"!=typeof document){k=function(){var c=a("style",{type:"text/css"});return b(document.getElementsByTagName("head")[0],c),c.sheet||c.styleSheet}();var o=e(a("group"),{behavior:"url(#default#VML)"});!d(o,"transform")&&o.adj?i():j=d(o,"animation")}return h}); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/build.xml ---------------------------------------------------------------------- diff --git a/griffin-ui/build.xml b/griffin-ui/build.xml new file mode 100644 index 0000000..b9f8282 --- /dev/null +++ b/griffin-ui/build.xml @@ -0,0 +1,28 @@ +<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> + <id>resources</id> + <formats> + <format>zip</format> + </formats> + <fileSets> + <fileSet> + <directory>${project.basedir}</directory><!-- + <includes> + + <include>apidocs/**</include> + <include>bower_components/**</include> + + <include>**/**</include> + </includes> + --> + <excludes> + <exclude>**/node_modules/**</exclude> + <exclude>**/tests/**</exclude> + <exclude>target/**</exclude> + <exclude>pom.xml</exclude> + <exclude>build.xml</exclude> + </excludes> + <useDefaultExcludes>true</useDefaultExcludes> + </fileSet> + + </fileSets> +</assembly> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/css/main.css ---------------------------------------------------------------------- diff --git a/griffin-ui/css/main.css b/griffin-ui/css/main.css new file mode 100644 index 0000000..745b483 --- /dev/null +++ b/griffin-ui/css/main.css @@ -0,0 +1,1053 @@ +/*! + * BLOCKS - Responsive Dashboard Theme + * + * Hey! Thanks for download this theme! + * This bootstrap theme is totally free. You can edit, share, distribute, use and whatever you want. + * Credits are always appreciated. + * Please, feel free to contact me if you have any questions regarding this theme. + * + * + * Copyright 2013 + * Created by: Carlos Alvarez + * URL: http://Alvarez.is + * Designed and built based on Twitter Bootstrap. + */ + + /* + Copyright (c) 2016 eBay Software Foundation. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +/* COLOR REFERENCE +- #1f1f1f (Background Color) +- #3d3d3d (Dash-unit and half-unit Section) +- #262626 (Footer) +- #fa1d2d (Red - Used in selectors, parragraphs, bars and other) +- #b2c831 (Green - Used in titles, badges, bars and other) +- #bdbdbd & #fff (Font colors) +*/ + + +/**********BASE CONFIGURATIONS**********/ +body { + background:#1f1f1f; + font-family: 'Open Sans', sans-serif; + height: 100%; +} + +html{ + height: 100%; +} + +h1 { +font-family: 'Raleway', sans-serif;} + +h3,h4 , h5 { + font-family: 'Open Sans', sans-serif; + font-weight:lighter; +} + +h2{ + font-size:22px; +} + +h3 { + font-size:46px; + color:#b2c831 +} + +h5 { + color:#b2c831; + margin-left:5px; +} + +/***********BLOCKS & WRAPS***********/ + +/*--- Dash Unit / Used in Dashboard page ---*/ +.dash-unit { + margin-bottom: 30px; + padding-bottom:10px; + border: 1px solid #383737; + background-image:url('../img/sep-half.png'); + background-color: #3d3d3d; + color:white; + height:290px; +} + +.dash-unit:hover { + background-color: #4f4f4f; + -moz-box-shadow: 3px 3px 2px 0px #151515; + -webkit-box-shadow: 3px 3px 2px 0px #151515; + box-shadow: 3px 3px 2px 0px #151515; + +} + +.dash-unit dtitle { + font-size:11px; + text-transform:uppercase; + color:#ffffff; + margin:8px; + padding:0px; + height:inherit + } + +.dash-unit hr { + border: 0; + border-top: 1px solid #151515; + border-top-style: dashed; + margin-top:3px; +} + +.dash-unit h1 { + font-family: 'Raleway', sans-serif; + font-weight:300; + font-size: 20px; + line-height: 2px; + letter-spacing: 0px; + color: #ffffff; + padding-top:10px; + padding-left:5px; + margin-top:2px; + text-align:center; +} + +.dash-unit h2 { + font-family: 'Open Sans', sans-serif; + font-weight: bold; + font-size: 30px; + line-height: 26px; + letter-spacing: 0px; + color: #ffffff; + padding-top:10px; + padding-left:5px; + margin-top:2px; + text-align:center; +} + + +.dash-unit h3 { + font-weight:300; + font-size: 15px; + line-height: 2px; + letter-spacing: 0px; + color: #b2c831; + padding-top:10px; + padding-left:5px; + margin-top:2px; + text-align:center; +} + + +.dash-unit p { + font-size: 14px; + font-weight: 200; + line-height: 16px; + color: inherit; + margin: 0 0 10px; + padding:5px; + } + +.dash-unit h4 { + padding-left:5px; + margin-top:2px; + font-size: 13px; + font-weight:lighter; + line-height: 1; + letter-spacing: 0px; + color: #fff; +} + +.dash-unit bold{ + font-family: 'Open Sans', sans-serif; + font-size:26px; + font-weight:bold; + color:#fff; + vertical-align:middle; +} + + +/**********Half-Unit / Used in index.html**********/ +.half-unit { + margin-bottom: 30px; + padding-bottom: 4px; + border: 1px solid #383737; + background-image:url('../img/sep-half.png'); + background-color: #3d3d3d; + color:white; + height:130px; +} + +.half-unit:hover { + background-color: #4f4f4f; + -moz-box-shadow: 3px 3px 2px 0px #151515; + -webkit-box-shadow: 3px 3px 2px 0px #151515; + box-shadow: 3px 3px 2px 0px #151515; + +} + +.half-unit dtitle { + font-size:10px; + text-transform:uppercase; + color:#ffffff; + margin:8px; + padding:0px; + height:inherit + } + +.half-unit hr { + border: 0; + border-top: 1px solid #151515; + border-top-style: dashed; + margin-top:3px; +} + +.half-unit h1 { + font-family: 'Raleway', sans-serif; + font-weight:300; + font-size: 20px; + line-height: 1; + letter-spacing: 0px; + color: #ffffff; + padding-top:10px; + padding-left:5px; + margin-top:2px; + text-align:center; +} + +.half-unit h4 { + padding-left:5px; + margin-top:2px; + font-size: 13px; + font-weight:lighter; + line-height: 1; + letter-spacing: 0px; + color: #fff; +} + + +.half-unit bold{ + font-family: 'Open Sans', sans-serif; + font-size:26px; + font-weight:bold; + color:#fff; + vertical-align:middle; +} + +/**********Styling Elements**********/ +.cont { + text-align:center; + margin-top:30px; +} + +.cont ok { + color:#b2c831; +} + +.cont bad { + color:#fa1d2d; +} + +.cont2 { + text-align:center; + margin-top:-15px; + font-size:12px; + line-height:7px; +} + +.cont2 bold{ + font-size:10px; + font-weight:bold; + color:#b2c831 +} + +.text p { + font-family: 'Open Sans', sans-serif; + margin-left:8px; + font-size:14px; + line-height:18px; +} + +.text grey { + font-size:11px; + color:silver +} + + +/***********Bootstrap Default Modifications***********/ + +.thumbnail { + border:0px; + text-align:center; + -webkit-box-shadow: 0px; + -moz-box-shadow: 0px; + box-shadow: 0px; + background: none; + text-align: center; + +} + +.modal-header { + background-image:url('../img/sep-half.png'); + background-color: #4f4f4f; + color:#fff; +} + +.btn-circle { + width: 60px; + height: 30px; + padding: 4px 8px; + font-size: 16px; + line-height: 1.33; + border-radius: 15px 15px 15px 15px; + + border-width:2px; + border-color:#2A9FD6; + cursor:pointer; +} + +.btn-circle:hover{ + /*background: #b2c831; + color:#000;*/ +} + +/*input[type=submit] { + font-family: 'Open Sans', sans-serif; + font-size: 15px; + background: #b2c831; + color: #fff; + border: none; + padding: 8px 28px 10px 26px; + *-webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +input[type=text], textarea { + background: #cdcbcc; + font-size: 13px; + display: block; + width: 100%; + border: none; + box-shadow: none; + height: 30px; + line-height: 18px; + padding: 0; + text-indent: 18px; + margin: 0 0 18px; +}*/ +textarea { + line-height: 18px; + padding: 18px; + width: 100%; + text-indent: 0; +} +.textarea-container { margin: 0 18px; } +.textarea-container textarea { margin-left: -18px; } +#contact textarea { width: 100%; height: 45px; } + + +.progress-bar { + background-color: #b2c831; +} + + + + +/***********LineIcons Styles***********/ + + +.info-user { + text-align:center; + font-size: 24px; + color: #b2c831; + } + +.fs1 { + padding:5px 5px 5px 5px; + position:relative; +} + +.fs1:hover { + position:relative; + color: #fff; + cursor:pointer +} + +.fs2 { + padding:5px 5px 5px 5px; + position:relative; + font-size:35px; + vertical-align: text-bottom +} + +/**********Clock Configuration**********/ + +digiclock { + font-size: 30px; + color: #fff; + text-align: center; + line-height: 60px; + margin-left: auto +} + +.clockcenter { + text-align:center; +} + + +/**********Mail Style Configuration**********/ + +.framemail { + cursor: default; +} +.framemail .window { + font-size: 0; + margin-top: -1px; + overflow: hidden; + margin-left: -18px; +} +.framemail .window .mail li { + background-color:#3d3d3d; + background-image: -webkit-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,0%,.05)); + background-image: -moz-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,0%,.05)); + background-image: -ms-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,0%,.05)); + background-image: -o-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,0%,.05)); + background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,0%,.05)); + border-top: 1px solid #888; + position: relative; + margin-left:-18px; +} +.framemail .window .mail li:first-child { + border-top: none; +} +.framemail .window .mail li:hover { + background-color: #5d5b5b; +} +.framemail .window .mail li:after, +.framemail .window .mail li:before { + border-left: 8px solid transparent; + border-top: 8px solid #df6; + content: ''; + height: 0; + position: absolute; + right: 0; + top: 0; + width: 0; +} +.framemail .window .mail li:before { + border-top-color: #bbb; + border-width: 9px; +} +.framemail .window .mail li:nth-child(1):after, +.framemail .window .mail li:nth-child(1):before { + border: none; +} +.framemail .window .mail li:nth-child(2):after { + border-top-color: #fa1d2d; +} +.framemail .window .mail li i { + display: inline-block; + height: 48px; + width: 6px; +} +.framemail .window .mail li .read { + background-color: #ddd; +} +.framemail .window .mail li .unread { + background: #b2c831; +} +.framemail .window .mail li img { + background: #819da2; + border-radius: 2px; + height: 36px; + left: 12px; + position: absolute; + top: 6px; + width: 36px; +} +.framemail .window .mail li p { + font: 13px/24px sans-serif; + left: 56px; + position: absolute; + top: 3px; +} +.framemail .window .mail li .sender { + color: #e9e8e8; + font-weight: bold; + text-shadow: 0 1px 1px hsla(0,0%,100%,.5); +} +.framemail .window .mail li .message { + color: #999; + overflow: hidden; + text-overflow: ellipsis; + top: 21px; + white-space: nowrap; +} +.framemail .window .mail li .message strong { + color: #999; +} +.framemail .window .mail li .actions { + height: 16px; + position: absolute; + right: 19px; + text-align: right; + top: 0; + width: 96px; +} +.framemail .window .mail li .actions img { + background: none; + display: inline-block; + height: 16px; + margin-left: 6px; + opacity: .1; + position: relative; + width: 16px; +} +.framemail .window .mail li:hover .actions img { + opacity: .25; +} +.framemail .window .mail li .actions img:hover { + opacity: .75; +} + + +/**********DONUT CHARTS STYLES**********/ +#load { + width: 11.313em; + height: 11.313em; + -moz-border-radius: 5px; + border-radius: 5px; + margin-bottom: 1.063em; + background-position: center center; + margin:auto; +} + +#space { + width: 11.313em; + height: 11.313em; + -moz-border-radius: 5px; + border-radius: 5px; + margin-bottom: 1.063em; + background-position: center center; + margin:auto; +} + + +/**********LINE AND BARS**********/ + +.section-graph { + position: relative; + height: 130px; + color: #fff; + background-image: linear-gradient(color-stops(#b2c831, #b2c831 50%, #b2c831 50%)); + margin-bottom:20px; +} +.section-graph .graph-info { + z-index: 99; + position: absolute; + font-weight: bold; + margin-top: 12px; + margin-left: 21px; + width: 100px; +} +.section-graph .graph-info .graph-arrow { + width: 0; + height: 0; + margin-top: 18px; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-bottom: 4px solid white; + float: left; +} +.section-graph .graph-info .graph-info-big { + font-size: 24px; + float: left; + margin-left: 3px; +} +.section-graph .graph-info .graph-info-small { + margin-left: 3px; + font-size: 12px; + font-weight: normal; + color: rgba(255, 255, 255, 0.5); + clear: left; + margin-left: 8px; +} +/* + * Info Section + */ +.info-aapl { + text-align: center; + +} +.info-aapl ul { + margin-left:30%; + +} +.info-aapl li { + margin: 0; + display: block; + width: 9px; + height: 40px; + margin-right: 6px; + background-color: #f5f0ec; + float:left; + position: relative; +} +.info-aapl li span { + display: block; + width: 9px; + height: 40px; + position: absolute; + bottom: 0; +} +.info-aapl li span.orange { + background-color: #fa1d2d; +} +.info-aapl li span.green { + background-color: #b2c831; +} + +/**********TWITTER WIDGET **********/ +#jstwitter ul li{ + color:#bdbdbd; + padding:.5em .75em; +} + +#jstwitter ul{ + margin-left:0; + list-style:none +} + +#jstwitter:first-child{ + border-top:0 +} + +ul#jstwitter li a{ + font-size:10px; + font-style:italic; + color:#666; + text-decoration:none +} + +/********** CUSTOMIZED BUTTON **********/ +.btnnew { + display: inline-block; + *border-left: 0 none #707070; + border-right: 0 none #707070; + border-top: 0 none #707070; + border-bottom: 0 none #707070; + display: inline; + padding: 4px 12px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 14px; + line-height: 20px; + color: #b2c831; + text-align: center; + vertical-align: middle; + cursor: pointer; + background-color: #5a5a5a; + *background-color: #5a5a5a; + background-repeat: repeat-x; + *-webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + background-image: linear-gradient(to bottom, #707070, #707070);* +} + +/********** SWITCH BUTTON **********/ +.switch { + position: relative; + margin: 20px auto; + height: 26px; + width: 120px; + background: rgba(0, 0, 0, 0.25); + border-radius: 3px; + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1); +} + +.switch-label { + position: relative; + z-index: 2; + float: left; + width: 58px; + line-height: 26px; + font-size: 11px; + color: rgba(255, 255, 255, 0.35); + text-align: center; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.45); + cursor: pointer; +} +.switch-label:active { + font-weight: bold; +} + +.switch-label-off { + padding-left: 2px; +} + +.switch-label-on { + padding-right: 2px; +} + +/* + * Note: using adjacent or general sibling selectors combined with + * pseudo classes doesn't work in Safari 5.0 and Chrome 12. + * See this article for more info and a potential fix: + * http://css-tricks.com/webkit-sibling-bug/ + */ +.switch-input { + display: none; +} +.switch-input:checked + .switch-label { + font-weight: bold; + color: rgba(0, 0, 0, 0.65); + text-shadow: 0 1px rgba(255, 255, 255, 0.25); + -webkit-transition: 0.15s ease-out; + -moz-transition: 0.15s ease-out; + -o-transition: 0.15s ease-out; + transition: 0.15s ease-out; +} +.switch-input:checked + .switch-label-on ~ .switch-selection { + left: 60px; + /* Note: left: 50% doesn't transition in WebKit */ +} + +.switch-selection { + display: block; + position: absolute; + z-index: 1; + top: 2px; + left: 2px; + width: 58px; + height: 22px; + background: #b2c831; + border-radius: 3px; + background-image: -webkit-linear-gradient(top, #b6c753, #b2c831); + background-image: -moz-linear-gradient(top, #b6c753, #b2c831); + background-image: -o-linear-gradient(top, #b6c753, #b2c831); + background-image: linear-gradient(to bottom, #b6c753, #b2c831); + -webkit-box-shadow: inset 0 1px rgba(255, 255, 255, 0.5), 0 0 2px rgba(0, 0, 0, 0.2); + box-shadow: inset 0 1px rgba(255, 255, 255, 0.5), 0 0 2px rgba(0, 0, 0, 0.2); + -webkit-transition: left 0.15s ease-out; + -moz-transition: left 0.15s ease-out; + -o-transition: left 0.15s ease-out; + transition: left 0.15s ease-out; +} +.switch-blue .switch-selection { + background: #3aa2d0; + background-image: -webkit-linear-gradient(top, #4fc9ee, #3aa2d0); + background-image: -moz-linear-gradient(top, #4fc9ee, #3aa2d0); + background-image: -o-linear-gradient(top, #4fc9ee, #3aa2d0); + background-image: linear-gradient(to bottom, #4fc9ee, #3aa2d0); +} +.switch-yellow .switch-selection { + background: #fa1d2d; + background-image: -webkit-linear-gradient(top, #f93e4b, #fa1d2d); + background-image: -moz-linear-gradient(top, #f93e4b, #fa1d2d); + background-image: -o-linear-gradient(top, #f93e4b, #fa1d2d); + background-image: linear-gradient(to bottom, #f93e4b, #fa1d2d); +} + + +/**********Gauge Chart**********/ +#canvas { + display: block; + width: 150px; + margin: 30px auto; +} + +/**********Accordion Styling**********/ + +.accordion-group { + border: 1px solid #222; +} +.accordion-heading { + background-color: #5a5a5a; + *background-color: #5a5a5a; + background-repeat: repeat-x; + *-webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + background-image: linear-gradient(to bottom, #707070, #707070);* +} + +/**********Link Styling**********/ +a { + color: #b2c831; + text-decoration: none; +} + +a:hover { + color: #dff948; + text-decoration: none; +} + +.bark-link { + color: #b2c831; + text-decoration: underline; +} + +.bark-link:hover { + color: #dff948; + text-decoration: none; +} + +/**navigation bar**/ +.docs-search{ + margin:10px 0; + border-radius:20px; + background:#626262; + vertical-align:middle; + padding:4px 0 4px 10px; +} + +.docs-search input{ + background:#626262; + border:0 +} + +.docs-search input:focus{ + outline:none; + color:#fff; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 14px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 9px; + font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + color: #ffffff; + background-color: #848484; + border: 1px solid #151515; + border-radius:14px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -ms-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-search .search-query:disabled{ + background-color: #626262; + cursor: not-allowed; +} + +.navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} +.navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} +.navbar-search .search-query:focus,.navbar-search .search-query.focused { + padding: 5px 10px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + outline: 0; +} + + + +/**********FooterWrap Section**********/ +@media (min-width: 992px) { + #footerwrap { + width: 75%; + } +} + +@media (max-width: 991px) { + #footerwrap { + width: 100% + } +} + +#footerwrap { + padding-left: 30px; + height: 90px; + background:#262626; + padding-top:10px; + padding-bottom: 10px; + border-top-style: solid; + border-top-width:8px; + border-top-color:#1d1d1d; + /*overflow-y:auto;*/ + z-index:200; + +} + +#footerwrap p { + color:white; + font-size:12px; + margin:0; +} + +/*#footerwrap>.container-fluid{ + position: absolute; + width: 100%; + height: 100%; + transform:translateY(100%); + animation: scrolling 2s linear infinite; +} + +@keyframes scrolling { + 0% { + transform: translateY(0%); + } + 100% { + transform: translateY(-100%); + } +}*/ + + +/***********FULLCALENDAR STYLE***********/ + +#external-events { + padding: 0 10px; + border: 1px solid #8b8b8a; + background-color: #8b8b8a; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + text-align: left; + } + +#external-events h4 { + font-size: 16px; + margin-top: 0; + padding-top: 1em; + } + +.external-event { /* try to mimick the look of a real event */ + margin: 10px 0; + padding: 2px 4px; + background: #b2c831; + color: #fff; + font-size: .85em; + cursor: pointer; + } + +#external-events p { + margin: 1.5em 0; + font-size: 11px; + color: #b2c831; + } + +#external-events p input { + margin: 0; + vertical-align: middle; + } + +#calendar { + width:100%; + } + +.symbol.required:before { + content: "*"; + display: inline; + color: #E6674A; +} + +.has-success .symbol:before { + content: "\f00c"; + display: inline; + font-family: FontAwesome; + color: #468847 +} + +.has-error .symbol:before { + content: "\f00d"; + display: inline; + font-family: FontAwesome; + color: #C82E29 +} + +.text-small { + font-size: 12px!important +} + +.has-error .error { + color: #a94442; +} + +/**********Media Styles**********/ + +@media (max-width: 360px){ +/*Calendar Adsjustments*/ +.fc-header {margin-top:15px;} +.fc-header-title h2{font-size:10px; } +.fc-header-right {display:none} +} +/* portrait tablet */ +@media (min-width: 767px) and (max-width: 768px) { + .info-aapl ul { + margin-left:10px; + float:left; +} + +#load { + margin-left:5px; + margin-right:10px; +} + +#space { + margin-left:5px; + margin-right:10px; +} + +} + +/* Landscape iphone 5 and samsung galaxy */ +@media (min-width: 560px) and (max-width: 685px) { + .info-aapl ul { + margin-left:40%; + } + +} + +@media (min-width: 1024px) { + .modal-xg { + width: 1024px; + } +} + +.form-control { + color: #000000; +} + +tbody { + word-break:break-all; +} http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/css/sidebar.css ---------------------------------------------------------------------- diff --git a/griffin-ui/css/sidebar.css b/griffin-ui/css/sidebar.css new file mode 100644 index 0000000..abf44ae --- /dev/null +++ b/griffin-ui/css/sidebar.css @@ -0,0 +1,179 @@ +/* + Copyright (c) 2016 eBay Software Foundation. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +/*side-bar start*/ +.sidebar-stat-center{ + padding:10px 0; + display: flex; + align-items: center +} + +.sidebar-stat-center>img{ + max-width:24px; + margin-right:5px; +} + +.sidebar-stat-center>span{ + font-size:18px; + color:#fff +} + +.well .faChevron{ + color: white; +} + +.side-bar-scroll{ + padding:0px; + background:transparent; + border:0px; +} + +.sideBar{ + overflow:scroll; + height:650px; + overflow-x: hidden; +} + +.sideBar::-webkit-scrollbar-track +{ + -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); + border-radius: 10px; + background-color: #F5F5F5; +} + +.sideBar::-webkit-scrollbar +{ + width: 12px; + border-radius: 10px; + background-color: #F5F5F5; +} + +.sideBar::-webkit-scrollbar-thumb +{ + border-radius: 10px; + -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3); + background-color: #D62929; +} + +.well .side-metrics{ + font-size: 14px; +} +.well .faArrows{ + background:#ff5c33; + color:black; +} + +.well .side-date{ + color: white; + /*position: absolute;*/ + /*left: 80px;*/ + /*margin-left: 10px;*/ +} + +.well .side-name{ + color: #999966; + /*position: absolute;*/ + /*left: 210px;*/ + /*margin-left: 20px;*/ +} + +a>.side-name:hover{ + color: #b2c831; + /*position: absolute;*/ + /*left: 210px;*/ + /*margin-left: 20px;*/ +} + +.well .side-percent{ + color: #40bf80; + /*position: absolute;*/ + /*left: 390px;*/ +} + +.well .side-percent-red{ + color: #f00; +} + +#gprs{ + position: absolute; + top:5px; + clip: rect(0, 50px, 50px, 0); + top: -8px; + /* clip: shape(top, right, bottom, left); NB 'rect' is the only available option */ +} + +.well-next{ + padding:0px; + background:#262626; + border:0px; + position:relative; +} + +.vcenter { + display: inline-block; + vertical-align: middle; + float: none; +} + +/*side-bar end*/ + +/* led start */ +.led-red { + /*margin: 20px auto;*/ + margin-top: -26px; + margin-left: 180px; + width: 12px; + height: 12px; + background-color: #940; + border-radius: 50%; + box-shadow: #000 0 -1px 7px 1px, inset #600 0 -1px 9px, #F00 0 2px 12px; +} + +.led-yellow { + /*margin: 20px auto;*/ + /*margin-top: -26px; + margin-left: 180px;*/ + width: 12px; + height: 12px; + background-color: #A90; + border-radius: 50%; + box-shadow: #000 0 -1px 7px 1px, inset #660 0 -1px 9px, #DD0 0 2px 12px; +} + +.led-green { + /*margin: 20px auto;*/ + /*margin-top: -26px; + margin-left: 180px;*/ + width: 12px; + height: 12px; + background-color: #690; + border-radius: 50%; + box-shadow: #000 0 -1px 7px 1px, inset #460 0 -1px 9px, #7D0 0 2px 12px; +} +/* led end */ + +@media (max-width: 1200px) { + #sidebar-option { + height: auto; + display: block; + } +} + +@media (min-width: 1200px) { + #sidebar-option { + height: 180px; + display: flex; + align-items: center; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/css/treeview-check.css ---------------------------------------------------------------------- diff --git a/griffin-ui/css/treeview-check.css b/griffin-ui/css/treeview-check.css new file mode 100644 index 0000000..971b874 --- /dev/null +++ b/griffin-ui/css/treeview-check.css @@ -0,0 +1,81 @@ +/* + Copyright (c) 2016 eBay Software Foundation. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +div[angular-treeviewcheck] { + /* prevent user selection */ + -moz-user-select: -moz-none; + -khtml-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + + /* default */ + /*font-family: Tahoma; + font-size:13px; + color: #555;*/ + font-size:14px; + text-decoration: none; +} + +div[tree-model-check] ul { + margin: 0; + padding: 0; + list-style: none; + border: none; + overflow: hidden; +} + +div[tree-model-check] li { + position: relative; + padding: 0 0 0 20px; + color:#ffffff + line-height: 20px; +} + +div[tree-model-check] li>span:hover { + color:#ffffff; +} + +div[tree-model-check] li .expanded { + padding: 1px 8px; + /*background-image: url("http://cfile23.uf.tistory.com/image/205B973A50C13F4B19D9BD");*/ + background-repeat: no-repeat; +} + + +div[tree-model-check] li .collapsed { + padding: 1px 10px; + /*background-image: url("../img/folder-closed.png");*/ + /*background-image: url("http://cfile23.uf.tistory.com/image/1459193A50C13F4B1B05FB");*/ + background-repeat: no-repeat; +} + +div[tree-model-check] li .normal { + padding: 1px 10px; + /*background-image: url("../img/file.png");*/ + /*background-image: url("http://cfile23.uf.tistory.com/image/165B663A50C13F4B196CCA");*/ + background-repeat: no-repeat; +} + +div[tree-model-check] li i, div[tree-model-check] li span { + cursor: pointer; +} + +div[tree-model-check] li .selected { + background-color: #aaddff; + font-weight: bold; + /*background-color: #D9F40E;*/ + color:#000000; + padding: 1px 5px; +} http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/css/treeview.css ---------------------------------------------------------------------- diff --git a/griffin-ui/css/treeview.css b/griffin-ui/css/treeview.css new file mode 100644 index 0000000..a5e4fbc --- /dev/null +++ b/griffin-ui/css/treeview.css @@ -0,0 +1,81 @@ +/* + Copyright (c) 2016 eBay Software Foundation. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +div[angular-treeview] { + /* prevent user selection */ + -moz-user-select: -moz-none; + -khtml-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + + /* default */ + /*font-family: Tahoma; + font-size:13px; + color: #555;*/ + font-size:14px; + text-decoration: none; +} + +div[tree-model] ul { + margin: 0; + padding: 0; + list-style: none; + border: none; + overflow: hidden; +} + +div[tree-model] li { + position: relative; + padding: 0 0 0 20px; + color:#ffffff + line-height: 20px; +} + +div[tree-model] li>span:hover { + color:#ffffff; +} + +div[tree-model] li .expanded { + padding: 1px 8px; + /*background-image: url("http://cfile23.uf.tistory.com/image/205B973A50C13F4B19D9BD");*/ + background-repeat: no-repeat; +} + + +div[tree-model] li .collapsed { + padding: 1px 10px; + /*background-image: url("../img/folder-closed.png");*/ + /*background-image: url("http://cfile23.uf.tistory.com/image/1459193A50C13F4B1B05FB");*/ + background-repeat: no-repeat; +} + +div[tree-model] li .normal { + padding: 1px 10px; + /*background-image: url("../img/file.png");*/ + /*background-image: url("http://cfile23.uf.tistory.com/image/165B663A50C13F4B196CCA");*/ + background-repeat: no-repeat; +} + +div[tree-model] li i, div[tree-model] li span { + cursor: pointer; +} + +div[tree-model] li .selected { + background-color: #aaddff; + font-weight: bold; + /*background-color: #D9F40E;*/ + color:#000000; + padding: 1px 5px; +} http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/img/1.PNG ---------------------------------------------------------------------- diff --git a/griffin-ui/img/1.PNG b/griffin-ui/img/1.PNG new file mode 100644 index 0000000..e9a3063 Binary files /dev/null and b/griffin-ui/img/1.PNG differ http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/img/2.PNG ---------------------------------------------------------------------- diff --git a/griffin-ui/img/2.PNG b/griffin-ui/img/2.PNG new file mode 100644 index 0000000..af12dc4 Binary files /dev/null and b/griffin-ui/img/2.PNG differ http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/img/bollinger.png ---------------------------------------------------------------------- diff --git a/griffin-ui/img/bollinger.png b/griffin-ui/img/bollinger.png new file mode 100644 index 0000000..efb1f49 Binary files /dev/null and b/griffin-ui/img/bollinger.png differ http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/img/construction.gif ---------------------------------------------------------------------- diff --git a/griffin-ui/img/construction.gif b/griffin-ui/img/construction.gif new file mode 100644 index 0000000..7d03450 Binary files /dev/null and b/griffin-ui/img/construction.gif differ http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/img/favicon.ico ---------------------------------------------------------------------- diff --git a/griffin-ui/img/favicon.ico b/griffin-ui/img/favicon.ico new file mode 100644 index 0000000..c5ccacf Binary files /dev/null and b/griffin-ui/img/favicon.ico differ http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/img/logo.gif ---------------------------------------------------------------------- diff --git a/griffin-ui/img/logo.gif b/griffin-ui/img/logo.gif new file mode 100644 index 0000000..bf26825 Binary files /dev/null and b/griffin-ui/img/logo.gif differ http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/img/mad.png ---------------------------------------------------------------------- diff --git a/griffin-ui/img/mad.png b/griffin-ui/img/mad.png new file mode 100644 index 0000000..aa85a76 Binary files /dev/null and b/griffin-ui/img/mad.png differ http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/img/sidebar1.png ---------------------------------------------------------------------- diff --git a/griffin-ui/img/sidebar1.png b/griffin-ui/img/sidebar1.png new file mode 100644 index 0000000..6a64412 Binary files /dev/null and b/griffin-ui/img/sidebar1.png differ http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/img/sidebar2.png ---------------------------------------------------------------------- diff --git a/griffin-ui/img/sidebar2.png b/griffin-ui/img/sidebar2.png new file mode 100644 index 0000000..425b863 Binary files /dev/null and b/griffin-ui/img/sidebar2.png differ http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/img/yoy.png ---------------------------------------------------------------------- diff --git a/griffin-ui/img/yoy.png b/griffin-ui/img/yoy.png new file mode 100644 index 0000000..2f071ac Binary files /dev/null and b/griffin-ui/img/yoy.png differ http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/index.html ---------------------------------------------------------------------- diff --git a/griffin-ui/index.html b/griffin-ui/index.html new file mode 100644 index 0000000..6f79eb1 --- /dev/null +++ b/griffin-ui/index.html @@ -0,0 +1,185 @@ +<!-- + Copyright (c) 2016 eBay Software Foundation. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + --> +<!DOCTYPE html> +<html lang="en"> + +<head> + + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content=""> + <meta name="author" content=""> + <link rel="icon" href="/img/favicon.ico"> + + <title>Griffin - Data Quality Service</title> + + <!-- Bootstrap Core CSS --> + <link href="bower_components/bootswatch/cyborg/bootstrap.css" rel="stylesheet"> + <!-- Custom Fonts --> + <link href="bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"> + + <link href="bower_components/AngularJS-Toaster/toaster.css" rel="stylesheet"> + + <link href="css/main.css" rel="stylesheet"> + <link href="css/treeview.css" rel="stylesheet"> + <link href="css/treeview-check.css" rel="stylesheet"> + <link href="css/sidebar.css" rel="stylesheet"> + <link href="pages/rules/rule.css" rel="stylesheet"> + <link href="pages/metrics/metrics.css" rel="stylesheet"> + <link href="pages/template/bigchart.css" rel="stylesheet"> + <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> + <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> + <![endif]--> + +</head> + + +<body> + <toaster-container toaster-options="{'time-out': 3000, 'close-button':true, 'animation-class': 'toast-center-right'}"></toaster-container> + + <nav class="navbar navbar-default navbar-fixed-top" ng-controller="NavCtrl"> + <div class="container-fluid"> + <!-- Brand and toggle get grouped for better mobile display --> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a href="#/" class="navbar-brand" style="padding-top:5px;padding-bottom:0;"><img src="/img/logo.gif" title="Data Quality Service" style="max-height:40px;"/></a> + </div> + + <!-- Collect the nav links, forms, and other content for toggling --> + <div class="collapse navbar-collapse" id="navbar-collapse"> + <ul class="nav navbar-nav"> + <li ng-class="{active:isActive('/health')}"><a href="#/health"><i class="icon-home icon-white"></i> Health</a></li> + <li ng-class="{active:isActive('/rules') || isActive('/createrule')}"><a href="#/rules"><i class="icon-folder-open icon-white"></i> Models</a></li> + <!-- <li><a href="#/undercons"><i class="icon-calendar icon-white"></i> Data Profiling</a></li> --> + <li ng-class="{active:isActive('/mydashboard') || isActive('/subscribemodel')}"><a href="#/mydashboard"><i class="icon-calendar icon-white"></i> My Dashboard</a></li> + </ul> + + <ul class="nav navbar-nav navbar-right"> + <li class="dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{fullName}} <i class="fa fa-user fa-fw"></i><span class="caret"></span></a> + <ul class="dropdown-menu dropdown-user"> + <li><a href="#/undercons"><i class="fa fa-user fa-fw"></i> User Profile</a></li> + <li><a href="#/undercons"><i class="fa fa-gear fa-fw"></i> Settings</a></li> + <li class="divider"></li> + <li><a href="/apidocs/index.html" target="_blank"><i class="fa fa-book fa-fw"></i> API DOCs</a></li> + <li><a href="https://github.com/eBay/griffin/blob/master/griffin-doc/userguide.md" target="_blank"><i class="fa fa-question-circle fa-fw"></i> User Guide</a></li> + <li><a href="mailto://ebay-griffin-d...@googlegroups.com" ><i class="fa fa-envelope fa-fw"></i> Contact us</a></li> + <li class="divider"></li> + <li><a href="" ng-click="logout()"><i class="fa fa-sign-out fa-fw"></i> Logout</a> + </li> + </ul> + </li> + </ul> + + <form class="navbar-search navbar-right nav navbar-nav" > + + <input id="searchBox" type="text" class="search-query" placeholder="Search..." ng-disabled="!isActive('/rules')&&!isActive('/dataassets')"> + </form> + <!-- <form class="navbar-form navbar-right" role="search" style="padding-right:150px;"> + <div class="form-group"> + <input type="text" class="form-control search-query" id="searchBox" ng-disabled="!isActive('/rules')&&!isActive('/dataassets')" placeholder="Search.." style="border-radius:19px;"> + </div> + </form> --> + </div><!-- /.navbar-collapse --> + </div><!-- /.container-fluid --> + </nav> + + + <div class="container-fluid" us-spinner="{color:'#ffffff', lines:13, width:14, length:28, radius:42, shadow:true, hwaccel:true, speed:0.8}" spinner-on="false" style="padding-top:56px;padding-bottom:90px;height:100%;padding-right:0;" id="mainContent"> + + + <div class="col-md-9 col-xs-12" > + <!-- <button type="button" class="btn btn-default btn-circle btn-lg" style="position: absolute; top: 0px; right: 10px; "><i class="fa fa-arrow-left"></i></button> --> + <button type="button" class="btn btn-primary btn-circle" style="position: absolute; top: 0px; right: 10px; z-index:99" onclick="history.back();"><span style="margin-bottom:20px;">Back</span></button> + <!-- main content goes here--> + <div id="mainWindow" class="row" ng-view style="overflow-y: auto;overflow-x:hidden; padding-right: 10px;" ng-controller="MainCtrl"> + + </div> + </div> + + <div class="col-xs-12 col-md-3" style="padding-right:0;"> + <!-- <div id="rightbar" ng-controller="SideBarCtrl" class="" style="background-color:#262626;"> --> + <ng-include src="'/sidebar.html'"/> + <!-- </div> --> + + </div> + + <div id="footerwrap" class="navbar-fixed-bottom" ng-controller="FooterCtrl"> + <!-- <footer class="clearfix"></footer> --> + <div class="container-fluid"> + <div class="row "> + <p ng-show="!notifications">{{timestamp|date:'short':'-0700'}} - Welcome <label>{{fullName}}</label>!</p> + <p ng-repeat="r in notifications"> + {{r.timestamp|date:'short':'-0700'}} - <label>{{r.owner}}</label> {{r.operation}}d a {{r.target}} named + <a ng-if="r.target=='model'" href="#/viewrule/{{r.name}}">{{r.name}}</a> + <label ng-if="r.target=='dataasset'">"{{r.name}}"</label> + </p> + </div><!-- /row --> + </div><!-- /container --> + </div><!-- /footerwrap --> + + </div> + + <div id="bigChartContainer" class="big-chart-container" style="display:none;" ng-controller="BigChartCtrl"> + <div id="bigChartShow" class="big-chart-content"> + <div class="container-fluid"> + <div class="pull-right" style="position:fixed;right:20px;top:10px;z-index:1050;"> + <button type="button" id="bigChartClose" class="bark-close thick" aria-label="Close" ng-click="closeBigChart()"> + </button> + </div> + + <div class="pull-right" style="position:fixed;right:150px;top:10px;z-index:1050;"> + <a href ng-click="downloadSample()" style="font-size:15px;color:#d48265;"><u>Download Sample</u></a> + </div> + + <div class="row"> + <!--<highchart config="chartConfig" />--> + <div id="bigChartDiv"></div> + </div> + </div> + </div> + </div> + + <div class="modal fade" id="download-sample" role="dialog" ng-controller="DownloadSampleCtrl"> + <div class="modal-dialog modal-xg modal-lg"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> + <h4 class="modal-title">{{selectedModelName}}</h4> + </div> + <div class="modal-body"> + <ng-include src="'/pages/metrics/download-sample.html'"/> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> + </div> + </div> + </div> + </div> + + <script data-main="js/main" src="bower_components/requirejs/require.js"></script> + +</body> + +</html> http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/js/app.js ---------------------------------------------------------------------- diff --git a/griffin-ui/js/app.js b/griffin-ui/js/app.js new file mode 100644 index 0000000..e2dc9fe --- /dev/null +++ b/griffin-ui/js/app.js @@ -0,0 +1,42 @@ +/* + Copyright (c) 2016 eBay Software Foundation. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +define([ + 'angular', + './controllers/index', + './directives/index', + './filters/index', + './services/index', + 'ngSmartTable', + 'angularRoute', + 'ngToaster', + 'ngCookies', + 'angularSpinner', + 'echarts', + 'echarts-dark' +], function (angular) { + 'use strict'; + + return angular.module('app', [ + 'app.services', + 'app.controllers', + 'smart-table', + 'app.filters', + 'app.directives', + 'ngRoute', + 'toaster', + 'ngCookies', + 'angularSpinner' + ]); +}); http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/js/bs.js ---------------------------------------------------------------------- diff --git a/griffin-ui/js/bs.js b/griffin-ui/js/bs.js new file mode 100644 index 0000000..f6f67d3 --- /dev/null +++ b/griffin-ui/js/bs.js @@ -0,0 +1,31 @@ +/* + Copyright (c) 2016 eBay Software Foundation. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +define([ + 'require', + 'jquery', + 'bootstrap', + 'angular', + 'app', + 'routes' +], function (require, $, bootstrap, angular) { + 'use strict'; + + require(['domReady!'], function (document) { + + $('#mainWindow').height($('#mainContent').height()); + + angular.bootstrap(document, ['app']); + }); +}); http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/js/controllers/bigChart-ctrl.js ---------------------------------------------------------------------- diff --git a/griffin-ui/js/controllers/bigChart-ctrl.js b/griffin-ui/js/controllers/bigChart-ctrl.js new file mode 100644 index 0000000..5525cd2 --- /dev/null +++ b/griffin-ui/js/controllers/bigChart-ctrl.js @@ -0,0 +1,58 @@ +/* + Copyright (c) 2016 eBay Software Foundation. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +define(['./module'], function(controllers) { + 'use strict'; + controllers.controller('BigChartCtrl', ['$scope', '$http', '$config', '$filter', '$timeout', '$compile', '$routeParams', '$barkChart', '$rootScope', function($scope, $http, $config, $filter, $timeout, $compile, $routeParams, $barkChart, $rootScope) { + + var echarts = require('echarts'); + + pageInit(); + + function pageInit() { + resizeBigChart(); + $scope.bigChart = echarts.init($('#bigChartDiv').get(0), 'dark'); + } + + function resizeBigChart() { + document.getElementById('bigChartDiv').style.width = window.innerWidth+'px'; + document.getElementById('bigChartDiv').style.height = window.innerHeight+'px'; + } + + $scope.closeBigChart = function(){ + console.log('close big chart!'); + $('#bigChartContainer').hide(); + // $('#mainWindow').show(); + } + + $scope.downloadSample = function() { + $rootScope.$broadcast('downloadSample', $scope.selectedModel); + } + + $(window).resize(function() { + console.log('big chart resize'); + resizeBigChart(); + $scope.bigChart.resize(); + }); + + $rootScope.showBigChart = function(option) { + $scope.selectedModel = option.title.text; + $('#bigChartContainer').show(); + // $('#mainWindow').hide(); + $scope.bigChart.clear(); + $scope.bigChart.setOption(option); + } + + }]); +}); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/a8ba6ba9/griffin-ui/js/controllers/createdataasset-ctrl.js ---------------------------------------------------------------------- diff --git a/griffin-ui/js/controllers/createdataasset-ctrl.js b/griffin-ui/js/controllers/createdataasset-ctrl.js new file mode 100644 index 0000000..d951851 --- /dev/null +++ b/griffin-ui/js/controllers/createdataasset-ctrl.js @@ -0,0 +1,180 @@ +/* + Copyright (c) 2016 eBay Software Foundation. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +define(['./module'], function (controllers) { + 'use strict'; + controllers.controller('CreateDataAssetCtrl', ['$scope', '$http', '$config', '$location', 'toaster', '$timeout', '$route', '$filter', function ($scope, $http, $config, $location, toaster, $timeout, $route, $filter) { + $scope.currentStep = 1; + + // $scope.platformOptions = ['Teradata', 'Apollo']; + // $scope.systemOptions = ['Sojourner', 'SiteSpeed', 'Bullseye', 'PDS', 'GPS']; + //$scope.assetTypeOptions = ['hdfsfile', 'hivetable']; + $scope.assetTypeOptions = ['hivetable']; + + $scope.formatTypeOptions = ['yyyyMMdd', 'yyyy-MM-dd','HH']; + + $scope.regex = '^\\/(?:[0-9a-zA-Z\\_\\-\\.]+\\/?)+'; + + // $scope.regex = new RegExp('^\\/(?:[0-9a-zA-Z\\_\\-\\.]+\\/?)+'); + + var allModels = $config.uri.dbtree; + $http.get(allModels).success(function(data) { + $scope.platformOptions = data; + }); + + //$scope.platformOptions = [{"id":null,"platform":"Teradata","systems":[{"id":null,"name":"gdw_tables","assets":[{"id":108,"name":"dw_bid"},{"id":109,"name":"dw_trans"}]}]},{"id":null,"platform":"Apollo","systems":[{"id":null,"name":"Sojourner","assets":[{"id":22,"name":"ubi_event"}]},{"id":null,"name":"SiteSpeed","assets":[{"id":21,"name":"sitespeed"}]},{"id":null,"name":"PDS","assets":[{"id":20,"name":"last_categories_accessed"}]},{"id":null,"name":"Bullseye","assets":[{"id":1,"name":"be_view_event_queue"},{"id":2,"name":"be_search_event_queue"},{"id":3,"name":"be_item_watch_event_queue"},{"id":4,"name":"be_bid_event_queue"},{"id":5,"name":"be_transaction_event_queue"},{"id":6,"name":"dmg"},{"id":7,"name":"loyaltysgmnt"},{"id":8,"name":"cust_dna_cat_score"},{"id":9,"name":"badge_interest"},{"id":10,"name":"cust_dna_vq_feed"},{"id":11,"name":"user_dna"},{"id":12,"name":"adchoice_user_pref"},{"id":13,"name":"cust_dna_vq_cat_feed"},{"id":14,"name":"cpcp_dealsv17"},{"id":15,"n ame":"bbe_tbl_trx"},{"id":17,"name":"bbe_tbl_neg"},{"id":16,"name":"bbe_tbl_neu"},{"id":19,"name":"rtm_segment_dict"},{"id":18,"name":"bbe_tbl_pos"}]}]}]; + $scope.systemOptions = $filter('strarr')('modelsystem');//['Bullseye', 'GPS', 'Hadoop', 'PDS', 'IDLS', 'Pulsar', 'Kafka']; + + // $scope.getSystemOptions = function(platformIndex){ + // if(platformIndex==undefined){ + // $scope.systemOptions = []; + // }else{ + // $scope.systemOptions = $scope.platformOptions[platformIndex].systems; + // } + // }; + + $scope.updateHdfsPath = function(typeIndex){ + if(typeIndex != 0 ){ + $scope.form.basic.path = ''; + } + }; + + $scope.addSchema = function() { + $scope.form.basic.schema.push({ + name: '', + type: 'string', + desc: '', + sample: '' + }); + }; + + $scope.addPatitionColumn = function() { + $scope.form.basic.partitions.push({ + name: '', + format: "yyyyMMdd" + }); + }; + + $scope.deleteSchema = function(index) { + $scope.form.basic.schema.splice(index, 1); + }; + + $scope.deletePartition = function(index) { + $scope.form.basic.partitions.splice(index, 1); + }; + + $scope.$on('$viewContentLoaded', function() { + $scope.$emit('initReq'); + resizeWindow(); + }); + + $scope.$on('resizeHandler', function(e) { + if ($route.current.$$route.controller == "CreateDataAssetCtrl") { + resizeWindow(); + } + }); + + function resizeWindow() { + $('.formStep').height(window.innerHeight - $('.formStep').offset().top - $('#footerwrap').outerHeight()-20); + $('fieldset').height(window.innerHeight - $('fieldset').offset().top - $('#footerwrap').outerHeight()- $('.btn-container').height() -80); + $('.y-scrollable').css({ + 'max-height': $('fieldset').height() + }); + + } + + // Initial Value + $scope.form = { + basic: { + platform: 'Apollo', + schema: [{ + name: '', + type: 'string', + desc: '', + sample: '' + }], + partitions: [] + }, + submit: function(form) { + if (!form.$valid) { + var field = null + , firstError = null ; + for (field in form) { + if (field[0] != '$') { + if (firstError === null && !form[field].$valid) { + firstError = form[field].$name; + } + + if (form[field].$invalid) { + form[field].$dirty = true; + } + } + } + angular.element('.ng-invalid[name=' + firstError + ']').focus(); + errorMessage($scope.currentStep); + } else { + form.$setPristine(); + this.data={ + basic: this.basic + }; + this.data.basic.path += this.data.basic.path.substring(this.data.basic.path.length-1)=="/"?'':'/'; + //this.data.basic.path += (this.basic.folderFormat==undefined?"":this.basic.folderFormat); + + + + $('#confirm-pu').modal('show'); + } + }, + + save: function() { + + + var msg = { + 'system' : $scope.systemOptions[$scope.form.basic.system], + 'assetType' : $scope.assetTypeOptions[$scope.form.basic.type], + 'assetName' : $scope.form.basic.assetName, + 'assetHDFSPath' : $scope.form.data.basic.path + ($scope.form.data.basic.folderFormat==undefined?"":$scope.form.data.basic.folderFormat), + 'platform' : $scope.form.basic.platform, + 'schema' : $scope.form.basic.schema, + 'partitions' : $scope.form.basic.partitions, + 'owner' : $scope.form.basic.owner + } + + $http.post($config.uri.adddataasset, msg).success(function() { + $('#confirm-pu').on('hidden.bs.modal', function(e) { + $('#confirm-pu').off('hidden.bs.modal'); + $location.path('/dataassets'); + $scope.$apply(); + }); + + $('#confirm-pu').modal('hide'); + + }).error(function(data){ + toaster.pop('error', 'Save data asset failed, please try again!', data.message); + }); + }, + + }; + + var errorMessage = function(i, msg) { + var errorMsgs = ['Please input valid values']; + if (!msg) { + toaster.pop('error', 'Error', errorMsgs[i - 1], 0); + } else { + toaster.pop('error', 'Error', msg, 0); + } + }; + + }]); +});