diff --git a/src/public/assets/scripts/main.js b/src/public/assets/scripts/main.js index d528757..dacf22a 100644 --- a/src/public/assets/scripts/main.js +++ b/src/public/assets/scripts/main.js @@ -1 +1 @@ -angular.module("dias.transects",["dias.api","dias.ui"]),angular.module("dias.transects").config(["$compileProvider",function(e){"use strict";e.debugInfoEnabled(!1)}]),angular.module("dias.transects").controller("FilterController",["$scope","images","filter",function(e,t,n){"use strict";e.active=n.hasRules,e.data={negate:"false",filter:null,selected:null},e.setFilterMode=function(e){n.setMode(e),t.updateFiltering()},e.isFilterMode=function(e){return n.getMode()===e},e.getFilters=n.getAll,e.addRule=function(){var r={filter:e.data.filter,negate:"true"===e.data.negate,data:e.data.selected};n.hasRule(r)||n.addRule(r).then(t.updateFiltering)},e.getRules=n.getAllRules,e.removeRule=function(e){n.removeRule(e),t.updateFiltering()},e.rulesLoading=n.rulesLoading,e.numberImages=n.getNumberImages,e.selectData=function(t){e.data.selected=t},e.resetFiltering=function(){n.reset(),t.updateFiltering()}}]),angular.module("dias.transects").controller("ImagesController",["$scope","$element","images","filter","keyboard",function(e,t,n,r,o){"use strict";var i=function(){n.updateGrid(t[0].clientWidth,t[0].clientHeight)},s=function(t){n.scrollRows(t),e.$apply()},a=function(t){n.scrollToPercent(t),e.$apply()};e.imageHasFlag=r.hasFlag,e.getImageIds=n.getSequence,t.bind("wheel",function(e){s(e.deltaY>=0?1:-1)}),o.on(38,function(){s(-1)}),o.on(40,function(){s(1)});var c=function(){s(-1*n.getRows())};o.on(37,c),o.on(33,c);var l=function(){s(n.getRows())};o.on(39,l),o.on(34,l),o.on(36,function(){a(0)}),o.on(35,function(){a(1)}),window.addEventListener("resize",function(){e.$apply(i)}),i(),n.initialize()}]),angular.module("dias.transects").controller("ProgressController",["$scope","images","debounce",function(e,t,n){"use strict";var r,o=!1,i=function(e){e.preventDefault(),r=e.target.getBoundingClientRect(),t.scrollToPercent((e.clientY-r.top)/r.height)};e.beginScrolling=function(){o=!0},e.stopScrolling=function(t){e.scroll(t),o=!1},e.scroll=function(e){o&&n(function(){i(e)},25,"transects.progress.scroll")},e.progress=function(){return 100*t.progress()+"%"},e.top=function(){t.scrollToPercent(0)},e.prevPage=function(){t.scrollRows(-1*t.getRows())},e.prevRow=function(){t.scrollRows(-1)},e.nextRow=function(){t.scrollRows(1)},e.nextPage=function(){t.scrollRows(t.getRows())},e.bottom=function(){t.scrollToPercent(1)},e.isAtTop=function(){return 0===t.progress()},e.isAtBottom=function(){return 1===t.progress()}}]),angular.module("dias.transects").controller("SortByFilenameController",["$scope","sort","TRANSECT_IMAGES",function(e,t,n){"use strict";var r="filename";e.active=function(){return t.isSorterActive("filename")},e.toggle=function(){e.active()||e.activateSorter(r,n)}}]),angular.module("dias.transects").controller("SortController",["$scope","sort","images",function(e,t,n){"use strict";var r={},o=!1;e.setCache=function(e,t){r[e]=t},e.getCache=function(e){return r[e]},e.hasCache=function(e){return r.hasOwnProperty(e)},e.active=t.isActive,e.setSortAscending=function(){t.setAscending(),n.updateSorting()},e.setSortDescending=function(){t.setDescending(),n.updateSorting()},e.isSortAscending=t.isAscending,e.isSortDescending=t.isDescending,e.activateSorter=function(e,r){t.activateSorter(e,r),n.updateSorting()},e.resetSorting=function(){t.reset(),n.updateSorting()},e.setLoading=function(e){o=e},e.isLoading=function(){return o}}]),angular.module("dias.transects").controller("SortRandomController",["$scope","sort","TRANSECT_IMAGES",function(e,t,n){"use strict";var r="random",o=function(e){var t,n,r;for(t=e.length-1;t>0;t--)n=Math.floor(Math.random()*(t+1)),r=e[t],e[t]=e[n],e[n]=r;return e};e.active=function(){return t.isSorterActive("random")},e.toggle=function(){e.active()||e.activateSorter(r,o(n.slice(0)))}}]),angular.module("dias.transects").directive("fallbackSrc",function(){"use strict";return{restrict:"A",link:function(e,t,n){t[0].onerror=function(){this.src=n.fallbackSrc}}}}),angular.module("dias.transects").factory("TransectImageOrderByFilename",["$resource","URL",function(e,t){"use strict";return e(t+"/api/v1/transects/:transect_id/images/order-by/filename")}]),angular.module("dias.transects").service("filter",["TRANSECT_ID","TRANSECT_IMAGES","filterSubset","filterExclude",function(e,t,n,r){"use strict";var o="filter",i=this,s="dias.transects."+e+".filter.rules",a="dias.transects."+e+".filter.mode",c=[],l=window.localStorage.getItem(a);l||(l=o);var u=JSON.parse(window.localStorage.getItem(s));u||(u=[]);var g=[],f=function(){angular.copy(t,g);for(var e,o=u.length-1;o>=0;o--)e=u[o],e.negate?r(g,e.ids):n(g,e.ids);u.length>0?window.localStorage.setItem(s,JSON.stringify(u)):window.localStorage.removeItem(s)};this.setMode=function(e){l=e,l!==o?window.localStorage.setItem(a,l):window.localStorage.removeItem(a)},this.getMode=function(){return l},this.add=function(e){if(!e.hasOwnProperty("name"))throw"A filter needs a name property";if(!e.hasOwnProperty("resource"))throw"A filter needs a resource property";c.push({name:e.name,resource:e.resource,typeahead:e.typeahead,transformData:e.transformData||angular.identity})},this.getAll=function(){return c},this.addRule=function(t){var n={filter:t.filter,negate:t.negate,data:t.data},r=function(){i.removeRule(n)},o=t.filter.transformData(t.data);return n.ids=t.filter.resource.query({transect_id:e,data:o},f,r),u.push(n),n.ids.$promise},this.getAllRules=function(){return u},this.removeRule=function(e){var t=u.indexOf(e);t>=0&&u.splice(t,1),f()},this.hasRule=function(e){for(var t,n=u.length-1;n>=0;n--)if(t=u[n],t.filter==e.filter&&t.negate==e.negate&&t.data==e.data)return!0;return!1},this.hasRules=function(){return u.length>0},this.rulesLoading=function(){for(var e=u.length-1;e>=0;e--)if(u[e].ids.$resolved===!1)return!0;return!1},this.getNumberImages=function(){return g.length},this.getSequence=function(){return"filter"===l?g:t},this.hasFlag=function(e){return"flag"===l?g.indexOf(e)>=0:!1},this.reset=function(){u.length=0,f()},f()}]),angular.module("dias.transects").service("images",["TRANSECT_ID","TRANSECT_IMAGES","filterSubset","filter","sort","THUMB_DIMENSION","urlParams","debounce",function(e,t,n,r,o,i,s,a){"use strict";var c="dias.transects."+e+".images",l="dias.transects."+e+".offset",u=[];window.localStorage[c]?(u=JSON.parse(window.localStorage[c]),n(u,t)):angular.copy(t,u);var g={cols:0,rows:0},f=8,d=0,m=null,h=[],S=function(){h=u.slice(m,m+g.cols*g.rows)},w=0,v=function(){w=Math.ceil(u.length/g.cols)-g.rows,null!==m&&R(m)},p=function(){var e=!1;o.isActive()?(e=!0,angular.copy(o.getSequence(),u),n(u,t)):angular.copy(t,u),r.hasRules()&&(e=!0,n(u,r.getSequence())),S(),e?window.localStorage[c]=JSON.stringify(u):window.localStorage.removeItem(c)},R=function(e){m=Math.max(0,Math.min(w*g.cols,e)),S(),m===d?(window.localStorage.removeItem(l),s.unset("offset")):(window.localStorage[l]=m,s.set({offset:m}))};this.updateSorting=function(){p()},this.updateFiltering=function(){p(),v()},this.progress=function(){return Math.max(0,Math.min(1,m/(u.length-g.cols*g.rows)))},this.updateGrid=function(e,t){g.cols=Math.floor(e/(i.WIDTH+f)),g.rows=Math.floor(t/(i.HEIGHT+f)),S(),v()},this.scrollRows=function(e){R(m+g.cols*e)},this.scrollToPercent=function(e){R(g.cols*Math.round(w*e))},this.getSequence=function(){return h},this.getRows=function(){return g.rows},this.getCols=function(){return g.cols},this.getLength=function(){return u.length},this.initialize=function(){R(void 0!==s.get("offset")?parseInt(s.get("offset")):window.localStorage[l]?parseInt(window.localStorage[l]):d)}}]),angular.module("dias.transects").service("sort",["TRANSECT_ID","TRANSECT_IMAGES",function(e,t){"use strict";var n="dias.transects."+e+".sorting.sorter",r="dias.transects."+e+".sorting.sequence",o="dias.transects."+e+".sorting.direction",i="asc",s="desc",a={DIRECTION:i,SORTER:"filename",SEQUENCE:t},c=window.localStorage.getItem(o);c||(c=a.DIRECTION);var l=window.localStorage.getItem(n);l||(l=a.SORTER);var u=JSON.parse(window.localStorage.getItem(r));u||(u=a.SEQUENCE);var g=function(e){c=e,c===a.DIRECTION?window.localStorage.removeItem(o):window.localStorage.setItem(o,c)};this.setAscending=function(){g(i)},this.setDescending=function(){g(s)},this.isAscending=function(){return c===i},this.isDescending=function(){return c===s},this.isSorterActive=function(e){return l===e},this.isActive=function(){return l!==a.SORTER||c!==a.DIRECTION},this.reset=function(){l=a.SORTER,window.localStorage.removeItem(n),u=a.SEQUENCE,window.localStorage.removeItem(r),c=a.DIRECTION,window.localStorage.removeItem(o)},this.activateSorter=function(e,t){if(l!==e){if(t.length!==a.SEQUENCE.length)throw"Requested sorting sequence length does not match the number of images in the transect!";l=e,l===a.SORTER?window.localStorage.removeItem(n):window.localStorage.setItem(n,l),u=t,u===a.SEQUENCE?window.localStorage.removeItem(r):window.localStorage.setItem(r,JSON.stringify(u))}},this.getSequence=function(){return c===s?u.slice().reverse():u}}]); \ No newline at end of file +angular.module("dias.transects",["dias.api","dias.ui"]),angular.module("dias.transects").config(["$compileProvider",function(e){"use strict";e.debugInfoEnabled(!1)}]),angular.module("dias.transects").controller("FilterController",["$scope","images","filter",function(e,t,n){"use strict";e.active=n.hasRules,e.data={negate:"false",filter:null,selected:null},e.setFilterMode=function(e){n.setMode(e),t.updateFiltering()},e.isFilterMode=function(e){return n.getMode()===e},e.getFilters=n.getAll,e.addRule=function(){var r={filter:e.data.filter,negate:"true"===e.data.negate,data:e.data.selected};n.hasRule(r)||n.addRule(r).then(t.updateFiltering)},e.getRules=n.getAllRules,e.removeRule=function(e){n.removeRule(e),t.updateFiltering()},e.rulesLoading=n.rulesLoading,e.numberImages=n.getNumberImages,e.selectData=function(t){e.data.selected=t},e.resetFiltering=function(){n.reset(),t.updateFiltering()}}]),angular.module("dias.transects").controller("ImagesController",["$scope","$element","images","filter","keyboard",function(e,t,n,r,o){"use strict";var i=function(){n.updateGrid(t[0].clientWidth,t[0].clientHeight)},s=function(t){n.scrollRows(t),e.$apply()},a=function(t){n.scrollToPercent(t),e.$apply()};e.imageHasFlag=r.hasFlag,e.getImageIds=n.getSequence,t.bind("wheel",function(e){s(e.deltaY>=0?1:-1)}),o.on(38,function(){s(-1)}),o.on(40,function(){s(1)});var c=function(){s(-1*n.getRows())};o.on(37,c),o.on(33,c);var l=function(){s(n.getRows())};o.on(39,l),o.on(34,l),o.on(36,function(){a(0)}),o.on(35,function(){a(1)}),window.addEventListener("resize",function(){e.$apply(i)}),i(),n.initialize()}]),angular.module("dias.transects").controller("ProgressController",["$scope","images","debounce",function(e,t,n){"use strict";var r,o=!1,i=function(e){e.preventDefault(),r=e.target.getBoundingClientRect(),t.scrollToPercent((e.clientY-r.top)/r.height)};e.beginScrolling=function(){o=!0},e.stopScrolling=function(t){e.scroll(t),o=!1},e.scroll=function(e){o&&n(function(){i(e)},25,"transects.progress.scroll")},e.progress=function(){return 100*t.progress()+"%"},e.top=function(){t.scrollToPercent(0)},e.prevPage=function(){t.scrollRows(-1*t.getRows())},e.prevRow=function(){t.scrollRows(-1)},e.nextRow=function(){t.scrollRows(1)},e.nextPage=function(){t.scrollRows(t.getRows())},e.bottom=function(){t.scrollToPercent(1)},e.isAtTop=function(){return 0===t.progress()},e.isAtBottom=function(){return 1===t.progress()}}]),angular.module("dias.transects").controller("SortByFilenameController",["$scope","sort","TRANSECT_IMAGES",function(e,t,n){"use strict";var r="filename";e.active=function(){return t.isSorterActive("filename")},e.toggle=function(){e.active()||e.activateSorter(r,n)}}]),angular.module("dias.transects").controller("SortController",["$scope","sort","images",function(e,t,n){"use strict";var r={},o=!1;e.setCache=function(e,t){r[e]=t},e.getCache=function(e){return r[e]},e.hasCache=function(e){return r.hasOwnProperty(e)},e.active=t.isActive,e.setSortAscending=function(){t.setAscending(),n.updateSorting()},e.setSortDescending=function(){t.setDescending(),n.updateSorting()},e.isSortAscending=t.isAscending,e.isSortDescending=t.isDescending,e.activateSorter=function(e,r){t.activateSorter(e,r),n.updateSorting()},e.resetSorting=function(){t.reset(),n.updateSorting()},e.setLoading=function(e){o=e},e.isLoading=function(){return o}}]),angular.module("dias.transects").controller("SortRandomController",["$scope","sort","TRANSECT_IMAGES",function(e,t,n){"use strict";var r="random",o=function(e){var t,n,r;for(t=e.length-1;t>0;t--)n=Math.floor(Math.random()*(t+1)),r=e[t],e[t]=e[n],e[n]=r;return e};e.active=function(){return t.isSorterActive("random")},e.toggle=function(){e.active()||e.activateSorter(r,o(n.slice(0)))}}]),angular.module("dias.transects").directive("fallbackSrc",function(){"use strict";return{restrict:"A",link:function(e,t,n){t[0].onerror=function(){this.src=n.fallbackSrc}}}}),angular.module("dias.transects").factory("TransectImageOrderByFilename",["$resource","URL",function(e,t){"use strict";return e(t+"/api/v1/transects/:transect_id/images/order-by/filename")}]),angular.module("dias.transects").service("filter",["TRANSECT_ID","TRANSECT_IMAGES","filterSubset","filterExclude",function(e,t,n,r){"use strict";var o="filter",i=this,s="dias.transects."+e+".filter.rules",a="dias.transects."+e+".filter.mode",c=[],l=window.localStorage.getItem(a);l||(l=o);var u=JSON.parse(window.localStorage.getItem(s));u||(u=[]);var g=[],f=function(){angular.copy(t,g);for(var e,o=u.length-1;o>=0;o--)e=u[o],e.negate?r(g,e.ids):n(g,e.ids);u.length>0?window.localStorage.setItem(s,JSON.stringify(u)):window.localStorage.removeItem(s)};this.setMode=function(e){l=e,l!==o?window.localStorage.setItem(a,l):window.localStorage.removeItem(a)},this.getMode=function(){return l},this.add=function(e){if(!e.hasOwnProperty("name"))throw"A filter needs a name property";if(!e.hasOwnProperty("resource"))throw"A filter needs a resource property";c.push({name:e.name,resource:e.resource,template:e.template,typeahead:e.typeahead,transformData:e.transformData||angular.identity})},this.getAll=function(){return c},this.addRule=function(t){var n={filter:t.filter,negate:t.negate,data:t.data},r=function(){i.removeRule(n)},o=t.filter.transformData(t.data);return n.ids=t.filter.resource.query({transect_id:e,data:o},f,r),u.push(n),n.ids.$promise},this.getAllRules=function(){return u},this.removeRule=function(e){var t=u.indexOf(e);t>=0&&u.splice(t,1),f()},this.hasRule=function(e){for(var t,n=u.length-1;n>=0;n--)if(t=u[n],t.filter==e.filter&&t.negate==e.negate&&t.data==e.data)return!0;return!1},this.hasRules=function(){return u.length>0},this.rulesLoading=function(){for(var e=u.length-1;e>=0;e--)if(u[e].ids.$resolved===!1)return!0;return!1},this.getNumberImages=function(){return g.length},this.getSequence=function(){return"filter"===l?g:t},this.hasFlag=function(e){return"flag"===l?g.indexOf(e)>=0:!1},this.reset=function(){u.length=0,f()},f()}]),angular.module("dias.transects").service("images",["TRANSECT_ID","TRANSECT_IMAGES","filterSubset","filter","sort","THUMB_DIMENSION","urlParams","debounce",function(e,t,n,r,o,i,s,a){"use strict";var c="dias.transects."+e+".images",l="dias.transects."+e+".offset",u=[];window.localStorage[c]?(u=JSON.parse(window.localStorage[c]),n(u,t)):angular.copy(t,u);var g={cols:0,rows:0},f=8,d=0,m=null,h=[],S=function(){h=u.slice(m,m+g.cols*g.rows)},w=0,v=function(){w=Math.ceil(u.length/g.cols)-g.rows,null!==m&&R(m)},p=function(){var e=!1;o.isActive()?(e=!0,angular.copy(o.getSequence(),u),n(u,t)):angular.copy(t,u),r.hasRules()&&(e=!0,n(u,r.getSequence())),S(),e?window.localStorage[c]=JSON.stringify(u):window.localStorage.removeItem(c)},R=function(e){m=Math.max(0,Math.min(w*g.cols,e)),S(),m===d?(window.localStorage.removeItem(l),s.unset("offset")):(window.localStorage[l]=m,s.set({offset:m}))};this.updateSorting=function(){p()},this.updateFiltering=function(){p(),v()},this.progress=function(){return Math.max(0,Math.min(1,m/(u.length-g.cols*g.rows)))},this.updateGrid=function(e,t){g.cols=Math.floor(e/(i.WIDTH+f)),g.rows=Math.floor(t/(i.HEIGHT+f)),S(),v()},this.scrollRows=function(e){R(m+g.cols*e)},this.scrollToPercent=function(e){R(g.cols*Math.round(w*e))},this.getSequence=function(){return h},this.getRows=function(){return g.rows},this.getCols=function(){return g.cols},this.getLength=function(){return u.length},this.initialize=function(){R(void 0!==s.get("offset")?parseInt(s.get("offset")):window.localStorage[l]?parseInt(window.localStorage[l]):d)}}]),angular.module("dias.transects").service("sort",["TRANSECT_ID","TRANSECT_IMAGES",function(e,t){"use strict";var n="dias.transects."+e+".sorting.sorter",r="dias.transects."+e+".sorting.sequence",o="dias.transects."+e+".sorting.direction",i="asc",s="desc",a={DIRECTION:i,SORTER:"filename",SEQUENCE:t},c=window.localStorage.getItem(o);c||(c=a.DIRECTION);var l=window.localStorage.getItem(n);l||(l=a.SORTER);var u=JSON.parse(window.localStorage.getItem(r));u||(u=a.SEQUENCE);var g=function(e){c=e,c===a.DIRECTION?window.localStorage.removeItem(o):window.localStorage.setItem(o,c)};this.setAscending=function(){g(i)},this.setDescending=function(){g(s)},this.isAscending=function(){return c===i},this.isDescending=function(){return c===s},this.isSorterActive=function(e){return l===e},this.isActive=function(){return l!==a.SORTER||c!==a.DIRECTION},this.reset=function(){l=a.SORTER,window.localStorage.removeItem(n),u=a.SEQUENCE,window.localStorage.removeItem(r),c=a.DIRECTION,window.localStorage.removeItem(o)},this.activateSorter=function(e,t){if(l!==e){if(t.length!==a.SEQUENCE.length)throw"Requested sorting sequence length does not match the number of images in the transect!";l=e,l===a.SORTER?window.localStorage.removeItem(n):window.localStorage.setItem(n,l),u=t,u===a.SEQUENCE?window.localStorage.removeItem(r):window.localStorage.setItem(r,JSON.stringify(u))}},this.getSequence=function(){return c===s?u.slice().reverse():u}}]); \ No newline at end of file diff --git a/src/public/assets/styles/dashboard.css b/src/public/assets/styles/dashboard.css index 4e29c44..1d50524 100644 --- a/src/public/assets/styles/dashboard.css +++ b/src/public/assets/styles/dashboard.css @@ -1 +1,2 @@ -.transects-dashboard__thumb{position:relative;margin-bottom:30px}.transects-dashboard__thumb figcaption,.transects-dashboard__thumb img{border-radius:4px}.transects-dashboard__thumb img{width:100%}.transects-dashboard__thumb figcaption{width:100%;position:absolute;bottom:0;color:#fff;padding:.5em;background:linear-gradient(transparent,rgba(0,0,0,.8)) 50% no-repeat;opacity:.75;transition:opacity .25s ease}.transects-dashboard__thumb:hover figcaption{opacity:1} \ No newline at end of file +.transects-dashboard__thumb{position:relative;margin-bottom:30px}.transects-dashboard__thumb figcaption,.transects-dashboard__thumb img{border-radius:4px}.transects-dashboard__thumb img{width:100%}.transects-dashboard__thumb figcaption{width:100%;position:absolute;bottom:0;color:#fff;padding:.5em;background:linear-gradient(transparent,rgba(0,0,0,.8)) center no-repeat;opacity:.75;transition:opacity .25s ease}.transects-dashboard__thumb:hover figcaption{opacity:1} +/*# sourceMappingURL=dashboard.css.map */ diff --git a/src/public/assets/styles/dashboard.css.map b/src/public/assets/styles/dashboard.css.map index 653cf63..257fe1a 100644 --- a/src/public/assets/styles/dashboard.css.map +++ b/src/public/assets/styles/dashboard.css.map @@ -1 +1 @@ -{"version":3,"sources":["dashboard.scss"],"names":[],"mappings":"AAAA;EACI,mBAAmB;EACnB,oBAAoB,EAwBvB;EAtBG;IACI,mBAAmB,EACtB;EANL;IASQ,YAAY,EACf;EAED;IACI,YAAY;IACZ,mBAAmB;IACnB,UAAU;IACV,aAAa;IACb,eAAe;IACf,8EAA6E;IAC7E,cAAc;IACd,+BAA+B,EAClC;EArBL;IAwBQ,WAAW,EACd","file":"dashboard.css","sourcesContent":[".transects-dashboard__thumb {\n position: relative;\n margin-bottom: 30px;\n\n img, figcaption {\n border-radius: 4px;\n }\n\n img {\n width: 100%;\n }\n\n figcaption {\n width: 100%;\n position: absolute;\n bottom: 0;\n color: white;\n padding: 0.5em;\n background: linear-gradient(transparent, rgba(0, 0, 0, 0.8)) center no-repeat;\n opacity: 0.75;\n transition: opacity 0.25s ease;\n }\n\n &:hover figcaption {\n opacity: 1;\n }\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["dashboard.scss"],"names":[],"mappings":"AAAA,4BACI,SAAA,SACA,cAAA,KAwBH,uCAAA,gCArBO,cAAA,IACH,gCAGG,MAAA,KAGJ,uCACI,MAAA,KACA,SAAA,SACA,OAAA,EACA,MAAA,KACA,QAAA,KACA,WAAA,4CAAA,OAAA,UACA,QAAA,IACA,WAAA,QAAA,KAAA,KACH,6CAGG,QAAA","file":"dashboard.css","sourcesContent":[".transects-dashboard__thumb {\n position: relative;\n margin-bottom: 30px;\n\n img, figcaption {\n border-radius: 4px;\n }\n\n img {\n width: 100%;\n }\n\n figcaption {\n width: 100%;\n position: absolute;\n bottom: 0;\n color: white;\n padding: 0.5em;\n background: linear-gradient(transparent, rgba(0, 0, 0, 0.8)) center no-repeat;\n opacity: 0.75;\n transition: opacity 0.25s ease;\n }\n\n &:hover figcaption {\n opacity: 1;\n }\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/src/public/assets/styles/edit.css b/src/public/assets/styles/edit.css index fbd067f..3c4fbb1 100644 --- a/src/public/assets/styles/edit.css +++ b/src/public/assets/styles/edit.css @@ -1 +1,2 @@ -.transect-images-panel .images-list{max-height:300px;overflow-y:auto} \ No newline at end of file +.transect-images-panel .images-list{max-height:300px;overflow-y:auto} +/*# sourceMappingURL=edit.css.map */ diff --git a/src/public/assets/styles/edit.css.map b/src/public/assets/styles/edit.css.map index 5c99b3e..1e23d4e 100644 --- a/src/public/assets/styles/edit.css.map +++ b/src/public/assets/styles/edit.css.map @@ -1 +1 @@ -{"version":3,"sources":["edit.scss"],"names":[],"mappings":"AACI;EACI,kBAAkB;EAClB,iBAAiB,EACpB","file":"edit.css","sourcesContent":[".transect-images-panel {\n .images-list {\n max-height: 300px;\n overflow-y: auto;\n }\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["edit.scss"],"names":[],"mappings":"AACI,oCACI,WAAA,MACA,WAAA","file":"edit.css","sourcesContent":[".transect-images-panel {\n .images-list {\n max-height: 300px;\n overflow-y: auto;\n }\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/src/public/assets/styles/main.css b/src/public/assets/styles/main.css index ae63c2c..3e4c8fc 100644 --- a/src/public/assets/styles/main.css +++ b/src/public/assets/styles/main.css @@ -1 +1,2 @@ -.transect-container{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;position:absolute;top:0;width:100%;height:calc(100% - 50px);margin-top:50px}.transect-menubar{min-width:50px;padding:1em .5em}.transect-menubar__item{display:block;margin-bottom:1em}.transect__progress{padding:1px 0;height:100%;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.transect__progress .progress__buttons--top>.btn:last-child{border-radius:0}.transect__progress .progress__buttons--top .glyphicon{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.transect__progress .progress__buttons--bottom>.btn:first-child{border-radius:0}.transect__progress .progress__buttons--bottom .glyphicon{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.transect__progress-bar{-webkit-flex:2;-ms-flex:2;flex:2;border-left:1px solid #555;border-right:1px solid #555;position:relative}.transect__progress-bar .progress-bar__wrapper{position:absolute;left:0;right:0;top:0;bottom:0;pointer-events:none}.transect__progress-bar .progress-bar__progress{height:0%;background-color:#555;transition:background-color .1s ease}.transect__progress-bar:hover{cursor:pointer}.transect__progress-bar:hover .progress-bar__progress{background-color:#888}.transect__images{overflow:hidden;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-flex:2;-ms-flex:2;flex:2}.transect-figure{height:135px;width:180px;display:inline-block;position:relative;margin:4px}.transect-figure img{width:100%;height:100%;border-radius:4px}.transect-figure a.info-link{position:absolute;top:.5em;right:.5em;color:#fff;padding:.3em .5em;background-color:rgba(0,0,0,.5);border-radius:4px;opacity:0;transition:all .25s ease}.transect-figure:hover a.info-link{opacity:.75}.transect-figure:hover a.info-link:hover{opacity:1}.transect-figure__flags{position:absolute;top:0;left:0;padding-top:.5em}.transect-figure__flags .figure-flag{position:relative;z-index:100;margin-left:.5em}.figure-flag{display:inline-block;width:15px;height:15px;border-radius:50%;background-color:#5bc0de;border:2px solid #fff}.transect-filter-popover .filter-list{margin-top:1em;max-height:100px;overflow-y:auto}.transect-filter-popover .figure-flag{vertical-align:middle}.transect-filter-popover .add-rule-form{white-space:nowrap}.transect-filter-menu-group .popover{max-width:none}.transect-sort-popover{min-width:200px}.transect-sort-popover .sorter-list-group{margin-top:.5em;margin-bottom:0;max-height:200px;overflow-y:auto}.navbar-text.navbar-transects-breadcrumbs,.navbar-text.navbar-transects-breadcrumbs a{color:#ccc} \ No newline at end of file +.transect__progress .progress__buttons--bottom>.btn:first-child,.transect__progress .progress__buttons--top>.btn:last-child{border-radius:0}.transect__progress .progress__buttons--bottom .glyphicon,.transect__progress .progress__buttons--top .glyphicon{transform:rotate(90deg)}.transect-container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;position:absolute;top:0;width:100%;height:calc(100% - 50px);margin-top:50px}.transect-menubar{min-width:50px;padding:1em .5em}.transect-menubar__item{display:block;margin-bottom:1em}.transect__progress{padding:1px 0;height:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.transect__progress-bar{-ms-flex:2;flex:2;border-left:1px solid #555;border-right:1px solid #555;position:relative}.transect__progress-bar .progress-bar__wrapper{position:absolute;left:0;right:0;top:0;bottom:0;pointer-events:none}.transect__progress-bar .progress-bar__progress{height:0%;background-color:#555;transition:background-color .1s ease}.transect__progress-bar:hover{cursor:pointer}.transect__progress-bar:hover .progress-bar__progress{background-color:#888}.transect__images{overflow:hidden;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-line-pack:center;align-content:center;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex:2;flex:2}.transect-figure{height:135px;width:180px;display:inline-block;position:relative;margin:4px}.transect-figure img{width:100%;height:100%;border-radius:4px}.transect-figure a.info-link{position:absolute;top:.5em;right:.5em;color:#fff;padding:.3em .5em;background-color:rgba(0,0,0,.5);border-radius:4px;opacity:0;transition:all .25s ease}.transect-figure:hover a.info-link{opacity:.75}.transect-figure:hover a.info-link:hover{opacity:1}.transect-figure__flags{position:absolute;top:0;left:0;padding-top:.5em}.transect-figure__flags .figure-flag{position:relative;z-index:100;margin-left:.5em}.figure-flag{display:inline-block;width:15px;height:15px;border-radius:50%;background-color:#5bc0de;border:2px solid #fff}.transect-filter-popover .filter-list{margin-top:1em;max-height:100px;overflow-y:auto}.transect-filter-popover .figure-flag{vertical-align:middle}.transect-filter-popover .add-rule-form{white-space:nowrap}.transect-filter-menu-group .popover{max-width:none}.transect-sort-popover{min-width:200px}.transect-sort-popover .sorter-list-group{margin-top:.5em;margin-bottom:0;max-height:200px;overflow-y:auto}.navbar-text.navbar-transects-breadcrumbs,.navbar-text.navbar-transects-breadcrumbs a{color:#ccc} +/*# sourceMappingURL=main.css.map */ diff --git a/src/public/assets/styles/main.css.map b/src/public/assets/styles/main.css.map index e448f52..49b3859 100644 --- a/src/public/assets/styles/main.css.map +++ b/src/public/assets/styles/main.css.map @@ -1 +1 @@ -{"version":3,"sources":["main.scss","_variables.scss"],"names":[],"mappings":"AAKA;EACI,sBAAc;EAAd,qBAAc;EAAd,cAAc;EACd,4BAAoB;EAApB,wBAAoB;EAApB,oBAAoB;EACpB,mBAAmB;EACnB,OAAO;EACP,YAAY;EACZ,0BAAY;EACZ,iBCgWmC,ED/VtC;;AAED;EACI,gBAAgB;EAChB,mBAAmB,EACtB;;AAED;EACI,eAAe;EACf,mBAAmB,EACtB;;AAED;EAEI,eAAe;EACf,aAAa;EACb,sBAAc;EAAd,qBAAc;EAAd,cAAc;EACd,+BAAuB;EAAvB,2BAAuB;EAAvB,uBAAuB,EAqB1B;EAlBe;IACJ,iBAAiB,EACpB;EAVT;IAaY,iCAAiB;IAAjB,yBAAiB,EACpB;EAdT;IAmBY,iBAAiB,EACpB;EApBT;IAuBY,iCAAiB;IAAjB,yBAAiB,EACpB;;AAIT;EACI,gBAAQ;EAAR,YAAQ;EAAR,QAAQ;EACR,4BCkGiC;EDjGjC,6BCiGiC;EDhGjC,mBAAmB,EA0BtB;EA9BD;IASQ,mBAAmB;IACnB,QAAQ;IACR,SAAS;IACT,OAAO;IACP,UAAU;IACV,qBAAqB,EACxB;EAED;IACI,WAAW;IACX,uBCiF6B;IDhF7B,uCAAuC,EAC1C;EArBL;IAwBQ,gBAAgB,EAKnB;IA7BL;MA2BY,0BClEmB,EDmEtB;;AAIT;EACC,iBAAiB;EACd,sBAAc;EAAd,qBAAc;EAAd,cAAc;EACd,gCAAwB;EAAxB,sBAAwB;EAAxB,wBAAwB;EACxB,8BAAsB;EAAtB,2BAAsB;EAAtB,sBAAsB;EACtB,wBAAgB;EAAhB,oBAAgB;EAAhB,gBAAgB;EAChB,gBAAQ;EAAR,YAAQ;EAAR,QAAQ,EACX;;AAED;EACC,cAAc;EACd,aAAa;EACb,sBAAsB;EACnB,mBAAmB;EACnB,YAjGuB,EA4H1B;EAhCD;IAQE,YAAY;IACZ,aAAa;IACP,mBCKuB,EDJ7B;EAXF;IAcQ,mBAAmB;IACnB,WA1GsB;IA2GtB,aA3GsB;IA4GtB,aAAa;IACb,qBAAqB;IACrB,qCAAsB;IACtB,mBCLuB;IDMvB,WAAW;IACX,2BAA2B,EAC9B;EAvBL;IA0BQ,cAAc,EAKjB;IA/BL;MA6BY,WAAW,EACd;;AAIT;EACI,mBAAmB;EACnB,OAAO;EACP,QAAQ;EACR,mBAjI0B,EAwI7B;EAXD;IAOQ,mBAAmB;IACnB,aAAa;IACb,mBAtIsB,EAuIzB;;AAGL;EACI,sBAAsB;EACtB,YAAY;EACZ,aAAa;EACb,mBAAmB;EACnB,0BC/H2B;EDgI3B,wBAAwB,EAC3B;;AAED;EAGQ,gBAAgB;EAChB,kBAAkB;EAClB,iBAAiB,EACpB;;AANL;EASQ,uBAAuB,EAC1B;;AAED;EACI,oBAAoB,EACvB;;AAGL;EAEQ,gBAAgB,EACnB;;AAGL;EACI,iBAAiB,EAQpB;EATD;IAIQ,iBAAiB;IACjB,iBAAiB;IACjB,kBAAkB;IAClB,iBAAiB,EACpB;;AAGL;EAEQ,eC9KuB,ED+K1B","file":"main.css","sourcesContent":["@import \"variables\";\n\n$transect-image-margin: 4px;\n$transect-image-padding: 0.5em;\n\n.transect-container {\n display: flex;\n flex-direction: row;\n position: absolute;\n top: 0;\n width: 100%;\n height: calc(100% - #{$navbar-height});\n margin-top: $navbar-height;\n}\n\n.transect-menubar {\n min-width: 50px;\n padding: 1em 0.5em;\n}\n\n.transect-menubar__item {\n display: block;\n margin-bottom: 1em;\n}\n\n.transect__progress {\n // width: 10px;\n padding: 1px 0;\n height: 100%;\n display: flex;\n flex-direction: column;\n\n .progress__buttons--top {\n & > .btn:last-child {\n border-radius: 0;\n }\n\n .glyphicon {\n transform: rotate(90deg);\n }\n }\n\n .progress__buttons--bottom {\n & > .btn:first-child {\n border-radius: 0;\n }\n\n .glyphicon {\n transform: rotate(90deg);\n }\n }\n}\n\n.transect__progress-bar {\n flex: 2;\n border-left: 1px solid $btn-default-border;\n border-right: 1px solid $btn-default-border;\n position: relative;\n\n // this is a workaround because chrome doesn't respect percentage height of nested\n // child elements in a flexbox: https://github.com/philipwalton/flexbugs/issues/84\n .progress-bar__wrapper {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n pointer-events: none;\n }\n\n .progress-bar__progress {\n height: 0%;\n background-color: $btn-default-border;\n transition: background-color 0.1s ease;\n }\n\n &:hover {\n cursor: pointer;\n\n .progress-bar__progress {\n background-color: $gray-light;\n }\n }\n}\n\n.transect__images {\n\toverflow: hidden;\n display: flex;\n justify-content: center;\n align-content: center;\n flex-wrap: wrap;\n flex: 2;\n}\n\n.transect-figure {\n\theight: 135px;\n\twidth: 180px;\n\tdisplay: inline-block;\n position: relative;\n margin: $transect-image-margin;\n\n\timg {\n\t\twidth: 100%;\n\t\theight: 100%;\n border-radius: $border-radius-base;\n\t}\n\n & a.info-link {\n position: absolute;\n top: $transect-image-padding;\n right: $transect-image-padding;\n color: white;\n padding: 0.3em 0.5em;\n background-color: rgba(0, 0, 0, 0.5);\n border-radius: $border-radius-base;\n opacity: 0;\n transition: all 0.25s ease;\n }\n\n &:hover a.info-link {\n opacity: 0.75;\n\n &:hover {\n opacity: 1;\n }\n }\n}\n\n.transect-figure__flags {\n position: absolute;\n top: 0;\n left: 0;\n padding-top: $transect-image-padding;\n\n .figure-flag {\n position: relative;\n z-index: 100;\n margin-left: $transect-image-padding;\n }\n}\n\n.figure-flag {\n display: inline-block;\n width: 15px;\n height: 15px;\n border-radius: 50%;\n background-color: $brand-info;\n border: 2px solid white;\n}\n\n.transect-filter-popover {\n\n .filter-list {\n margin-top: 1em;\n max-height: 100px;\n overflow-y: auto;\n }\n\n .figure-flag {\n vertical-align: middle;\n }\n\n .add-rule-form {\n white-space: nowrap;\n }\n}\n\n.transect-filter-menu-group {\n .popover {\n max-width: none;\n }\n}\n\n.transect-sort-popover {\n min-width: 200px;\n\n .sorter-list-group {\n margin-top: .5em;\n margin-bottom: 0;\n max-height: 200px;\n overflow-y: auto;\n }\n}\n\n.navbar-text.navbar-transects-breadcrumbs {\n &, a {\n color: $text-color;\n }\n}\n","$bootstrap-sass-asset-helper: false !default;\n//\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n$gray-base: #fff !default;\n$gray-darker: darken($gray-base, 13.5%) !default;\n$gray-dark: darken($gray-base, 20%) !default;\n$gray: darken($gray-base, 33.5%) !default;\n$gray-light: darken($gray-base, 46.7%) !default;\n$gray-lighter: darken($gray-base, 93.5%) !default;\n\n$brand-primary: darken(#428bca, 6.5%) !default;\n$brand-success: #5cb85c !default;\n$brand-info: #5bc0de !default;\n$brand-warning: #f0ad4e !default;\n$brand-danger: #d9534f !default;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for `
`.\n$body-bg: #222 !default;\n//** Global text color on ``.\n$text-color: $gray-dark !default;\n\n//** Global textual link color.\n$link-color: lighten(#428bca, 15%) !default;\n//** Link hover color set via `darken()` function.\n$link-hover-color: lighten($link-color, 10%) !default;\n//** Link hover decoration.\n$link-hover-decoration: underline !default;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n$font-family-sans-serif: \"Helvetica Neue\", Helvetica, Arial, sans-serif !default;\n$font-family-serif: Georgia, \"Times New Roman\", Times, serif !default;\n//** Default monospace fonts for ``, ``, and ``.\n$font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace !default;\n$font-family-base: $font-family-sans-serif !default;\n\n$font-size-base: 14px !default;\n$font-size-large: ceil(($font-size-base * 1.25)) !default; // ~18px\n$font-size-small: ceil(($font-size-base * 0.85)) !default; // ~12px\n\n$font-size-h1: floor(($font-size-base * 2.6)) !default; // ~36px\n$font-size-h2: floor(($font-size-base * 2.15)) !default; // ~30px\n$font-size-h3: ceil(($font-size-base * 1.7)) !default; // ~24px\n$font-size-h4: ceil(($font-size-base * 1.25)) !default; // ~18px\n$font-size-h5: $font-size-base !default;\n$font-size-h6: ceil(($font-size-base * 0.85)) !default; // ~12px\n\n//** Unit-less `line-height` for use in components like buttons.\n$line-height-base: 1.428571429 !default; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n$line-height-computed: floor(($font-size-base * $line-height-base)) !default; // ~20px\n\n//** By default, this inherits from the ``.\n$headings-font-family: inherit !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.1 !default;\n$headings-color: inherit !default;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n\n// [converter] If $bootstrap-sass-asset-helper if used, provide path relative to the assets load path.\n// [converter] This is because some asset helpers, such as Sprockets, do not work with file-relative paths.\n$icon-font-path: if($bootstrap-sass-asset-helper, \"bootstrap/\", \"../fonts/bootstrap/\") !default;\n\n//** File name for all font files.\n$icon-font-name: \"glyphicons-halflings-regular\" !default;\n//** Element ID within SVG icon file.\n$icon-font-svg-id: \"glyphicons_halflingsregular\" !default;\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n$padding-base-vertical: 6px !default;\n$padding-base-horizontal: 12px !default;\n\n$padding-large-vertical: 10px !default;\n$padding-large-horizontal: 16px !default;\n\n$padding-small-vertical: 5px !default;\n$padding-small-horizontal: 10px !default;\n\n$padding-xs-vertical: 1px !default;\n$padding-xs-horizontal: 5px !default;\n\n$line-height-large: 1.3333333 !default; // extra decimals for Win 8.1 Chrome\n$line-height-small: 1.5 !default;\n\n$border-radius-base: 4px !default;\n$border-radius-large: 6px !default;\n$border-radius-small: 3px !default;\n\n//** Global color for active items (e.g., navs or dropdowns).\n$component-active-color: #fff !default;\n//** Global background color for active items (e.g., navs or dropdowns).\n$component-active-bg: $brand-primary !default;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n$caret-width-base: 4px !default;\n//** Carets increase slightly in size for larger components.\n$caret-width-large: 5px !default;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for ``s and ` `s.\n$table-cell-padding: 8px !default;\n//** Padding for cells in `.table-condensed`.\n$table-condensed-cell-padding: 5px !default;\n\n//** Default background color used for all tables.\n$table-bg: transparent !default;\n//** Background color used for `.table-striped`.\n$table-bg-accent: #292929 !default;\n//** Background color used for `.table-hover`.\n$table-bg-hover: #252525 !default;\n$table-bg-active: $table-bg-hover !default;\n\n//** Border color for table and cell borders.\n$table-border-color: #444 !default;\n\n\n//== Buttons\n//\n//## For each of Bootstrap's buttons, define text, background and border color.\n\n$btn-font-weight: normal !default;\n\n$btn-default-color: $text-color !default;\n$btn-default-bg: $body-bg !default;\n$btn-default-border: #555 !default;\n\n$btn-primary-color: #fff !default;\n$btn-primary-bg: $brand-primary !default;\n$btn-primary-border: darken($btn-primary-bg, 5%) !default;\n\n$btn-success-color: #fff !default;\n$btn-success-bg: $brand-success !default;\n$btn-success-border: darken($btn-success-bg, 5%) !default;\n\n$btn-info-color: #fff !default;\n$btn-info-bg: $brand-info !default;\n$btn-info-border: darken($btn-info-bg, 5%) !default;\n\n$btn-warning-color: #fff !default;\n$btn-warning-bg: $brand-warning !default;\n$btn-warning-border: darken($btn-warning-bg, 5%) !default;\n\n$btn-danger-color: #fff !default;\n$btn-danger-bg: $brand-danger !default;\n$btn-danger-border: darken($btn-danger-bg, 5%) !default;\n\n$btn-link-disabled-color: $gray-light !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius-base: $border-radius-base !default;\n$btn-border-radius-large: $border-radius-large !default;\n$btn-border-radius-small: $border-radius-small !default;\n\n\n//== Forms\n//\n//##\n\n//** `` background color\n$input-bg: #111 !default;\n//** `` background color\n$input-bg-disabled: $body-bg !default;\n\n//** Text color for ``s\n$input-color: $gray !default;\n//** `` border color\n$input-border: #555 !default;\n\n// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on `