Repository: incubator-sdap-mudrod Updated Branches: refs/heads/master [created] 7b76fa168
http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/js/libs/underscore-min.js ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/js/libs/underscore-min.js b/web/META-INF/resources/js/libs/underscore-min.js new file mode 100644 index 0000000..f01025b --- /dev/null +++ b/web/META-INF/resources/js/libs/underscore-min.js @@ -0,0 +1,6 @@ +// Underscore.js 1.8.3 +// http://underscorejs.org +// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. +(function(){function n(n){function t(t,r,e,u,i,o){for(;i>=0&&o>i;i+=n){var a=u?u[i]:i;e=r(e,t[a],a,t)}return e}return function(r,e,u,i){e=b(e,i,4);var o=!k(r)&&m.keys(r),a=(o||r).length,c=n>0?0:a-1;return arguments.length<3&&(u=r[o?o[c]:c],c+=n),t(r,e,u,o,c,a)}}function t(n){return function(t,r,e){r=x(r,e);for(var u=O(t),i=n>0?0:u-1;i>=0&&u>i;i+=n)if(r(t[i],i,t))return i;return-1}}function r(n,t,r){return function(e,u,i){var o=0,a=O(e);if("number"==typeof i)n>0?o=i>=0?i:Math.max(i+a,o):a=i>=0?Math.min(i+1,a):i+a+1;else if(r&&i&&a)return i=r(e,u),e[i]===u?i:-1;if(u!==u)return i=t(l.call(e,o,a),m.isNaN),i>=0?i+o:-1;for(i=n>0?o:a-1;i>=0&&a>i;i+=n)if(e[i]===u)return i;return-1}}function e(n,t){var r=I.length,e=n.constructor,u=m.isFunction(e)&&e.prototype||a,i="constructor";for(m.has(n,i)&&!m.contains(t,i)&&t.push(i);r--;)i=I[r],i in n&&n[i]!==u[i]&&!m.contains(t,i)&&t.push(i)}var u=this,i=u._,o=Array.prototype,a=Object.prototype,c=Function.prototype,f=o.push,l=o.slice,s=a.toString,p=a.h asOwnProperty,h=Array.isArray,v=Object.keys,g=c.bind,y=Object.create,d=function(){},m=function(n){return n instanceof m?n:this instanceof m?void(this._wrapped=n):new m(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=m),exports._=m):u._=m,m.VERSION="1.8.3";var b=function(n,t,r){if(t===void 0)return n;switch(null==r?3:r){case 1:return function(r){return n.call(t,r)};case 2:return function(r,e){return n.call(t,r,e)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,i){return n.call(t,r,e,u,i)}}return function(){return n.apply(t,arguments)}},x=function(n,t,r){return null==n?m.identity:m.isFunction(n)?b(n,t,r):m.isObject(n)?m.matcher(n):m.property(n)};m.iteratee=function(n,t){return x(n,t,1/0)};var _=function(n,t){return function(r){var e=arguments.length;if(2>e||null==r)return r;for(var u=1;e>u;u++)for(var i=arguments[u],o=n(i),a=o.length,c=0;a>c;c++){var f=o[c];t&&r[f]!==void 0||(r[f]=i[f])}return r}} ,j=function(n){if(!m.isObject(n))return{};if(y)return y(n);d.prototype=n;var t=new d;return d.prototype=null,t},w=function(n){return function(t){return null==t?void 0:t[n]}},A=Math.pow(2,53)-1,O=w("length"),k=function(n){var t=O(n);return"number"==typeof t&&t>=0&&A>=t};m.each=m.forEach=function(n,t,r){t=b(t,r);var e,u;if(k(n))for(e=0,u=n.length;u>e;e++)t(n[e],e,n);else{var i=m.keys(n);for(e=0,u=i.length;u>e;e++)t(n[i[e]],i[e],n)}return n},m.map=m.collect=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=Array(u),o=0;u>o;o++){var a=e?e[o]:o;i[o]=t(n[a],a,n)}return i},m.reduce=m.foldl=m.inject=n(1),m.reduceRight=m.foldr=n(-1),m.find=m.detect=function(n,t,r){var e;return e=k(n)?m.findIndex(n,t,r):m.findKey(n,t,r),e!==void 0&&e!==-1?n[e]:void 0},m.filter=m.select=function(n,t,r){var e=[];return t=x(t,r),m.each(n,function(n,r,u){t(n,r,u)&&e.push(n)}),e},m.reject=function(n,t,r){return m.filter(n,m.negate(x(t)),r)},m.every=m.all=function(n,t,r){t=x(t,r);for(var e=!k(n) &&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(!t(n[o],o,n))return!1}return!0},m.some=m.any=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(t(n[o],o,n))return!0}return!1},m.contains=m.includes=m.include=function(n,t,r,e){return k(n)||(n=m.values(n)),("number"!=typeof r||e)&&(r=0),m.indexOf(n,t,r)>=0},m.invoke=function(n,t){var r=l.call(arguments,2),e=m.isFunction(t);return m.map(n,function(n){var u=e?t:n[t];return null==u?u:u.apply(n,r)})},m.pluck=function(n,t){return m.map(n,m.property(t))},m.where=function(n,t){return m.filter(n,m.matcher(t))},m.findWhere=function(n,t){return m.find(n,m.matcher(t))},m.max=function(n,t,r){var e,u,i=-1/0,o=-1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],e>i&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(u>o||u===-1/0&&i===-1/0)&&(i=n,o=u)});return i},m.min=function(n,t,r){var e,u,i=1/0,o=1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],i>e&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(o>u||1/0===u&&1/0===i)&&(i=n,o=u)});return i},m.shuffle=function(n){for(var t,r=k(n)?n:m.values(n),e=r.length,u=Array(e),i=0;e>i;i++)t=m.random(0,i),t!==i&&(u[i]=u[t]),u[t]=r[i];return u},m.sample=function(n,t,r){return null==t||r?(k(n)||(n=m.values(n)),n[m.random(n.length-1)]):m.shuffle(n).slice(0,Math.max(0,t))},m.sortBy=function(n,t,r){return t=x(t,r),m.pluck(m.map(n,function(n,r,e){return{value:n,index:r,criteria:t(n,r,e)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=x(r,e),m.each(t,function(e,i){var o=r(e,i,t);n(u,e,o)}),u}};m.groupBy=F(function(n,t,r){m.has(n,r)?n[r].push(t):n[r]=[t]}),m.indexBy=F(function(n,t,r){n[r]=t}),m.countBy=F(function(n,t,r){m.has(n,r)?n[r]++:n[r]=1}),m.toArray=function(n){return n?m.isArray(n)?l.c all(n):k(n)?m.map(n,m.identity):m.values(n):[]},m.size=function(n){return null==n?0:k(n)?n.length:m.keys(n).length},m.partition=function(n,t,r){t=x(t,r);var e=[],u=[];return m.each(n,function(n,r,i){(t(n,r,i)?e:u).push(n)}),[e,u]},m.first=m.head=m.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:m.initial(n,n.length-t)},m.initial=function(n,t,r){return l.call(n,0,Math.max(0,n.length-(null==t||r?1:t)))},m.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:m.rest(n,Math.max(0,n.length-t))},m.rest=m.tail=m.drop=function(n,t,r){return l.call(n,null==t||r?1:t)},m.compact=function(n){return m.filter(n,m.identity)};var S=function(n,t,r,e){for(var u=[],i=0,o=e||0,a=O(n);a>o;o++){var c=n[o];if(k(c)&&(m.isArray(c)||m.isArguments(c))){t||(c=S(c,t,r));var f=0,l=c.length;for(u.length+=l;l>f;)u[i++]=c[f++]}else r||(u[i++]=c)}return u};m.flatten=function(n,t){return S(n,t,!1)},m.without=function(n){return m.difference(n,l.call(arguments,1))},m.uniq=m.unique=function(n,t, r,e){m.isBoolean(t)||(e=r,r=t,t=!1),null!=r&&(r=x(r,e));for(var u=[],i=[],o=0,a=O(n);a>o;o++){var c=n[o],f=r?r(c,o,n):c;t?(o&&i===f||u.push(c),i=f):r?m.contains(i,f)||(i.push(f),u.push(c)):m.contains(u,c)||u.push(c)}return u},m.union=function(){return m.uniq(S(arguments,!0,!0))},m.intersection=function(n){for(var t=[],r=arguments.length,e=0,u=O(n);u>e;e++){var i=n[e];if(!m.contains(t,i)){for(var o=1;r>o&&m.contains(arguments[o],i);o++);o===r&&t.push(i)}}return t},m.difference=function(n){var t=S(arguments,!0,!0,1);return m.filter(n,function(n){return!m.contains(t,n)})},m.zip=function(){return m.unzip(arguments)},m.unzip=function(n){for(var t=n&&m.max(n,O).length||0,r=Array(t),e=0;t>e;e++)r[e]=m.pluck(n,e);return r},m.object=function(n,t){for(var r={},e=0,u=O(n);u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},m.findIndex=t(1),m.findLastIndex=t(-1),m.sortedIndex=function(n,t,r,e){r=x(r,e,1);for(var u=r(t),i=0,o=O(n);o>i;){var a=Math.floor((i+o)/2);r(n[a])<u?i=a+1:o=a}return i},m.i ndexOf=r(1,m.findIndex,m.sortedIndex),m.lastIndexOf=r(-1,m.findLastIndex),m.range=function(n,t,r){null==t&&(t=n||0,n=0),r=r||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=Array(e),i=0;e>i;i++,n+=r)u[i]=n;return u};var E=function(n,t,r,e,u){if(!(e instanceof t))return n.apply(r,u);var i=j(n.prototype),o=n.apply(i,u);return m.isObject(o)?o:i};m.bind=function(n,t){if(g&&n.bind===g)return g.apply(n,l.call(arguments,1));if(!m.isFunction(n))throw new TypeError("Bind must be called on a function");var r=l.call(arguments,2),e=function(){return E(n,e,t,this,r.concat(l.call(arguments)))};return e},m.partial=function(n){var t=l.call(arguments,1),r=function(){for(var e=0,u=t.length,i=Array(u),o=0;u>o;o++)i[o]=t[o]===m?arguments[e++]:t[o];for(;e<arguments.length;)i.push(arguments[e++]);return E(n,r,this,this,i)};return r},m.bindAll=function(n){var t,r,e=arguments.length;if(1>=e)throw new Error("bindAll must be passed function names");for(t=1;e>t;t++)r=arguments[t],n[r]=m.bind(n[r],n);return n},m. memoize=function(n,t){var r=function(e){var u=r.cache,i=""+(t?t.apply(this,arguments):e);return m.has(u,i)||(u[i]=n.apply(this,arguments)),u[i]};return r.cache={},r},m.delay=function(n,t){var r=l.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},m.defer=m.partial(m.delay,m,1),m.throttle=function(n,t,r){var e,u,i,o=null,a=0;r||(r={});var c=function(){a=r.leading===!1?0:m.now(),o=null,i=n.apply(e,u),o||(e=u=null)};return function(){var f=m.now();a||r.leading!==!1||(a=f);var l=t-(f-a);return e=this,u=arguments,0>=l||l>t?(o&&(clearTimeout(o),o=null),a=f,i=n.apply(e,u),o||(e=u=null)):o||r.trailing===!1||(o=setTimeout(c,l)),i}},m.debounce=function(n,t,r){var e,u,i,o,a,c=function(){var f=m.now()-o;t>f&&f>=0?e=setTimeout(c,t-f):(e=null,r||(a=n.apply(i,u),e||(i=u=null)))};return function(){i=this,u=arguments,o=m.now();var f=r&&!e;return e||(e=setTimeout(c,t)),f&&(a=n.apply(i,u),i=u=null),a}},m.wrap=function(n,t){return m.partial(t,n)},m.negate=function(n){return func tion(){return!n.apply(this,arguments)}},m.compose=function(){var n=arguments,t=n.length-1;return function(){for(var r=t,e=n[t].apply(this,arguments);r--;)e=n[r].call(this,e);return e}},m.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},m.before=function(n,t){var r;return function(){return--n>0&&(r=t.apply(this,arguments)),1>=n&&(t=null),r}},m.once=m.partial(m.before,2);var M=!{toString:null}.propertyIsEnumerable("toString"),I=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];m.keys=function(n){if(!m.isObject(n))return[];if(v)return v(n);var t=[];for(var r in n)m.has(n,r)&&t.push(r);return M&&e(n,t),t},m.allKeys=function(n){if(!m.isObject(n))return[];var t=[];for(var r in n)t.push(r);return M&&e(n,t),t},m.values=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},m.mapObject=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=u.length,o={},a=0;i>a;a++)e=u[a],o[e]=t(n[e],e ,n);return o},m.pairs=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},m.invert=function(n){for(var t={},r=m.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},m.functions=m.methods=function(n){var t=[];for(var r in n)m.isFunction(n[r])&&t.push(r);return t.sort()},m.extend=_(m.allKeys),m.extendOwn=m.assign=_(m.keys),m.findKey=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=0,o=u.length;o>i;i++)if(e=u[i],t(n[e],e,n))return e},m.pick=function(n,t,r){var e,u,i={},o=n;if(null==o)return i;m.isFunction(t)?(u=m.allKeys(o),e=b(t,r)):(u=S(arguments,!1,!1,1),e=function(n,t,r){return t in r},o=Object(o));for(var a=0,c=u.length;c>a;a++){var f=u[a],l=o[f];e(l,f,o)&&(i[f]=l)}return i},m.omit=function(n,t,r){if(m.isFunction(t))t=m.negate(t);else{var e=m.map(S(arguments,!1,!1,1),String);t=function(n,t){return!m.contains(e,t)}}return m.pick(n,t,r)},m.defaults=_(m.allKeys,!0),m.create=function(n,t){var r=j(n);return t&&m.extendOwn(r,t),r},m.clone= function(n){return m.isObject(n)?m.isArray(n)?n.slice():m.extend({},n):n},m.tap=function(n,t){return t(n),n},m.isMatch=function(n,t){var r=m.keys(t),e=r.length;if(null==n)return!e;for(var u=Object(n),i=0;e>i;i++){var o=r[i];if(t[o]!==u[o]||!(o in u))return!1}return!0};var N=function(n,t,r,e){if(n===t)return 0!==n||1/n===1/t;if(null==n||null==t)return n===t;n instanceof m&&(n=n._wrapped),t instanceof m&&(t=t._wrapped);var u=s.call(n);if(u!==s.call(t))return!1;switch(u){case"[object RegExp]":case"[object String]":return""+n==""+t;case"[object Number]":return+n!==+n?+t!==+t:0===+n?1/+n===1/t:+n===+t;case"[object Date]":case"[object Boolean]":return+n===+t}var i="[object Array]"===u;if(!i){if("object"!=typeof n||"object"!=typeof t)return!1;var o=n.constructor,a=t.constructor;if(o!==a&&!(m.isFunction(o)&&o instanceof o&&m.isFunction(a)&&a instanceof a)&&"constructor"in n&&"constructor"in t)return!1}r=r||[],e=e||[];for(var c=r.length;c--;)if(r[c]===n)return e[c]===t;if(r.push(n),e.push(t) ,i){if(c=n.length,c!==t.length)return!1;for(;c--;)if(!N(n[c],t[c],r,e))return!1}else{var f,l=m.keys(n);if(c=l.length,m.keys(t).length!==c)return!1;for(;c--;)if(f=l[c],!m.has(t,f)||!N(n[f],t[f],r,e))return!1}return r.pop(),e.pop(),!0};m.isEqual=function(n,t){return N(n,t)},m.isEmpty=function(n){return null==n?!0:k(n)&&(m.isArray(n)||m.isString(n)||m.isArguments(n))?0===n.length:0===m.keys(n).length},m.isElement=function(n){return!(!n||1!==n.nodeType)},m.isArray=h||function(n){return"[object Array]"===s.call(n)},m.isObject=function(n){var t=typeof n;return"function"===t||"object"===t&&!!n},m.each(["Arguments","Function","String","Number","Date","RegExp","Error"],function(n){m["is"+n]=function(t){return s.call(t)==="[object "+n+"]"}}),m.isArguments(arguments)||(m.isArguments=function(n){return m.has(n,"callee")}),"function"!=typeof/./&&"object"!=typeof Int8Array&&(m.isFunction=function(n){return"function"==typeof n||!1}),m.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))} ,m.isNaN=function(n){return m.isNumber(n)&&n!==+n},m.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"===s.call(n)},m.isNull=function(n){return null===n},m.isUndefined=function(n){return n===void 0},m.has=function(n,t){return null!=n&&p.call(n,t)},m.noConflict=function(){return u._=i,this},m.identity=function(n){return n},m.constant=function(n){return function(){return n}},m.noop=function(){},m.property=w,m.propertyOf=function(n){return null==n?function(){}:function(t){return n[t]}},m.matcher=m.matches=function(n){return n=m.extendOwn({},n),function(t){return m.isMatch(t,n)}},m.times=function(n,t,r){var e=Array(Math.max(0,n));t=b(t,r,1);for(var u=0;n>u;u++)e[u]=t(u);return e},m.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},m.now=Date.now||function(){return(new Date).getTime()};var B={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},T=m.invert(B),R=function(n){var t=function(t){return n[t]},r="(?:"+m.keys(n) .join("|")+")",e=RegExp(r),u=RegExp(r,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,t):n}};m.escape=R(B),m.unescape=R(T),m.result=function(n,t,r){var e=null==n?void 0:n[t];return e===void 0&&(e=r),m.isFunction(e)?e.call(n):e};var q=0;m.uniqueId=function(n){var t=++q+"";return n?n+t:t},m.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var K=/(.)^/,z={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\u2028|\u2029/g,L=function(n){return"\\"+z[n]};m.template=function(n,t,r){!t&&r&&(t=r),t=m.defaults({},t,m.templateSettings);var e=RegExp([(t.escape||K).source,(t.interpolate||K).source,(t.evaluate||K).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(t,r,e,o,a){return i+=n.slice(u,a).replace(D,L),u=a+t.length,r?i+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":e?i+="'+\n((__t=("+e+"))==null?'':__t)+\n'":o&&(i+="';\n"+o+"\n__p+='"),t}),i+="';\n",t.variable||(i ="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{var o=new Function(t.variable||"obj","_",i)}catch(a){throw a.source=i,a}var c=function(n){return o.call(this,n,m)},f=t.variable||"obj";return c.source="function("+f+"){\n"+i+"}",c},m.chain=function(n){var t=m(n);return t._chain=!0,t};var P=function(n,t){return n._chain?m(t).chain():t};m.mixin=function(n){m.each(m.functions(n),function(t){var r=m[t]=n[t];m.prototype[t]=function(){var n=[this._wrapped];return f.apply(n,arguments),P(this,r.apply(m,n))}})},m.mixin(m),m.each(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=o[n];m.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!==n&&"splice"!==n||0!==r.length||delete r[0],P(this,r)}}),m.each(["concat","join","slice"],function(n){var t=o[n];m.prototype[n]=function(){return P(this,t.apply(this._wrapped,arguments))}}),m.prototype.value=f unction(){return this._wrapped},m.prototype.valueOf=m.prototype.toJSON=m.prototype.value,m.prototype.toString=function(){return""+this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return m})}).call(this); +//# sourceMappingURL=underscore-min.map \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/js/services.js ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/js/services.js b/web/META-INF/resources/js/services.js new file mode 100755 index 0000000..3d80be4 --- /dev/null +++ b/web/META-INF/resources/js/services.js @@ -0,0 +1,127 @@ +/* + * 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. + */ + +'use strict'; + +/* Services */ + +var mudrodServices = angular.module('mudrodServices', ['ngResource']); + +mudrodServices.factory('MetaData', ['$resource', + function($resource) { + return $resource("services/metadata/search/", {}, { + get: {method: 'GET', cache: false, isArray: false} + }); + }]); + +mudrodServices.factory('VocabList', ['$resource', + function($resource) { + return $resource("services/vocabulary/search/", {}, { + get: {method: 'GET', cache: false, isArray: false} + }); + }]); + +mudrodServices.factory('Autocomplete', ['$resource', + function($resource) { + return $resource("services/autocomplete/query", {}, { + get: {method: 'GET', cache: false, isArray: true} + }); + }]); + +mudrodServices.factory('DatasetDetail', ['$resource', + function($resource) { + return $resource("services/datasetdetail/search/", {}, { + get: {method: 'GET', cache: false, isArray: false} + }); + }]); + +mudrodServices.factory('HRecommendation', ['$resource', + function($resource) { + return $resource("services/hrecommendation/search/", {}, { + get: {method: 'GET', cache: false, isArray: false} + }); + }]); + +mudrodServices.factory('SearchOptions', function(){ + var searchOptions = {'opt':'Or'}; + return { + getSearchOptions: function () { + return searchOptions; + }, + setSearchOptions: function (value) { + searchOptions = value; + } + }; +}); + +mudrodServices.factory('PagerService', + function() { + // service definition + var service = {}; + + service.GetPager = GetPager; + + return service; + + // service implementation + function GetPager(totalItems, currentPage, pageSize) { + // default to first page + currentPage = currentPage || 1; + + // default page size is 10 + pageSize = pageSize || 10; + + // calculate total pages + var totalPages = Math.ceil(totalItems / pageSize); + + var startPage, endPage; + if (totalPages <= 10) { + // less than 10 total pages so show all + startPage = 1; + endPage = totalPages; + } else { + // more than 10 total pages so calculate start and end pages + if (currentPage <= 6) { + startPage = 1; + endPage = 10; + } else if (currentPage + 4 >= totalPages) { + startPage = totalPages - 9; + endPage = totalPages; + } else { + startPage = currentPage - 5; + endPage = currentPage + 4; + } + } + + // calculate start and end item indexes + var startIndex = (currentPage - 1) * pageSize; + var endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1); + + // create an array of pages to ng-repeat in the pager control + var pages = _.range(startPage, endPage + 1); + + // return object with all pager properties required by the view + return { + totalItems: totalItems, + currentPage: currentPage, + pageSize: pageSize, + totalPages: totalPages, + startPage: startPage, + endPage: endPage, + startIndex: startIndex, + endIndex: endIndex, + pages: pages + }; + } + }); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/partials/datasetResults.html ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/partials/datasetResults.html b/web/META-INF/resources/partials/datasetResults.html new file mode 100644 index 0000000..4e21b87 --- /dev/null +++ b/web/META-INF/resources/partials/datasetResults.html @@ -0,0 +1,152 @@ +<!-- + 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 ng-include src="'partials/navbar-search.html'"></div> + +<div id="container" class="container view-area-fixed"> + <div class="row no-gutter content-holder"> + <div class="col-md-9 col-sm-8" id="content"> + <div class="panel panel-primary post-holder"> + <div class="panel-heading"> + <h4 class="panel-title"> + <strong class="title">{{dataset['Short Name']}}</strong> + </h4> + </div> + <div class="panel-body"> + <table class="table table-strip"> + <tbody> + <tr> + <td>Long Name</td> + <td>{{dataset['Long Name']}}</td> + </tr> + <tr> + <td>Landing Page</td> + <td> + <a ng-href="https://podaac.jpl.nasa.gov/dataset/{{dataset['Short Name'] | urlencode}}" target="_blank">https://podaac.jpl.nasa.gov/dataset/{{dataset['Short Name']}}</a> + </td> + </tr> + <tr> + <td>DOI</td> + <td> + <a ng-if="dataset['Dataset-Doi']" ng-href="https://podaac.jpl.nasa.gov/dataset/{{dataset['Short Name'] | urlencode}}" target="_blank">{{dataset['Dataset-Doi']}}</a> + <span ng-if="!dataset['Dataset-Doi']">Not Registered</span> + </td> + </tr> + <tr> + <td>Measurement</td> + <td> + <p ng-repeat="measurement in dataset['Measurements'] track by $index"> + <span ng-repeat="element in measurement track by $index"><a ng-href="#/metadataView?query={{element | urlencode}}">{{element}}</a>{{$last ? '' : ' > '}}</span> + </p> + </td> + </tr> + <tr> + <td>Version</td> + <td>{{dataset['Version'].join(', ')}}</td> + </tr> + <tr> + <td>Description</td> + <td>{{dataset['Dataset-Description']}}</td> + </tr> + <tr> + <td>Processing Level</td> + <td>{{dataset['Processing Level']}}</td> + </tr> + <tr> + <td>Coverage</td> + <td> + Region: {{dataset['Region'].join(', ')}}<br> + Northernmost Latitude: {{dataset['NorthLat']}} degrees<br> + Southernmost Latitude: {{dataset['NorthLat']}} degrees<br> + Westernmost Longitude: {{dataset['WestLon']}} degrees<br> + Easternmost Longitude: {{dataset['EastLon']}} degrees<br> + Time Span: {{dataset['Time Span']}} + </td> + </tr> + <tr> + <td>Spatial Resolution</td> + <td>{{dataset['SpatialResolution']}}</td> + </tr> + <tr> + <td>Temporal Repeat</td> + <td>{{dataset['TemporalResolution']}}</td> + </tr> + <tr> + <td>Sensor</td> + <td> + <a ng-repeat="sensor in dataset['DatasetSource-Sensor-ShortName']" ng-href="#/metadataView?query={{sensor | urlencode}}">{{sensor}}{{$last ? '' : ', '}}</a> + </td> + </tr> + <tr> + <td>Project</td> + <td> + <a ng-repeat="project in dataset['DatasetProject-Project-ShortName']" ng-href="#/metadataView?query={{project | urlencode}}">{{project}}{{$last ? '' : ', '}}</a> + </td> + </tr> + <tr> + <td>Format</td> + <td>{{dataset['DataFormat']}}</td> + </tr> + <tr> + <td>Data Access</td> + <td> + <p ng-repeat="path in dataset['DatasetLocationPolicy-BasePath']"> + <a ng-href="{{path}}" target="_blank">{{path}}</a> + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="col-md-3 col-sm-4"> + <div class="panel-group"> + <div class="panel panel-primary sidenav"> + <div class="panel-heading"> + <h4 class="panel-title"> + <a data-toggle="collapse" data-parent="#accordion" data-target="#collapse1">Related Datasets</a> + </h4> + </div> + <div id="collapse1" class="panel-collapse collapse in"> + <div class="panel-body" ng-controller="hRecommendationCtrl"> + <div class="list-related-searches" ng-repeat="recommendation in recommendationList"> + <a title="{{recommendation['name']}}" ng-href="#/datasetView?shortname={{recommendation['name'] | urlencode}}">{{recommendation['name']}}</a> + </div> + <div class="learn-more"> + <a href="https://mudrod.github.io/recommendation-algorithms/" target="_blank">How does MUDROD find related Datasets?</a> + </div> + </div> + </div> + </div> + <div class="panel panel-primary sidenav"> + <div class="panel-heading"> + <h4 class="panel-title"> + <a data-toggle="collapse" data-parent="#accordion" data-target="#collapse2">Related Keyword Searches</a> + </h4> + </div> + <div id="collapse2" class="panel-collapse collapse in"> + <div class="panel-body" ng-controller="vocabularyCtrl"> + <div class="list-related-searches" ng-repeat="ontology in ontologyList"> + <a title="{{ontology['word']}}" ng-href="#/metadataView?query={{ontology['word'] | urlencode}}">{{ontology['word'] | uppercase}} ({{ontology['weight']}})</a> + </div> + <div class="learn-more"> + <a href="https://mudrod.github.io/vocabulary-similarity-algorithm/" target="_blank">How does MUDROD find related keyword searches?</a> + </div> + </div> + </div> + </div> + </div> + </div> + </div> +</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/partials/footer.html ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/partials/footer.html b/web/META-INF/resources/partials/footer.html new file mode 100644 index 0000000..13d526b --- /dev/null +++ b/web/META-INF/resources/partials/footer.html @@ -0,0 +1,19 @@ +<!-- + 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. + --> + +<!-- + + This file can be used to provide a customized footer for the MUDROD website. It is currently left empty. + + --> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/partials/main-header.html ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/partials/main-header.html b/web/META-INF/resources/partials/main-header.html new file mode 100644 index 0000000..6db05dc --- /dev/null +++ b/web/META-INF/resources/partials/main-header.html @@ -0,0 +1,19 @@ +<!-- + 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. + --> + +<!-- + + This file can be used to provide a customized header for the MUDROD website. It is currently left empty. + + --> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/partials/metadataResults.html ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/partials/metadataResults.html b/web/META-INF/resources/partials/metadataResults.html new file mode 100755 index 0000000..8daf6e7 --- /dev/null +++ b/web/META-INF/resources/partials/metadataResults.html @@ -0,0 +1,50 @@ +<!-- + 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 ng-include src="'partials/navbar-search.html'"></div> + +<div id="container" class="container view-area-fixed" ng-controller="metadataViewCtrl as vm"> + <div class="row no-gutter content-holder"> + <div class="col-md-9 col-sm-8" id="content"> + + <ng-include ng-if="!searchComplete" ng-model="searchComplete" src="'partials/search-in-progress.html'"></ng-include> + <ng-include ng-if="searchComplete" ng-model="searchComplete" src="'partials/search-results.html'"></ng-include> + + </div> + + <div class="col-md-3 col-sm-4"> + <div class="panel panel-primary sidenav"> + <div class="panel-heading"> + <h4 class="panel-title"> + <a data-toggle="collapse" data-parent="#accordion" data-target="#collapse1">Related Searches</a> + </h4> + </div> + <div id="collapse1" class="panel-collapse collapse in"> + <div class="panel-body" ng-controller="vocabularyCtrl"> + <div ng-if="searchComplete && ontologyList.length > 0" ng-model="searchComplete" class="list-related-searches" ng-repeat="ontology in ontologyList"> + <a ng-href="#/metadataView?query={{ontology['word'] | urlencode}}" title="{{ontology['word']}}">{{ontology['word'] | uppercase}} ({{ontology['weight']}})</a> + </div> + + <div ng-if="searchComplete && ontologyList.length === 0" ng-model="searchComplete"> + <span style="font-size: 1em;">No related searches found</span> + </div> + + <div ng-if="!searchComplete" ng-model="searchComplete" id="spinner"> + <img src="images/spinner.gif" title="Search in progress" style="height: 5em;"> + </div> + </div> + </div> + </div> + </div> + </div> +</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/partials/navbar-plain.html ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/partials/navbar-plain.html b/web/META-INF/resources/partials/navbar-plain.html new file mode 100755 index 0000000..ce4e811 --- /dev/null +++ b/web/META-INF/resources/partials/navbar-plain.html @@ -0,0 +1,35 @@ +<!-- + 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. + --> +<header> + <nav class="navbar navbar-inverse mudrod-navbar"> + <div class="container-fluid"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#mudrod-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 class="navbar-brand navbar-link" href="https://mudrod.github.io/">MUDROD</a> + </div> + <div class="collapse navbar-collapse" id="mudrod-collapse"> + <div class="nav navbar-nav"> + <div class="nav-item active"> + <a class="nav-link" href="#/">Home <span class="sr-only">(current)</span></a> + </div> + </div> + </div> + </div> + </nav> +</header> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/partials/navbar-search.html ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/partials/navbar-search.html b/web/META-INF/resources/partials/navbar-search.html new file mode 100755 index 0000000..fdc99da --- /dev/null +++ b/web/META-INF/resources/partials/navbar-search.html @@ -0,0 +1,62 @@ +<!-- + 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. + --> +<header> + + <nav class="navbar navbar-inverse mudrod-navbar"> + <div class="container-fluid"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#mudrod-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 class="navbar-brand navbar-link" href="https://mudrod.github.io/">MUDROD</a> + </div> + <div class="collapse navbar-collapse" id="mudrod-collapse"> + <div class="nav navbar-nav"> + <div class="nav-item active"> + <a class="nav-link" href="#/">Home <span class="sr-only">(current)</span></a> + </div> + </div> + + <form id="searchForm" class="navbar-form navbar-right" autocomplete="off" ng-controller="searchCtrl"> + <div class="form-group"> + <input id="query" type="text" role="search" class="form-control" ng-model="options.query" ng-keyup="complete(options.query)" + placeholder="Enter ocean concepts (e.g. ocean wind) to search"> + <ul class="list-group search-ul autocomplete" ng-model="hidethis" ng-hide="hidethis"> + <li class="list-group-item" ng-repeat="searchdata in filterSearch" ng-click="fillTextbox(searchdata.value)">{{searchdata.value}}</li> + </ul> + <button class="btn btn-default" id="search-btn" ng-click="search(options)" + type="submit"> + <i class="glyphicon glyphicon-search"></i> + </button> + <div class="searchOption input-group" id="searchOption"> + <label for="searchOption" style="padding-right: .5em;">Search Operator: </label> + <label class="radio-inline"> + <input type="radio" ng-model="options.opt" value="Or">Or + </label> + <label class="radio-inline"> + <input type="radio" ng-model="options.opt" value="Phrase"> Phrase + </label> + <label class="radio-inline"> + <input type="radio" ng-model="options.opt" value="And"> And + </label> + </div> + </div> + </form> + </div> + </div> + </nav> +</header> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/partials/search-in-progress.html ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/partials/search-in-progress.html b/web/META-INF/resources/partials/search-in-progress.html new file mode 100644 index 0000000..ea776d2 --- /dev/null +++ b/web/META-INF/resources/partials/search-in-progress.html @@ -0,0 +1,12 @@ +<div class="panel panel-primary post-holder"> + <div class="panel-heading"> + <h4 class="panel-title"> + <strong class="title">Searching ...</strong> + </h4> + </div> + <div class="panel-body"> + <div id="spinner"> + <img src="images/spinner.gif" title="Search in progress"> + </div> + </div> +</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/partials/search-results.html ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/partials/search-results.html b/web/META-INF/resources/partials/search-results.html new file mode 100644 index 0000000..4dac2b5 --- /dev/null +++ b/web/META-INF/resources/partials/search-results.html @@ -0,0 +1,116 @@ +<div class="panel panel-primary post-holder"> + <div class="panel-heading"> + <select title="Sort By" class="title rankoption" name="rankOption" id="rankOption" ng-model="vm.rankopt" ng-change="vm.rankData(vm.rankopt)" ng-if="!vm.searchError"> + <option value="Rank-SVM">Default (Machine Learning Ranking)</option> + <option value="Rank-AllTimePopularity">Popularity (All Time)</option> + <option value="Rank-MonthlyPopularity">Popularity (This Month)</option> + <option value="Rank-UserPopularity">Popularity (Users)</option> + <option value="Rank-LongName-Full">Long Name (A-Z)</option> + <option value="Rank-ShortName-Full">Short Name (A-Z)</option> + <option value="Rank-GridSpatialResolution">Grid Spatial Resolution</option> + <option value="Rank-SatelliteSpatialResolution">Satellite Spatial Resolution</option> + <option value="Rank-StartTimeLong-Long">Start Date</option> + <option value="Rank-StopTimeLong-Long">Stop Date</option> + </select> + <h4 class="panel-title"> + <strong ng-if="vm.pager.pages.length > 1" class="title">Showing {{vm.items.length}} of {{vm.pager.totalItems}} total match(es)</strong> + <strong ng-if="vm.pager.pages.length <= 1" class="title">Showing {{vm.items.length}} total match(es)</strong> + <strong ng-if="vm.searchError" class="title">No matches</strong> + </h4> + </div> + <div class="panel-body"> + + <!-- pager --> + <ul ng-if="vm.pager.pages.length > 1" class="pagination" style="margin-top: 0"> + <li ng-class="{disabled:vm.pager.currentPage === 1}"> + <a ng-click="vm.setPage(1)">First</a> + </li> + <li ng-class="{disabled:vm.pager.currentPage === 1}"> + <a ng-click="vm.setPage(vm.pager.currentPage - 1)">Previous</a> + </li> + <li ng-repeat="page in vm.pager.pages" ng-class="{active:vm.pager.currentPage === page}"> + <a ng-click="vm.setPage(page)">{{page}}</a> + </li> + <li ng-class="{disabled:vm.pager.currentPage === vm.pager.totalPages}"> + <a ng-click="vm.setPage(vm.pager.currentPage + 1)">Next</a> + </li> + <li ng-class="{disabled:vm.pager.currentPage === vm.pager.totalPages}"> + <a ng-click="vm.setPage(vm.pager.totalPages)">Last</a> + </li> + </ul> + <hr style="clear:both; margin: 0; border: 0; border-bottom: 1px solid #c3c3c3;"> + <div ng-repeat="pdresult in vm.items"> + <article class="post"> + <a href="#/datasetView?shortname={{pdresult['Short Name'] | urlencode}}&query={{vm.query | urlencode}}&opt={{vm.opt | urlencode}}"> + <strong>Name:</strong> {{pdresult['Short Name']}} + </a> + <br><strong>Long Name:</strong> {{pdresult['Long Name']}} + <br><strong>Topic:</strong> + <span style="color:green" ng-click="vm.searchTopic(pdresult.Topic)">{{pdresult.Topic}}</span> + <br><strong>Platform/Sensors:</strong> {{pdresult['Sensor']}} + <br><strong>Processing Level:</strong> {{pdresult['Processing Level']}} + <br><strong>Start/End Date:</strong> {{pdresult['Start/End Date']}} + <br><strong>Description:</strong> + <div ng-init="limit = 150; moreShown = false"> + {{pdresult.Description | limitTo: limit}}{{pdresult.Description.length > limit ? '...' : ''}} + <a ng-show="pdresult.Description.length > limit" + href ng-click="limit=pdresult.Description.length; moreShown = true"> More + </a> + <a ng-show="moreShown" href ng-click="limit=150; moreShown = false"> Less </a> + </div> + </article> + </div> + <!-- pager --> + <ul ng-if="vm.pager.pages.length > 1" class="pagination"> + <li ng-class="{disabled:vm.pager.currentPage === 1}"> + <a ng-click="vm.setPage(1)">First</a> + </li> + <li ng-class="{disabled:vm.pager.currentPage === 1}"> + <a ng-click="vm.setPage(vm.pager.currentPage - 1)">Previous</a> + </li> + <li ng-repeat="page in vm.pager.pages" ng-class="{active:vm.pager.currentPage === page}"> + <a ng-click="vm.setPage(page)">{{page}}</a> + </li> + <li ng-class="{disabled:vm.pager.currentPage === vm.pager.totalPages}"> + <a ng-click="vm.setPage(vm.pager.currentPage + 1)">Next</a> + </li> + <li ng-class="{disabled:vm.pager.currentPage === vm.pager.totalPages}"> + <a ng-click="vm.setPage(vm.pager.totalPages)">Last</a> + </li> + </ul> + + <div ng-show="!vm.searchError && !vm.items.length"> + <article class="post"> + Your search did not match any dataset. + <br>Suggestion + <ul> + <li>Make sure all words are spelled correctly</li> + <li>Try different keywords</li> + <li>Try different search options</li> + </ul> + </article> + </div> + + <div ng-show="vm.searchError"> + <article class="post"> + There was an error while executing your search. + <br>Suggestion + <ul> + <li>Make sure all words are spelled correctly</li> + <li>Try different keywords</li> + <li>Try different search options</li> + </ul> + <br> + + <a ng-show="!showErrorDetails" ng-click="showErrorDetails = true;">Show error details</a> + <div ng-show="showErrorDetails" class="animate-show"> + <span>Error details:</span> + <br> + <pre>{{vm.searchError | json}}</pre> + <br> + <a ng-click="showErrorDetails = false;">Hide error details</a> + </div> + </article> + </div> + </div> +</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/META-INF/resources/partials/search.html ---------------------------------------------------------------------- diff --git a/web/META-INF/resources/partials/search.html b/web/META-INF/resources/partials/search.html new file mode 100644 index 0000000..5844cd1 --- /dev/null +++ b/web/META-INF/resources/partials/search.html @@ -0,0 +1,58 @@ +<!-- + 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 ng-include src="'partials/navbar-plain.html'"></div> + +<div id="container" class="container view-area-scroll"> + <div class="landing-dialog"> + <div class="landing-dialog-header"> + <h2>Oceanographic Data Discovery</h2> + </div> + <div class="searchBox toolbar"> + <div class="landing-toolbar-content"> + <form id="searchForm" class="search-form" autocomplete="off" ng-controller="searchCtrl"> + <div class="form-group" style="position: relative"> + + <input id="query" type="search" class="form-control" ng-model="options.query" ng-keyup="complete(options.query)" + placeholder="Enter ocean concepts (e.g. ocean wind) to search"> + <button id="search-btn" ng-click="search(options)" + type="submit"> + <span class="ico-search"></span> + </button> + <div style="position: absolute; padding-top: 1em;"> + <label for="searchOption" style="padding-right: 1em;">Search Operator:</label> + <div id="searchOption" class="btn-group" data-toggle="buttons"> + <label class="radio-inline"> + <input type="radio" ng-model="options.opt" value="Or">Or + </label> + <label class="radio-inline"> + <input type="radio" ng-model="options.opt" value="Phrase">Phrase + </label> + <label class="radio-inline"> + <input type="radio" ng-model="options.opt" value="And">And + </label> + </div> + </div> + <ul class="list-group autocomplete" ng-model="hidethis" ng-hide="hidethis"> + <li class="list-group-item" ng-repeat="searchdata in filterSearch" ng-click="fillTextbox(searchdata.value)">{{searchdata.value}}</li> + </ul> + </div> + </form> + + </div> + </div> + + + </div> + +</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-sdap-mudrod/blob/7b76fa16/web/pom.xml ---------------------------------------------------------------------- diff --git a/web/pom.xml b/web/pom.xml new file mode 100644 index 0000000..95b7c99 --- /dev/null +++ b/web/pom.xml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + 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. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>gov.nasa.jpl.mudrod</groupId> + <artifactId>mudrod-web</artifactId> + <version>0.0.1-SNAPSHOT</version> + <build> + <resources> + <resource> + <directory>${project.basedir}/META-INF</directory> + <targetPath>META-INF</targetPath> + </resource> + </resources> + </build> + <packaging>jar</packaging> + + <name>Mudrod :: Web</name> + <url>https://github.com/mudrod/mudrod.git</url> + <description>MUDROD: Mining and Utilizing Dataset Relevancy from + Oceanographic Datasets + to Improve Data Discovery and Access. MUDROD is a semantic discovery and + search project + funded by NASA AIST (NNX15AM85G). + </description> + + <licenses> + <license> + <name>The Apache Software License, Version 2.0</name> + <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> + </license> + </licenses> + + +</project>
