Commit fffa70b64e005ae1b907b323cfd6e8fda6552839
Exists in
master
and in
4 other branches
Front fixes
Showing
18 changed files
with
145 additions
and
49 deletions
Show diff stats
CHANGELOG.md
... | ... | @@ -23,6 +23,12 @@ Should be noted only functionnal changes, |
23 | 23 | or major refactoring improvments. |
24 | 24 | |
25 | 25 | ## Unreleased |
26 | +## [0.3.pre-8] - 2021-05-06 - Front Fixes | |
27 | +### Changed | |
28 | +Sidebar menu enhanced | |
29 | +New export button | |
30 | + | |
31 | +## Unreleased | |
26 | 32 | ## [0.3.pre-7] - 2021-05-03 - Better Tests Coverage |
27 | 33 | ### Changed |
28 | 34 | Add tests and fix some code issues | ... | ... |
VERSION.txt
app/main/static/css/charges.css
... | ... | @@ -90,7 +90,53 @@ rect.bar:hover { |
90 | 90 | pointer-events: none; |
91 | 91 | } |
92 | 92 | |
93 | -button.export { | |
94 | - float: right; | |
95 | - margin-right: 0; | |
93 | +i.export { | |
94 | + padding: 7px; | |
95 | + position: absolute; | |
96 | + margin-top:8px; | |
97 | + right: 3%; | |
98 | +} | |
99 | + | |
100 | +i.export:hover { | |
101 | + background: lightgrey; | |
102 | + border-radius: 2px; | |
103 | +} | |
104 | + | |
105 | +.tooltip_hamburger { | |
106 | + border-radius: 0px; | |
107 | + box-shadow: 2px 2px 2px 2px darkgrey; | |
108 | + right: 2%; | |
109 | + pointer-events: auto; | |
110 | + width: 150px; | |
111 | + margin-top:15px; | |
112 | + padding: 0; | |
113 | +} | |
114 | + | |
115 | +.tooltip_hamburger li { | |
116 | + list-style: none; | |
117 | + padding: 5px; | |
118 | + cursor: pointer; | |
119 | + pointer-events: auto; | |
120 | +} | |
121 | + | |
122 | +.tooltip_hamburger li:hover { | |
123 | + background-color: lightgrey; | |
124 | +} | |
125 | + | |
126 | +.tooltip_hamburger span { | |
127 | + width: 90%; | |
128 | + padding: 5px; | |
129 | + margin-left: 5px; | |
130 | + display: block; | |
131 | + border-bottom: 1px solid grey; | |
132 | +} | |
133 | + | |
134 | +.rectmouseleave { | |
135 | + width: 200px; | |
136 | + height: 150px; | |
137 | + position: absolute; | |
138 | + padding: 10px; | |
139 | + top:0; | |
140 | + right: 0; | |
141 | + /*background-color: #0b2e13;*/ | |
96 | 142 | } |
97 | 143 | \ No newline at end of file | ... | ... |
app/main/static/js/charges.js
... | ... | @@ -65,11 +65,39 @@ function build_chart(div_selector, data_url, entity_name, category_type) { |
65 | 65 | alert("ALERT ! Every body shall quit the boat, we are sinking ! ALERT !") |
66 | 66 | } |
67 | 67 | |
68 | + // Configure the tooltip to export svg to png or csv | |
69 | + var update_export_menu = function (e, d) { | |
70 | + | |
71 | + const tooltip_test = document.getElementsByClassName('tooltip_hamburger'); | |
72 | + | |
73 | + if (tooltip_test.length == 0) { | |
74 | + d3.select(".tooltip_hamburger").remove(); | |
75 | + | |
76 | + const tooltip_hamburger = hamburger.append("div") | |
77 | + .style("opacity", 0) | |
78 | + .attr("class", "tooltip tooltip_hamburger"); | |
79 | + | |
80 | + d3.select(this).transition() | |
81 | + .duration(1) | |
82 | + tooltip_hamburger | |
83 | + .transition() | |
84 | + .duration(200) | |
85 | + .style("opacity", 1) | |
86 | + tooltip_hamburger | |
87 | + .html("<span>Export </span>" + | |
88 | + "<li>To CSV</li>" + | |
89 | + "<li id='to_png'>To PNG</li>") | |
90 | + d3.select("#to_png").on("click", download_png); | |
91 | + } else { | |
92 | + d3.select(".tooltip_hamburger").remove(); | |
93 | + } | |
94 | + | |
95 | + } | |
68 | 96 | // Create a download button inside the div contaning svg chart |
69 | - var dl_btn = d3.select(div_selector).append("button") | |
70 | - .text('png') | |
71 | - .attr('class', 'export') | |
72 | - .on('click', download_png) | |
97 | + const hamburger = d3.select(div_selector).append('i') | |
98 | + .attr('class', 'fas fa-bars fa-lg export') | |
99 | + .on("click", update_export_menu); | |
100 | + | |
73 | 101 | |
74 | 102 | const svg = d3.select(div_selector).append("svg") |
75 | 103 | .attr("class", "svg_chart") |
... | ... | @@ -326,7 +354,6 @@ function build_chart(div_selector, data_url, entity_name, category_type) { |
326 | 354 | .on("mouseover", mouseoverdot) |
327 | 355 | .on("mouseleave", mouseleavedot) |
328 | 356 | .lower();// set it below bars if called after |
329 | - ; | |
330 | 357 | |
331 | 358 | } |
332 | 359 | ... | ... |
app/main/static/js/svg_to_png.js
1 | 1 | var download_png = function () { |
2 | 2 | // This callback is supposed to be called on the click event of a button child of the div containing the svg. |
3 | 3 | // We then get the parent of this btn to guess the chart's title, width and heigth |
4 | - var chart_div = this.parentNode; | |
4 | + var chart_div = this.parentNode.parentNode.parentNode; | |
5 | 5 | var chart_title = chart_div.id; |
6 | 6 | width = chart_div.offsetWidth; |
7 | 7 | height = chart_div.offsetHeight; | ... | ... |
app/main/templates/agent.html
... | ... | @@ -5,6 +5,10 @@ |
5 | 5 | {% endblock %} |
6 | 6 | |
7 | 7 | {% block content %} |
8 | + | |
9 | +<!-- Invisible span to definte wich ul and a in the navbar are actived --> | |
10 | +<span id="nav_actived" style="display: none">agent,agents</span> | |
11 | + | |
8 | 12 | <div id="projects_chart" class="charge_chart"></div> |
9 | 13 | <table id="charge_table"> |
10 | 14 | <thead> | ... | ... |
app/main/templates/agents.html
app/main/templates/capacities.html
app/main/templates/charge.html
1 | 1 | {% extends "base_page.html" %} |
2 | 2 | {% block content %} |
3 | + | |
4 | +<!-- Invisible span to definte wich ul and a in the navbar are actived --> | |
5 | +<span id="nav_actived" style="display: none">cds,charge/add</span> | |
6 | + | |
3 | 7 | <form class="form-horizontal" id="new_affectation" action="#" method="post"> |
4 | 8 | <input name="utf8" type="hidden" value="โ"> |
5 | 9 | <input type="hidden" name="authenticity_token" value="NPVU9shCwiRt07EXMAroxTdsP61Et00VQjkBiit3MWeqQt3Eez9UdGK68RzZ6npLCFyg0gL+M1MR6VjK9WOCYw=="> | ... | ... |
app/main/templates/periods.html
app/main/templates/project.html
... | ... | @@ -5,6 +5,9 @@ |
5 | 5 | {% endblock %} |
6 | 6 | |
7 | 7 | {% block content %} |
8 | +<!-- Invisible span to definte wich ul and a in the navbar are actived --> | |
9 | +<span id="nav_actived" style="display: none">projet,projects</span> | |
10 | + | |
8 | 11 | <div class="charge_chart" id="project_services_chart"></div> |
9 | 12 | <hr/> |
10 | 13 | <div class="charge_chart" id="project_capacities_chart"></div> | ... | ... |
app/main/templates/projects.html
app/main/templates/services.html
app/static/css/style.css
... | ... | @@ -40,6 +40,10 @@ nav.sidebar a:hover { |
40 | 40 | background-color: lightgrey; |
41 | 41 | } |
42 | 42 | |
43 | +nav.sidebar ul { | |
44 | + width: 100%; | |
45 | +} | |
46 | + | |
43 | 47 | nav.sidebar a { |
44 | 48 | color: black; |
45 | 49 | text-decoration: none; |
... | ... | @@ -82,9 +86,15 @@ nav.sidebar a.disabled { |
82 | 86 | } |
83 | 87 | |
84 | 88 | /* Update the navbar for small screens. Replace bootstrap css for small screens only */ |
85 | -@media (max-width: 600px) { | |
89 | +@media (max-width: 768px) { | |
86 | 90 | .sidebar { |
87 | 91 | position: static !important; |
88 | 92 | margin-top: 0px !important; |
89 | 93 | } |
90 | 94 | } |
95 | + | |
96 | +@media (min-width: 1670px) { | |
97 | + .sidebar { | |
98 | + max-width:12.499999995%; | |
99 | + } | |
100 | +} | |
91 | 101 | \ No newline at end of file | ... | ... |
... | ... | @@ -0,0 +1,2 @@ |
1 | +window.FontAwesomeKitConfig = {"asyncLoading":{"enabled":false},"autoA11y":{"enabled":true},"baseUrl":"https://ka-f.fontawesome.com","baseUrlKit":"https://kit.fontawesome.com","detectConflictsUntil":null,"iconUploads":{},"id":49010708,"license":"free","method":"css","minify":{"enabled":true},"token":"46c1ff7934","v4FontFaceShim":{"enabled":true},"v4shim":{"enabled":true},"version":"5.15.3"}; | |
2 | +!function(t){"function"==typeof define&&define.amd?define("kit-loader",t):t()}((function(){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}function e(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function n(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function r(t){for(var r=1;r<arguments.length;r++){var o=null!=arguments[r]?arguments[r]:{};r%2?n(Object(o),!0).forEach((function(n){e(t,n,o[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(o)):n(Object(o)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(o,e))}))}return t}function o(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(t)))return;var n=[],r=!0,o=!1,i=void 0;try{for(var c,a=t[Symbol.iterator]();!(r=(c=a.next()).done)&&(n.push(c.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{r||null==a.return||a.return()}finally{if(o)throw i}}return n}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return i(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return i(t,e)}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function c(t,e){var n=e&&e.addOn||"",r=e&&e.baseFilename||t.license+n,o=e&&e.minify?".min":"",i=e&&e.fileSuffix||t.method,c=e&&e.subdir||t.method;return t.baseUrl+"/releases/"+("latest"===t.version?"latest":"v".concat(t.version))+"/"+c+"/"+r+o+"."+i}function a(t){return t.baseUrlKit+"/"+t.token+"/"+t.id+"/kit-upload.css"}function u(t,e){var n=e||["fa"],r="."+Array.prototype.join.call(n,",."),o=t.querySelectorAll(r);Array.prototype.forEach.call(o,(function(e){var n=e.getAttribute("title");e.setAttribute("aria-hidden","true");var r=!e.nextElementSibling||!e.nextElementSibling.classList.contains("sr-only");if(n&&r){var o=t.createElement("span");o.innerHTML=n,o.classList.add("sr-only"),e.parentNode.insertBefore(o,e.nextSibling)}}))}var f,s=function(){},d="undefined"!=typeof global&&void 0!==global.process&&"function"==typeof global.process.emit,l="undefined"==typeof setImmediate?setTimeout:setImmediate,h=[];function m(){for(var t=0;t<h.length;t++)h[t][0](h[t][1]);h=[],f=!1}function p(t,e){h.push([t,e]),f||(f=!0,l(m,0))}function y(t){var e=t.owner,n=e._state,r=e._data,o=t[n],i=t.then;if("function"==typeof o){n="fulfilled";try{r=o(r)}catch(t){w(i,t)}}b(i,r)||("fulfilled"===n&&v(i,r),"rejected"===n&&w(i,r))}function b(e,n){var r;try{if(e===n)throw new TypeError("A promises callback cannot return that same promise.");if(n&&("function"==typeof n||"object"===t(n))){var o=n.then;if("function"==typeof o)return o.call(n,(function(t){r||(r=!0,n===t?g(e,t):v(e,t))}),(function(t){r||(r=!0,w(e,t))})),!0}}catch(t){return r||w(e,t),!0}return!1}function v(t,e){t!==e&&b(t,e)||g(t,e)}function g(t,e){"pending"===t._state&&(t._state="settled",t._data=e,p(S,t))}function w(t,e){"pending"===t._state&&(t._state="settled",t._data=e,p(O,t))}function A(t){t._then=t._then.forEach(y)}function S(t){t._state="fulfilled",A(t)}function O(t){t._state="rejected",A(t),!t._handled&&d&&global.process.emit("unhandledRejection",t._data,t)}function j(t){global.process.emit("rejectionHandled",t)}function E(t){if("function"!=typeof t)throw new TypeError("Promise resolver "+t+" is not a function");if(this instanceof E==!1)throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");this._then=[],function(t,e){function n(t){w(e,t)}try{t((function(t){v(e,t)}),n)}catch(t){n(t)}}(t,this)}E.prototype={constructor:E,_state:"pending",_then:null,_data:void 0,_handled:!1,then:function(t,e){var n={owner:this,then:new this.constructor(s),fulfilled:t,rejected:e};return!e&&!t||this._handled||(this._handled=!0,"rejected"===this._state&&d&&p(j,this)),"fulfilled"===this._state||"rejected"===this._state?p(y,n):this._then.push(n),n.then},catch:function(t){return this.then(null,t)}},E.all=function(t){if(!Array.isArray(t))throw new TypeError("You must pass an array to Promise.all().");return new E((function(e,n){var r=[],o=0;function i(t){return o++,function(n){r[t]=n,--o||e(r)}}for(var c,a=0;a<t.length;a++)(c=t[a])&&"function"==typeof c.then?c.then(i(a),n):r[a]=c;o||e(r)}))},E.race=function(t){if(!Array.isArray(t))throw new TypeError("You must pass an array to Promise.race().");return new E((function(e,n){for(var r,o=0;o<t.length;o++)(r=t[o])&&"function"==typeof r.then?r.then(e,n):e(r)}))},E.resolve=function(e){return e&&"object"===t(e)&&e.constructor===E?e:new E((function(t){t(e)}))},E.reject=function(t){return new E((function(e,n){n(t)}))};var _="function"==typeof Promise?Promise:E;function P(t,e){var n=e.fetch,r=e.XMLHttpRequest,o=e.token,i=t;return"URLSearchParams"in window?(i=new URL(t)).searchParams.set("token",o):i=i+"?token="+encodeURIComponent(o),i=i.toString(),new _((function(t,e){if("function"==typeof n)n(i,{mode:"cors",cache:"default"}).then((function(t){if(t.ok)return t.text();throw new Error("")})).then((function(e){t(e)})).catch(e);else if("function"==typeof r){var o=new r;o.addEventListener("loadend",(function(){this.responseText?t(this.responseText):e(new Error(""))}));["abort","error","timeout"].map((function(t){o.addEventListener(t,(function(){e(new Error(""))}))})),o.open("GET",i),o.send()}else{e(new Error(""))}}))}function C(t,e,n){var r=t;return[[/(url\("?)\.\.\/\.\.\/\.\./g,function(t,n){return"".concat(n).concat(e)}],[/(url\("?)\.\.\/webfonts/g,function(t,r){return"".concat(r).concat(e,"/releases/v").concat(n,"/webfonts")}],[/(url\("?)https:\/\/kit-free([^.])*\.fontawesome\.com/g,function(t,n){return"".concat(n).concat(e)}]].forEach((function(t){var e=o(t,2),n=e[0],i=e[1];r=r.replace(n,i)})),r}function F(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},o=e.document||o,i=u.bind(u,o,["fa","fab","fas","far","fal","fad","fak"]),f=Object.keys(t.iconUploads||{}).length>0;t.autoA11y.enabled&&n(i);var s=[{id:"fa-main",addOn:void 0}];t.v4shim.enabled&&s.push({id:"fa-v4-shims",addOn:"-v4-shims"}),t.v4FontFaceShim.enabled&&s.push({id:"fa-v4-font-face",addOn:"-v4-font-face"}),f&&s.push({id:"fa-kit-upload",customCss:!0});var d=s.map((function(n){return new _((function(o,i){P(n.customCss?a(t):c(t,{addOn:n.addOn,minify:t.minify.enabled}),e).then((function(i){o(U(i,r(r({},e),{},{baseUrl:t.baseUrl,version:t.version,id:n.id,contentFilter:function(t,e){return C(t,e.baseUrl,e.version)}})))})).catch(i)}))}));return _.all(d)}function U(t,e){var n=e.contentFilter||function(t,e){return t},r=document.createElement("style"),o=document.createTextNode(n(t,e));return r.appendChild(o),r.media="all",e.id&&r.setAttribute("id",e.id),e&&e.detectingConflicts&&e.detectionIgnoreAttr&&r.setAttributeNode(document.createAttribute(e.detectionIgnoreAttr)),r}function k(t,e){e.autoA11y=t.autoA11y.enabled,"pro"===t.license&&(e.autoFetchSvg=!0,e.fetchSvgFrom=t.baseUrl+"/releases/"+("latest"===t.version?"latest":"v".concat(t.version))+"/svgs",e.fetchUploadedSvgFrom=t.uploadsUrl);var n=[];return t.v4shim.enabled&&n.push(new _((function(n,o){P(c(t,{addOn:"-v4-shims",minify:t.minify.enabled}),e).then((function(t){n(I(t,r(r({},e),{},{id:"fa-v4-shims"})))})).catch(o)}))),n.push(new _((function(n,o){P(c(t,{minify:t.minify.enabled}),e).then((function(t){var o=I(t,r(r({},e),{},{id:"fa-main"}));n(function(t,e){var n=e&&void 0!==e.autoFetchSvg?e.autoFetchSvg:void 0,r=e&&void 0!==e.autoA11y?e.autoA11y:void 0;void 0!==r&&t.setAttribute("data-auto-a11y",r?"true":"false");n&&(t.setAttributeNode(document.createAttribute("data-auto-fetch-svg")),t.setAttribute("data-fetch-svg-from",e.fetchSvgFrom),t.setAttribute("data-fetch-uploaded-svg-from",e.fetchUploadedSvgFrom));return t}(o,e))})).catch(o)}))),_.all(n)}function I(t,e){var n=document.createElement("SCRIPT"),r=document.createTextNode(t);return n.appendChild(r),n.referrerPolicy="strict-origin",e.id&&n.setAttribute("id",e.id),e&&e.detectingConflicts&&e.detectionIgnoreAttr&&n.setAttributeNode(document.createAttribute(e.detectionIgnoreAttr)),n}function L(t){var e,n=[],r=document,o=r.documentElement.doScroll,i=(o?/^loaded|^c/:/^loaded|^i|^c/).test(r.readyState);i||r.addEventListener("DOMContentLoaded",e=function(){for(r.removeEventListener("DOMContentLoaded",e),i=1;e=n.shift();)e()}),i?setTimeout(t,0):n.push(t)}function T(t){"undefined"!=typeof MutationObserver&&new MutationObserver(t).observe(document,{childList:!0,subtree:!0})}try{if(window.FontAwesomeKitConfig){var x=window.FontAwesomeKitConfig,M={detectingConflicts:x.detectConflictsUntil&&new Date<=new Date(x.detectConflictsUntil),detectionIgnoreAttr:"data-fa-detection-ignore",fetch:window.fetch,token:x.token,XMLHttpRequest:window.XMLHttpRequest,document:document},D=document.currentScript,N=D?D.parentElement:document.head;(function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"js"===t.method?k(t,e):"css"===t.method?F(t,e,(function(t){L(t),T(t)})):void 0})(x,M).then((function(t){t.map((function(t){try{N.insertBefore(t,D?D.nextSibling:null)}catch(e){N.appendChild(t)}})),M.detectingConflicts&&D&&L((function(){D.setAttributeNode(document.createAttribute(M.detectionIgnoreAttr));var t=function(t,e){var n=document.createElement("script");return e&&e.detectionIgnoreAttr&&n.setAttributeNode(document.createAttribute(e.detectionIgnoreAttr)),n.src=c(t,{baseFilename:"conflict-detection",fileSuffix:"js",subdir:"js",minify:t.minify.enabled}),n}(x,M);document.body.appendChild(t)}))})).catch((function(t){console.error("".concat("Font Awesome Kit:"," ").concat(t))}))}}catch(t){console.error("".concat("Font Awesome Kit:"," ").concat(t))}})); | ... | ... |
app/static/js/navbar.js
1 | -// Script used with the navbar to color the menu items and leave them visible | |
1 | +/* Read the <span> with information about ul and li to active */ | |
2 | +const navbar_active = $("#nav_actived").html(); | |
3 | +const navbar_active_split = navbar_active.split(','); | |
2 | 4 | |
5 | +const ul_active = navbar_active_split[0]; | |
6 | +const a_active = navbar_active_split[1]; | |
3 | 7 | |
4 | -// Check if an element of the navbar is stored in the local storage or not | |
5 | -var collapseItem_ul = localStorage.getItem('collapseItem_ul'); | |
6 | -var collapseItem_a = localStorage.getItem('collapseItem_a'); | |
7 | - | |
8 | -// | |
9 | -var sublink_activate = $("a[href='" + collapseItem_a + "']"); | |
10 | -sublink_activate.addClass("sublink_activate"); | |
11 | - | |
12 | -$("#" + collapseItem_ul).addClass("show"); | |
13 | - | |
14 | - | |
15 | -//store the id of the collapsible element | |
16 | -$('.main-nav').click(function () { | |
17 | - localStorage.setItem('collapseItem_ul', $(this).next().attr("id")); | |
18 | -}); | |
19 | -$('.sub_link').click(function (e) { | |
20 | - localStorage.setItem('collapseItem_a', $(this).attr("href")); | |
21 | -}) | |
22 | - | |
23 | - | |
24 | -// a click to the connection bar or 'accueil' button desactivate the localstorage | |
25 | -$('.link_connect').click(function() { | |
26 | - $("#" + collapseItem_ul).removeClass("show"); | |
27 | - $("#" + collapseItem_ul).addClass("hide"); | |
28 | - sublink_activate.removeClass("sublink_activate"); | |
29 | - localStorage.removeItem('collapseItem_ul'); | |
30 | - localStorage.removeItem('collapseItem_a'); | |
31 | - | |
32 | -}); | |
33 | -$("#accueil").click(function (){ | |
34 | - $("#" + collapseItem_ul).removeClass("show"); | |
35 | - $("#" + collapseItem_ul).addClass("hide"); | |
36 | - sublink_activate.removeClass("sublink_activate"); | |
37 | - localStorage.removeItem('collapseItem_ul'); | |
38 | - localStorage.removeItem('collapseItem_a'); | |
39 | -}); | |
8 | +/* Open the ul */ | |
9 | +$("#" + ul_active).addClass("show"); | |
40 | 10 | |
11 | +/* Active the li */ | |
12 | +var sublink_activate = $("a[href='/" + a_active + "']"); | |
13 | +sublink_activate.addClass("sublink_activate"); | |
41 | 14 | \ No newline at end of file | ... | ... |
app/templates/base_page.html
... | ... | @@ -30,7 +30,7 @@ |
30 | 30 | |
31 | 31 | <div class="container-fluid"> |
32 | 32 | <div class="row"> |
33 | - <nav class="col-md-2 col-sm-auto col-xs-auto navbar-light bg-light navbar-expand-md sidebar mt-5"> | |
33 | + <nav class="col-md-half col-lg-2 col-md-2 navbar-light bg-light navbar-expand-md sidebar mt-5"> | |
34 | 34 | <button id="test" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> |
35 | 35 | <span class="navbar-toggler-icon"></span> |
36 | 36 | </button> | ... | ... |
app/templates/d3js-includes.html