Project

General

Profile

« Previous | Next » 

Revision 57697

[Monitor Dashboard]: 1. Change inputs to materials. 2. Add fonts. 3. Add uikit.js on index 4. Add reorder functionality on indicators. 5. Fix height of header to 70px

View differences:

modules/uoa-monitor-portal/trunk/monitor_dashboard/src/assets/theme-assets/uikit/js/uikit-icons-max.js
1
/*! UIkit 3.0.0-beta.22 | http://www.getuikit.com | (c) 2014 - 2017 YOOtheme | MIT License */
2

  
3
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define("uikitmax",e):t.UIkitMax=e()}(this,function(){"use strict";function t(i){t.installed||i.icon.add(e)}var e={album:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect x="5" y="2" width="10" height="1"></rect><rect x="3" y="4" width="14" height="1"></rect><rect fill="none" stroke="#000" x="1.5" y="6.5" width="17" height="11"></rect></svg>',ban:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="10" cy="10" r="9"></circle><line fill="none" stroke="#000" stroke-width="1.1" x1="4" y1="3.5" x2="16" y2="16.5"></line></svg>',behance:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M9.5,10.6c-0.4-0.5-0.9-0.9-1.6-1.1c1.7-1,2.2-3.2,0.7-4.7C7.8,4,6.3,4,5.2,4C3.5,4,1.7,4,0,4v12c1.7,0,3.4,0,5.2,0 c1,0,2.1,0,3.1-0.5C10.2,14.6,10.5,12.3,9.5,10.6L9.5,10.6z M5.6,6.1c1.8,0,1.8,2.7-0.1,2.7c-1,0-2,0-2.9,0V6.1H5.6z M2.6,13.8v-3.1 c1.1,0,2.1,0,3.2,0c2.1,0,2.1,3.2,0.1,3.2L2.6,13.8z"></path><path d="M19.9,10.9C19.7,9.2,18.7,7.6,17,7c-4.2-1.3-7.3,3.4-5.3,7.1c0.9,1.7,2.8,2.3,4.7,2.1c1.7-0.2,2.9-1.3,3.4-2.9h-2.2 c-0.4,1.3-2.4,1.5-3.5,0.6c-0.4-0.4-0.6-1.1-0.6-1.7H20C20,11.7,19.9,10.9,19.9,10.9z M13.5,10.6c0-1.6,2.3-2.7,3.5-1.4 c0.4,0.4,0.5,0.9,0.6,1.4H13.5L13.5,10.6z"></path><rect x="13" y="4" width="5" height="1.4"></rect></svg>',bell:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000" stroke-width="1.1" d="M17,15.5 L3,15.5 C2.99,14.61 3.79,13.34 4.1,12.51 C4.58,11.3 4.72,10.35 5.19,7.01 C5.54,4.53 5.89,3.2 7.28,2.16 C8.13,1.56 9.37,1.5 9.81,1.5 L9.96,1.5 C9.96,1.5 11.62,1.41 12.67,2.17 C14.08,3.2 14.42,4.54 14.77,7.02 C15.26,10.35 15.4,11.31 15.87,12.52 C16.2,13.34 17.01,14.61 17,15.5 L17,15.5 Z"></path><path fill="none" stroke="#000" d="M12.39,16 C12.39,17.37 11.35,18.43 9.91,18.43 C8.48,18.43 7.42,17.37 7.42,16"></path></svg>',bold:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M5,15.3 C5.66,15.3 5.9,15 5.9,14.53 L5.9,5.5 C5.9,4.92 5.56,4.7 5,4.7 L5,4 L8.95,4 C12.6,4 13.7,5.37 13.7,6.9 C13.7,7.87 13.14,9.17 10.86,9.59 L10.86,9.7 C13.25,9.86 14.29,11.28 14.3,12.54 C14.3,14.47 12.94,16 9,16 L5,16 L5,15.3 Z M9,9.3 C11.19,9.3 11.8,8.5 11.85,7 C11.85,5.65 11.3,4.8 9,4.8 L7.67,4.8 L7.67,9.3 L9,9.3 Z M9.185,15.22 C11.97,15 12.39,14 12.4,12.58 C12.4,11.15 11.39,10 9,10 L7.67,10 L7.67,15 L9.18,15 Z"></path></svg>',bolt:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M4.74,20 L7.73,12 L3,12 L15.43,1 L12.32,9 L17.02,9 L4.74,20 L4.74,20 L4.74,20 Z M9.18,11 L7.1,16.39 L14.47,10 L10.86,10 L12.99,4.67 L5.61,11 L9.18,11 L9.18,11 L9.18,11 Z"></path></svg>',bookmark:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon fill="none" stroke="#000" points="5.5 1.5 15.5 1.5 15.5 17.5 10.5 12.5 5.5 17.5"></polygon></svg>',calendar:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M 2,3 2,17 18,17 18,3 2,3 Z M 17,16 3,16 3,8 17,8 17,16 Z M 17,7 3,7 3,4 17,4 17,7 Z"></path><rect width="1" height="3" x="6" y="2"></rect><rect width="1" height="3" x="13" y="2"></rect></svg>',camera:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="10" cy="10.8" r="3.8"></circle><path fill="none" stroke="#000" d="M1,4.5 C0.7,4.5 0.5,4.7 0.5,5 L0.5,17 C0.5,17.3 0.7,17.5 1,17.5 L19,17.5 C19.3,17.5 19.5,17.3 19.5,17 L19.5,5 C19.5,4.7 19.3,4.5 19,4.5 L13.5,4.5 L13.5,2.9 C13.5,2.6 13.3,2.5 13,2.5 L7,2.5 C6.7,2.5 6.5,2.6 6.5,2.9 L6.5,4.5 L1,4.5 L1,4.5 Z"></path></svg>',cart:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle cx="7.3" cy="17.3" r="1.4"></circle><circle cx="13.3" cy="17.3" r="1.4"></circle><polyline fill="none" stroke="#000" points="0 2 3.2 4 5.3 12.5 16 12.5 18 6.5 8 6.5"></polyline></svg>',check:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.1" points="4,10 8,15 17,4"></polyline></svg>',clock:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="10" cy="10" r="9"></circle><rect x="9" y="4" width="1" height="7"></rect><path fill="none" stroke="#000" stroke-width="1.1" d="M13.018,14.197 L9.445,10.625"></path></svg>',close:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000" stroke-width="1.06" d="M16,16 L4,4"></path><path fill="none" stroke="#000" stroke-width="1.06" d="M16,4 L4,16"></path></svg>',code:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.01" points="13,4 19,10 13,16"></polyline><polyline fill="none" stroke="#000" stroke-width="1.01" points="7,4 1,10 7,16"></polyline></svg>',cog:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" cx="9.997" cy="10" r="3.31"></circle><path fill="none" stroke="#000" d="M18.488,12.285 L16.205,16.237 C15.322,15.496 14.185,15.281 13.303,15.791 C12.428,16.289 12.047,17.373 12.246,18.5 L7.735,18.5 C7.938,17.374 7.553,16.299 6.684,15.791 C5.801,15.27 4.655,15.492 3.773,16.237 L1.5,12.285 C2.573,11.871 3.317,10.999 3.317,9.991 C3.305,8.98 2.573,8.121 1.5,7.716 L3.765,3.784 C4.645,4.516 5.794,4.738 6.687,4.232 C7.555,3.722 7.939,2.637 7.735,1.5 L12.263,1.5 C12.072,2.637 12.441,3.71 13.314,4.22 C14.206,4.73 15.343,4.516 16.225,3.794 L18.487,7.714 C17.404,8.117 16.661,8.988 16.67,10.009 C16.672,11.018 17.415,11.88 18.488,12.285 L18.488,12.285 Z"></path></svg>',comment:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6,18.71 L6,14 L1,14 L1,1 L19,1 L19,14 L10.71,14 L6,18.71 L6,18.71 Z M2,13 L7,13 L7,16.29 L10.29,13 L18,13 L18,2 L2,2 L2,13 L2,13 Z"></path></svg>',commenting:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon fill="none" stroke="#000" points="1.5,1.5 18.5,1.5 18.5,13.5 10.5,13.5 6.5,17.5 6.5,13.5 1.5,13.5"></polygon><circle cx="10" cy="8" r="1"></circle><circle cx="6" cy="8" r="1"></circle><circle cx="14" cy="8" r="1"></circle></svg>',comments:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" points="2 0.5 19.5 0.5 19.5 13"></polyline><path d="M5,19.71 L5,15 L0,15 L0,2 L18,2 L18,15 L9.71,15 L5,19.71 L5,19.71 L5,19.71 Z M1,14 L6,14 L6,17.29 L9.29,14 L17,14 L17,3 L1,3 L1,14 L1,14 L1,14 Z"></path></svg>',copy:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect fill="none" stroke="#000" x="3.5" y="2.5" width="12" height="16"></rect><polyline fill="none" stroke="#000" points="5 0.5 17.5 0.5 17.5 17"></polyline></svg>',database:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><ellipse fill="none" stroke="#000" cx="10" cy="4.64" rx="7.5" ry="3.14"></ellipse><path fill="none" stroke="#000" d="M17.5,8.11 C17.5,9.85 14.14,11.25 10,11.25 C5.86,11.25 2.5,9.84 2.5,8.11"></path><path fill="none" stroke="#000" d="M17.5,11.25 C17.5,12.99 14.14,14.39 10,14.39 C5.86,14.39 2.5,12.98 2.5,11.25"></path><path fill="none" stroke="#000" d="M17.49,4.64 L17.5,14.36 C17.5,16.1 14.14,17.5 10,17.5 C5.86,17.5 2.5,16.09 2.5,14.36 L2.5,4.64"></path></svg>',desktop:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect x="8" y="15" width="1" height="2"></rect><rect x="11" y="15" width="1" height="2"></rect><rect x="5" y="16" width="10" height="1"></rect><rect fill="none" stroke="#000" x="1.5" y="3.5" width="17" height="11"></rect></svg>',download:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" points="14,10 9.5,14.5 5,10"></polyline><rect x="3" y="17" width="13" height="1"></rect><line fill="none" stroke="#000" x1="9.5" y1="13.91" x2="9.5" y2="3"></line></svg>',dribbble:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000" stroke-width="1.4" d="M1.3,8.9c0,0,5,0.1,8.6-1c1.4-0.4,2.6-0.9,4-1.9 c1.4-1.1,2.5-2.5,2.5-2.5"></path><path fill="none" stroke="#000" stroke-width="1.4" d="M3.9,16.6c0,0,1.7-2.8,3.5-4.2 c1.8-1.3,4-2,5.7-2.2C16,10,19,10.6,19,10.6"></path><path fill="none" stroke="#000" stroke-width="1.4" d="M6.9,1.6c0,0,3.3,4.6,4.2,6.8 c0.4,0.9,1.3,3.1,1.9,5.2c0.6,2,0.9,4.4,0.9,4.4"></path><circle fill="none" stroke="#000" stroke-width="1.4" cx="10" cy="10" r="9"></circle></svg>',expand:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon points="13 2 18 2 18 7 17 7 17 3 13 3"></polygon><polygon points="2 13 3 13 3 17 7 17 7 18 2 18"></polygon><path fill="none" stroke="#000" stroke-width="1.1" d="M11,9 L17,3"></path><path fill="none" stroke="#000" stroke-width="1.1" d="M3,17 L9,11"></path></svg>',facebook:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M11,10h2.6l0.4-3H11V5.3c0-0.9,0.2-1.5,1.5-1.5H14V1.1c-0.3,0-1-0.1-2.1-0.1C9.6,1,8,2.4,8,5v2H5.5v3H8v8h3V10z"></path></svg>',file:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect fill="none" stroke="#000" x="3.5" y="1.5" width="13" height="17"></rect></svg>',flickr:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle cx="5.5" cy="9.5" r="3.5"></circle><circle cx="14.5" cy="9.5" r="3.5"></circle></svg>',folder:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon fill="none" stroke="#000" points="9.5 5.5 8.5 3.5 1.5 3.5 1.5 16.5 18.5 16.5 18.5 5.5"></polygon></svg>',forward:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.47,13.11 C4.02,10.02 6.27,7.85 9.04,6.61 C9.48,6.41 10.27,6.13 11,5.91 L11,2 L18.89,9 L11,16 L11,12.13 C9.25,12.47 7.58,13.19 6.02,14.25 C3.03,16.28 1.63,18.54 1.63,18.54 C1.63,18.54 1.38,15.28 2.47,13.11 L2.47,13.11 Z M5.3,13.53 C6.92,12.4 9.04,11.4 12,10.92 L12,13.63 L17.36,9 L12,4.25 L12,6.8 C11.71,6.86 10.86,7.02 9.67,7.49 C6.79,8.65 4.58,10.96 3.49,13.08 C3.18,13.7 2.68,14.87 2.49,16 C3.28,15.05 4.4,14.15 5.3,13.53 L5.3,13.53 Z"></path></svg>',foursquare:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M15.23,2 C15.96,2 16.4,2.41 16.5,2.86 C16.57,3.15 16.56,3.44 16.51,3.73 C16.46,4.04 14.86,11.72 14.75,12.03 C14.56,12.56 14.16,12.82 13.61,12.83 C13.03,12.84 11.09,12.51 10.69,13 C10.38,13.38 7.79,16.39 6.81,17.53 C6.61,17.76 6.4,17.96 6.08,17.99 C5.68,18.04 5.29,17.87 5.17,17.45 C5.12,17.28 5.1,17.09 5.1,16.91 C5.1,12.4 4.86,7.81 5.11,3.31 C5.17,2.5 5.81,2.12 6.53,2 L15.23,2 L15.23,2 Z M9.76,11.42 C9.94,11.19 10.17,11.1 10.45,11.1 L12.86,11.1 C13.12,11.1 13.31,10.94 13.36,10.69 C13.37,10.64 13.62,9.41 13.74,8.83 C13.81,8.52 13.53,8.28 13.27,8.28 C12.35,8.29 11.42,8.28 10.5,8.28 C9.84,8.28 9.83,7.69 9.82,7.21 C9.8,6.85 10.13,6.55 10.5,6.55 C11.59,6.56 12.67,6.55 13.76,6.55 C14.03,6.55 14.23,6.4 14.28,6.14 C14.34,5.87 14.67,4.29 14.67,4.29 C14.67,4.29 14.82,3.74 14.19,3.74 L7.34,3.74 C7,3.75 6.84,4.02 6.84,4.33 C6.84,7.58 6.85,14.95 6.85,14.99 C6.87,15 8.89,12.51 9.76,11.42 L9.76,11.42 Z"></path></svg>',future:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polyline points="19 2 18 2 18 6 14 6 14 7 19 7 19 2"></polyline><path fill="none" stroke="#000" stroke-width="1.1" d="M18,6.548 C16.709,3.29 13.354,1 9.6,1 C4.6,1 0.6,5 0.6,10 C0.6,15 4.6,19 9.6,19 C14.6,19 18.6,15 18.6,10"></path><rect x="9" y="4" width="1" height="7"></rect><path d="M13.018,14.197 L9.445,10.625" fill="none" stroke="#000" stroke-width="1.1"></path></svg>',github:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10,1 C5.03,1 1,5.03 1,10 C1,13.98 3.58,17.35 7.16,18.54 C7.61,18.62 7.77,18.34 7.77,18.11 C7.77,17.9 7.76,17.33 7.76,16.58 C5.26,17.12 4.73,15.37 4.73,15.37 C4.32,14.33 3.73,14.05 3.73,14.05 C2.91,13.5 3.79,13.5 3.79,13.5 C4.69,13.56 5.17,14.43 5.17,14.43 C5.97,15.8 7.28,15.41 7.79,15.18 C7.87,14.6 8.1,14.2 8.36,13.98 C6.36,13.75 4.26,12.98 4.26,9.53 C4.26,8.55 4.61,7.74 5.19,7.11 C5.1,6.88 4.79,5.97 5.28,4.73 C5.28,4.73 6.04,4.49 7.75,5.65 C8.47,5.45 9.24,5.35 10,5.35 C10.76,5.35 11.53,5.45 12.25,5.65 C13.97,4.48 14.72,4.73 14.72,4.73 C15.21,5.97 14.9,6.88 14.81,7.11 C15.39,7.74 15.73,8.54 15.73,9.53 C15.73,12.99 13.63,13.75 11.62,13.97 C11.94,14.25 12.23,14.8 12.23,15.64 C12.23,16.84 12.22,17.81 12.22,18.11 C12.22,18.35 12.38,18.63 12.84,18.54 C16.42,17.35 19,13.98 19,10 C19,5.03 14.97,1 10,1 L10,1 Z"></path></svg>',gitter:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect x="3.5" y="1" width="1.531" height="11.471"></rect><rect x="7.324" y="4.059" width="1.529" height="15.294"></rect><rect x="11.148" y="4.059" width="1.527" height="15.294"></rect><rect x="14.971" y="4.059" width="1.529" height="8.412"></rect></svg>',google:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M17.86,9.09 C18.46,12.12 17.14,16.05 13.81,17.56 C9.45,19.53 4.13,17.68 2.47,12.87 C0.68,7.68 4.22,2.42 9.5,2.03 C11.57,1.88 13.42,2.37 15.05,3.65 C15.22,3.78 15.37,3.93 15.61,4.14 C14.9,4.81 14.23,5.45 13.5,6.14 C12.27,5.08 10.84,4.72 9.28,4.98 C8.12,5.17 7.16,5.76 6.37,6.63 C4.88,8.27 4.62,10.86 5.76,12.82 C6.95,14.87 9.17,15.8 11.57,15.25 C13.27,14.87 14.76,13.33 14.89,11.75 L10.51,11.75 L10.51,9.09 L17.86,9.09 L17.86,9.09 Z"></path></svg>',grid:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect x="2" y="2" width="3" height="3"></rect><rect x="8" y="2" width="3" height="3"></rect><rect x="14" y="2" width="3" height="3"></rect><rect x="2" y="8" width="3" height="3"></rect><rect x="8" y="8" width="3" height="3"></rect><rect x="14" y="8" width="3" height="3"></rect><rect x="2" y="14" width="3" height="3"></rect><rect x="8" y="14" width="3" height="3"></rect><rect x="14" y="14" width="3" height="3"></rect></svg>',happy:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle cx="13" cy="7" r="1"></circle><circle cx="7" cy="7" r="1"></circle><circle fill="none" stroke="#000" cx="10" cy="10" r="8.5"></circle><path fill="none" stroke="#000" d="M14.6,11.4 C13.9,13.3 12.1,14.5 10,14.5 C7.9,14.5 6.1,13.3 5.4,11.4"></path></svg>',hashtag:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M15.431,8 L15.661,7 L12.911,7 L13.831,3 L12.901,3 L11.98,7 L9.29,7 L10.21,3 L9.281,3 L8.361,7 L5.23,7 L5,8 L8.13,8 L7.21,12 L4.23,12 L4,13 L6.98,13 L6.061,17 L6.991,17 L7.911,13 L10.601,13 L9.681,17 L10.611,17 L11.531,13 L14.431,13 L14.661,12 L11.76,12 L12.681,8 L15.431,8 Z M10.831,12 L8.141,12 L9.061,8 L11.75,8 L10.831,12 Z"></path></svg>',heart:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000" stroke-width="1.03" d="M10,4 C10,4 8.1,2 5.74,2 C3.38,2 1,3.55 1,6.73 C1,8.84 2.67,10.44 2.67,10.44 L10,18 L17.33,10.44 C17.33,10.44 19,8.84 19,6.73 C19,3.55 16.62,2 14.26,2 C11.9,2 10,4 10,4 L10,4 Z"></path></svg>',history:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polyline fill="#000" points="1 2 2 2 2 6 6 6 6 7 1 7 1 2"></polyline><path fill="none" stroke="#000" stroke-width="1.1" d="M2.1,6.548 C3.391,3.29 6.746,1 10.5,1 C15.5,1 19.5,5 19.5,10 C19.5,15 15.5,19 10.5,19 C5.5,19 1.5,15 1.5,10"></path><rect x="9" y="4" width="1" height="7"></rect><path fill="none" stroke="#000" stroke-width="1.1" d="M13.018,14.197 L9.445,10.625" id="Shape"></path></svg>',home:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon points="18.65 11.35 10 2.71 1.35 11.35 0.65 10.65 10 1.29 19.35 10.65"></polygon><polygon points="15 4 18 4 18 7 17 7 17 5 15 5"></polygon><polygon points="3 11 4 11 4 18 7 18 7 12 12 12 12 18 16 18 16 11 17 11 17 19 11 19 11 13 8 13 8 19 3 19"></polygon></svg>',image:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle cx="16.1" cy="6.1" r="1.1"></circle><rect fill="none" stroke="#000" x="0.5" y="2.5" width="19" height="15"></rect><polyline fill="none" stroke="#000" stroke-width="1.01" points="4,13 8,9 13,14"></polyline><polyline fill="none" stroke="#000" stroke-width="1.01" points="11,12 12.5,10.5 16,14"></polyline></svg>',info:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M12.13,11.59 C11.97,12.84 10.35,14.12 9.1,14.16 C6.17,14.2 9.89,9.46 8.74,8.37 C9.3,8.16 10.62,7.83 10.62,8.81 C10.62,9.63 10.12,10.55 9.88,11.32 C8.66,15.16 12.13,11.15 12.14,11.18 C12.16,11.21 12.16,11.35 12.13,11.59 C12.08,11.95 12.16,11.35 12.13,11.59 L12.13,11.59 Z M11.56,5.67 C11.56,6.67 9.36,7.15 9.36,6.03 C9.36,5 11.56,4.54 11.56,5.67 L11.56,5.67 Z"></path><circle fill="none" stroke="#000" stroke-width="1.1" cx="10" cy="10" r="9"></circle></svg>',instagram:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M13.55,1H6.46C3.45,1,1,3.44,1,6.44v7.12c0,3,2.45,5.44,5.46,5.44h7.08c3.02,0,5.46-2.44,5.46-5.44V6.44 C19.01,3.44,16.56,1,13.55,1z M17.5,14c0,1.93-1.57,3.5-3.5,3.5H6c-1.93,0-3.5-1.57-3.5-3.5V6c0-1.93,1.57-3.5,3.5-3.5h8 c1.93,0,3.5,1.57,3.5,3.5V14z"></path><circle cx="14.87" cy="5.26" r="1.09"></circle><path d="M10.03,5.45c-2.55,0-4.63,2.06-4.63,4.6c0,2.55,2.07,4.61,4.63,4.61c2.56,0,4.63-2.061,4.63-4.61 C14.65,7.51,12.58,5.45,10.03,5.45L10.03,5.45L10.03,5.45z M10.08,13c-1.66,0-3-1.34-3-2.99c0-1.65,1.34-2.99,3-2.99s3,1.34,3,2.99 C13.08,11.66,11.74,13,10.08,13L10.08,13L10.08,13z"></path></svg>',italic:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M12.63,5.48 L10.15,14.52 C10,15.08 10.37,15.25 11.92,15.3 L11.72,16 L6,16 L6.2,15.31 C7.78,15.26 8.19,15.09 8.34,14.53 L10.82,5.49 C10.97,4.92 10.63,4.76 9.09,4.71 L9.28,4 L15,4 L14.81,4.69 C13.23,4.75 12.78,4.91 12.63,5.48 L12.63,5.48 Z"></path></svg>',joomla:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7.8,13.4l1.7-1.7L5.9,8c-0.6-0.5-0.6-1.5,0-2c0.6-0.6,1.4-0.6,2,0l1.7-1.7c-1-1-2.3-1.3-3.6-1C5.8,2.2,4.8,1.4,3.7,1.4 c-1.3,0-2.3,1-2.3,2.3c0,1.1,0.8,2,1.8,2.3c-0.4,1.3-0.1,2.8,1,3.8L7.8,13.4L7.8,13.4z"></path><path d="M10.2,4.3c1-1,2.5-1.4,3.8-1c0.2-1.1,1.1-2,2.3-2c1.3,0,2.3,1,2.3,2.3c0,1.2-0.9,2.2-2,2.3c0.4,1.3,0,2.8-1,3.8L13.9,8 c0.6-0.5,0.6-1.5,0-2c-0.5-0.6-1.5-0.6-2,0L8.2,9.7L6.5,8"></path><path d="M14.1,16.8c-1.3,0.4-2.8,0.1-3.8-1l1.7-1.7c0.6,0.6,1.5,0.6,2,0c0.5-0.6,0.6-1.5,0-2l-3.7-3.7L12,6.7l3.7,3.7 c1,1,1.3,2.4,1,3.6c1.1,0.2,2,1.1,2,2.3c0,1.3-1,2.3-2.3,2.3C15.2,18.6,14.3,17.8,14.1,16.8"></path><path d="M13.2,12.2l-3.7,3.7c-1,1-2.4,1.3-3.6,1c-0.2,1-1.2,1.8-2.2,1.8c-1.3,0-2.3-1-2.3-2.3c0-1.1,0.8-2,1.8-2.3 c-0.3-1.3,0-2.7,1-3.7l1.7,1.7c-0.6,0.6-0.6,1.5,0,2c0.6,0.6,1.4,0.6,2,0l3.7-3.7"></path></svg>',laptop:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect y="16" width="20" height="1"></rect><rect fill="none" stroke="#000" x="2.5" y="4.5" width="15" height="10"></rect></svg>',lifesaver:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10,0.5 C4.76,0.5 0.5,4.76 0.5,10 C0.5,15.24 4.76,19.5 10,19.5 C15.24,19.5 19.5,15.24 19.5,10 C19.5,4.76 15.24,0.5 10,0.5 L10,0.5 Z M10,1.5 C11.49,1.5 12.89,1.88 14.11,2.56 L11.85,4.82 C11.27,4.61 10.65,4.5 10,4.5 C9.21,4.5 8.47,4.67 7.79,4.96 L5.58,2.75 C6.87,1.95 8.38,1.5 10,1.5 L10,1.5 Z M4.96,7.8 C4.67,8.48 4.5,9.21 4.5,10 C4.5,10.65 4.61,11.27 4.83,11.85 L2.56,14.11 C1.88,12.89 1.5,11.49 1.5,10 C1.5,8.38 1.95,6.87 2.75,5.58 L4.96,7.79 L4.96,7.8 L4.96,7.8 Z M10,18.5 C8.25,18.5 6.62,17.97 5.27,17.06 L7.46,14.87 C8.22,15.27 9.08,15.5 10,15.5 C10.79,15.5 11.53,15.33 12.21,15.04 L14.42,17.25 C13.13,18.05 11.62,18.5 10,18.5 L10,18.5 Z M10,14.5 C7.52,14.5 5.5,12.48 5.5,10 C5.5,7.52 7.52,5.5 10,5.5 C12.48,5.5 14.5,7.52 14.5,10 C14.5,12.48 12.48,14.5 10,14.5 L10,14.5 Z M15.04,12.21 C15.33,11.53 15.5,10.79 15.5,10 C15.5,9.08 15.27,8.22 14.87,7.46 L17.06,5.27 C17.97,6.62 18.5,8.25 18.5,10 C18.5,11.62 18.05,13.13 17.25,14.42 L15.04,12.21 L15.04,12.21 Z"></path></svg>',link:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000" stroke-width="1.1" d="M10.625,12.375 L7.525,15.475 C6.825,16.175 5.925,16.175 5.225,15.475 L4.525,14.775 C3.825,14.074 3.825,13.175 4.525,12.475 L7.625,9.375"></path><path fill="none" stroke="#000" stroke-width="1.1" d="M9.325,7.375 L12.425,4.275 C13.125,3.575 14.025,3.575 14.724,4.275 L15.425,4.975 C16.125,5.675 16.125,6.575 15.425,7.275 L12.325,10.375"></path><path fill="none" stroke="#000" stroke-width="1.1" d="M7.925,11.875 L11.925,7.975"></path></svg>',linkedin:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M5.77,17.89 L5.77,7.17 L2.21,7.17 L2.21,17.89 L5.77,17.89 L5.77,17.89 Z M3.99,5.71 C5.23,5.71 6.01,4.89 6.01,3.86 C5.99,2.8 5.24,2 4.02,2 C2.8,2 2,2.8 2,3.85 C2,4.88 2.77,5.7 3.97,5.7 L3.99,5.7 L3.99,5.71 L3.99,5.71 Z"></path><path d="M7.75,17.89 L11.31,17.89 L11.31,11.9 C11.31,11.58 11.33,11.26 11.43,11.03 C11.69,10.39 12.27,9.73 13.26,9.73 C14.55,9.73 15.06,10.71 15.06,12.15 L15.06,17.89 L18.62,17.89 L18.62,11.74 C18.62,8.45 16.86,6.92 14.52,6.92 C12.6,6.92 11.75,7.99 11.28,8.73 L11.3,8.73 L11.3,7.17 L7.75,7.17 C7.79,8.17 7.75,17.89 7.75,17.89 L7.75,17.89 L7.75,17.89 Z"></path></svg>',list:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect x="6" y="4" width="12" height="1"></rect><rect x="6" y="9" width="12" height="1"></rect><rect x="6" y="14" width="12" height="1"></rect><rect x="2" y="4" width="2" height="1"></rect><rect x="2" y="9" width="2" height="1"></rect><rect x="2" y="14" width="2" height="1"></rect></svg>',location:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000" stroke-width="1.01" d="M10,0.5 C6.41,0.5 3.5,3.39 3.5,6.98 C3.5,11.83 10,19 10,19 C10,19 16.5,11.83 16.5,6.98 C16.5,3.39 13.59,0.5 10,0.5 L10,0.5 Z"></path><circle fill="none" stroke="#000" cx="10" cy="6.8" r="2.3"></circle></svg>',lock:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect fill="none" stroke="#000" height="10" width="13" y="8.5" x="3.5"></rect><path fill="none" stroke="#000" d="M6.5,8 L6.5,4.88 C6.5,3.01 8.07,1.5 10,1.5 C11.93,1.5 13.5,3.01 13.5,4.88 L13.5,8"></path></svg>',mail:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" points="1.4,6.5 10,11 18.6,6.5"></polyline><path d="M 1,4 1,16 19,16 19,4 1,4 Z M 18,15 2,15 2,5 18,5 18,15 Z"></path></svg>',menu:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect x="2" y="4" width="16" height="1"></rect><rect x="2" y="9" width="16" height="1"></rect><rect x="2" y="14" width="16" height="1"></rect></svg>',minus:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect height="1" width="18" y="9" x="1"></rect></svg>',more:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle cx="3" cy="10" r="2"></circle><circle cx="10" cy="10" r="2"></circle><circle cx="17" cy="10" r="2"></circle></svg>',move:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon points="4,5 1,5 1,9 2,9 2,6 4,6 "></polygon><polygon points="1,16 2,16 2,18 4,18 4,19 1,19 "></polygon><polygon points="14,16 14,19 11,19 11,18 13,18 13,16 "></polygon><rect fill="none" stroke="#000" x="5.5" y="1.5" width="13" height="13"></rect><rect x="1" y="11" width="1" height="3"></rect><rect x="6" y="18" width="3" height="1"></rect></svg>',nut:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon fill="none" stroke="#000" points="2.5,5.7 10,1.3 17.5,5.7 17.5,14.3 10,18.7 2.5,14.3"></polygon><circle fill="none" stroke="#000" cx="10" cy="10" r="3.5"></circle></svg>',pagekit:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon points="3,1 17,1 17,16 10,16 10,13 14,13 14,4 6,4 6,16 10,16 10,19 3,19 "></polygon></svg>',pencil:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000" d="M17.25,6.01 L7.12,16.1 L3.82,17.2 L5.02,13.9 L15.12,3.88 C15.71,3.29 16.66,3.29 17.25,3.88 C17.83,4.47 17.83,5.42 17.25,6.01 L17.25,6.01 Z"></path><path fill="none" stroke="#000" d="M15.98,7.268 L13.851,5.148"></path></svg>',phone:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000" d="M15.5,17 C15.5,17.8 14.8,18.5 14,18.5 L7,18.5 C6.2,18.5 5.5,17.8 5.5,17 L5.5,3 C5.5,2.2 6.2,1.5 7,1.5 L14,1.5 C14.8,1.5 15.5,2.2 15.5,3 L15.5,17 L15.5,17 L15.5,17 Z"></path><circle cx="10.5" cy="16.5" r="0.8"></circle></svg>',pinterest:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10.21,1 C5.5,1 3,4.16 3,7.61 C3,9.21 3.85,11.2 5.22,11.84 C5.43,11.94 5.54,11.89 5.58,11.69 C5.62,11.54 5.8,10.8 5.88,10.45 C5.91,10.34 5.89,10.24 5.8,10.14 C5.36,9.59 5,8.58 5,7.65 C5,5.24 6.82,2.91 9.93,2.91 C12.61,2.91 14.49,4.74 14.49,7.35 C14.49,10.3 13,12.35 11.06,12.35 C9.99,12.35 9.19,11.47 9.44,10.38 C9.75,9.08 10.35,7.68 10.35,6.75 C10.35,5.91 9.9,5.21 8.97,5.21 C7.87,5.21 6.99,6.34 6.99,7.86 C6.99,8.83 7.32,9.48 7.32,9.48 C7.32,9.48 6.24,14.06 6.04,14.91 C5.7,16.35 6.08,18.7 6.12,18.9 C6.14,19.01 6.26,19.05 6.33,18.95 C6.44,18.81 7.74,16.85 8.11,15.44 C8.24,14.93 8.79,12.84 8.79,12.84 C9.15,13.52 10.19,14.09 11.29,14.09 C14.58,14.09 16.96,11.06 16.96,7.3 C16.94,3.7 14,1 10.21,1"></path></svg>',play:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon fill="none" stroke="#000" points="6.5,5 14.5,10 6.5,15"></polygon></svg>',plus:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect x="9" y="1" width="1" height="17"></rect><rect x="1" y="9" width="17" height="1"></rect></svg>',pull:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon points="6.85,8 9.5,10.6 12.15,8 12.85,8.7 9.5,12 6.15,8.7"></polygon><line fill="none" stroke="#000" x1="9.5" y1="11" x2="9.5" y2="2"></line><polyline fill="none" stroke="#000" points="6,5.5 3.5,5.5 3.5,18.5 15.5,18.5 15.5,5.5 13,5.5"></polyline></svg>',push:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon points="12.15,4 9.5,1.4 6.85,4 6.15,3.3 9.5,0 12.85,3.3"></polygon><line fill="none" stroke="#000" x1="9.5" y1="10" x2="9.5" y2="1"></line><polyline fill="none" stroke="#000" points="6 5.5 3.5 5.5 3.5 18.5 15.5 18.5 15.5 5.5 13 5.5"></polyline></svg>',question:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="10" cy="10" r="9"></circle><circle cx="10.44" cy="14.42" r="1.05"></circle><path fill="none" stroke="#000" stroke-width="1.2" d="M8.17,7.79 C8.17,4.75 12.72,4.73 12.72,7.72 C12.72,8.67 11.81,9.15 11.23,9.75 C10.75,10.24 10.51,10.73 10.45,11.4 C10.44,11.53 10.43,11.64 10.43,11.75"></path></svg>',receiver:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000" stroke-width="1.01" d="M6.189,13.611C8.134,15.525 11.097,18.239 13.867,18.257C16.47,18.275 18.2,16.241 18.2,16.241L14.509,12.551L11.539,13.639L6.189,8.29L7.313,5.355L3.76,1.8C3.76,1.8 1.732,3.537 1.7,6.092C1.667,8.809 4.347,11.738 6.189,13.611"></path></svg>',refresh:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000" stroke-width="1.1" d="M17.08,11.15 C17.09,11.31 17.1,11.47 17.1,11.64 C17.1,15.53 13.94,18.69 10.05,18.69 C6.16,18.68 3,15.53 3,11.63 C3,7.74 6.16,4.58 10.05,4.58 C10.9,4.58 11.71,4.73 12.46,5"></path><polyline fill="none" stroke="#000" points="9.9 2 12.79 4.89 9.79 7.9"></polyline></svg>',reply:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M17.7,13.11 C16.12,10.02 13.84,7.85 11.02,6.61 C10.57,6.41 9.75,6.13 9,5.91 L9,2 L1,9 L9,16 L9,12.13 C10.78,12.47 12.5,13.19 14.09,14.25 C17.13,16.28 18.56,18.54 18.56,18.54 C18.56,18.54 18.81,15.28 17.7,13.11 L17.7,13.11 Z M14.82,13.53 C13.17,12.4 11.01,11.4 8,10.92 L8,13.63 L2.55,9 L8,4.25 L8,6.8 C8.3,6.86 9.16,7.02 10.37,7.49 C13.3,8.65 15.54,10.96 16.65,13.08 C16.97,13.7 17.48,14.86 17.68,16 C16.87,15.05 15.73,14.15 14.82,13.53 L14.82,13.53 Z"></path></svg>',rss:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle cx="3.12" cy="16.8" r="1.85"></circle><path fill="none" stroke="#000" stroke-width="1.1" d="M1.5,8.2 C1.78,8.18 2.06,8.16 2.35,8.16 C7.57,8.16 11.81,12.37 11.81,17.57 C11.81,17.89 11.79,18.19 11.76,18.5"></path><path fill="none" stroke="#000" stroke-width="1.1" d="M1.5,2.52 C1.78,2.51 2.06,2.5 2.35,2.5 C10.72,2.5 17.5,9.24 17.5,17.57 C17.5,17.89 17.49,18.19 17.47,18.5"></path></svg>',search:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="9" cy="9" r="7"></circle><path fill="none" stroke="#000" stroke-width="1.1" d="M14,14 L18,18 L14,14 Z"></path></svg>',server:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="3" width="1" height="2"></rect><rect x="5" y="3" width="1" height="2"></rect><rect x="7" y="3" width="1" height="2"></rect><rect x="16" y="3" width="1" height="1"></rect><rect x="16" y="10" width="1" height="1"></rect><circle fill="none" stroke="#000" cx="9.9" cy="17.4" r="1.4"></circle><rect x="3" y="10" width="1" height="2"></rect><rect x="5" y="10" width="1" height="2"></rect><rect x="9.5" y="14" width="1" height="2"></rect><rect x="3" y="17" width="6" height="1"></rect><rect x="11" y="17" width="6" height="1"></rect><rect fill="none" stroke="#000" x="1.5" y="1.5" width="17" height="5"></rect><rect fill="none" stroke="#000" x="1.5" y="8.5" width="17" height="5"></rect></svg>',settings:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><ellipse fill="none" stroke="#000" cx="6.11" cy="3.55" rx="2.11" ry="2.15"></ellipse><ellipse fill="none" stroke="#000" cx="6.11" cy="15.55" rx="2.11" ry="2.15"></ellipse><circle fill="none" stroke="#000" cx="13.15" cy="9.55" r="2.15"></circle><rect x="1" y="3" width="3" height="1"></rect><rect x="10" y="3" width="8" height="1"></rect><rect x="1" y="9" width="8" height="1"></rect><rect x="15" y="9" width="3" height="1"></rect><rect x="1" y="15" width="3" height="1"></rect><rect x="10" y="15" width="8" height="1"></rect></svg>',shrink:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon points="11 4 12 4 12 8 16 8 16 9 11 9"></polygon><polygon points="4 11 9 11 9 16 8 16 8 12 4 12"></polygon><path fill="none" stroke="#000" stroke-width="1.1" d="M12,8 L18,2"></path><path fill="none" stroke="#000" stroke-width="1.1" d="M2,18 L8,12"></path></svg>',
4
social:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><line fill="none" stroke="#000" stroke-width="1.1" x1="13.4" y1="14" x2="6.3" y2="10.7"></line><line fill="none" stroke="#000" stroke-width="1.1" x1="13.5" y1="5.5" x2="6.5" y2="8.8"></line><circle fill="none" stroke="#000" stroke-width="1.1" cx="15.5" cy="4.6" r="2.3"></circle><circle fill="none" stroke="#000" stroke-width="1.1" cx="15.5" cy="14.8" r="2.3"></circle><circle fill="none" stroke="#000" stroke-width="1.1" cx="4.5" cy="9.8" r="2.3"></circle></svg>',soundcloud:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M17.2,9.4c-0.4,0-0.8,0.1-1.101,0.2c-0.199-2.5-2.399-4.5-5-4.5c-0.6,0-1.2,0.1-1.7,0.3C9.2,5.5,9.1,5.6,9.1,5.6V15h8 c1.601,0,2.801-1.2,2.801-2.8C20,10.7,18.7,9.4,17.2,9.4L17.2,9.4z"></path><rect x="6" y="6.5" width="1.5" height="8.5"></rect><rect x="3" y="8" width="1.5" height="7"></rect><rect y="10" width="1.5" height="5"></rect></svg>',star:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon fill="none" stroke="#000" stroke-width="1.01" points="10 2 12.63 7.27 18.5 8.12 14.25 12.22 15.25 18 10 15.27 4.75 18 5.75 12.22 1.5 8.12 7.37 7.27"></polygon></svg>',strikethrough:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6,13.02 L6.65,13.02 C7.64,15.16 8.86,16.12 10.41,16.12 C12.22,16.12 12.92,14.93 12.92,13.89 C12.92,12.55 11.99,12.03 9.74,11.23 C8.05,10.64 6.23,10.11 6.23,7.83 C6.23,5.5 8.09,4.09 10.4,4.09 C11.44,4.09 12.13,4.31 12.72,4.54 L13.33,4 L13.81,4 L13.81,7.59 L13.16,7.59 C12.55,5.88 11.52,4.89 10.07,4.89 C8.84,4.89 7.89,5.69 7.89,7.03 C7.89,8.29 8.89,8.78 10.88,9.45 C12.57,10.03 14.38,10.6 14.38,12.91 C14.38,14.75 13.27,16.93 10.18,16.93 C9.18,16.93 8.17,16.69 7.46,16.39 L6.52,17 L6,17 L6,13.02 L6,13.02 Z"></path><rect x="3" y="10" width="15" height="1"></rect></svg>',table:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="3" width="18" height="1"></rect><rect x="1" y="7" width="18" height="1"></rect><rect x="1" y="11" width="18" height="1"></rect><rect x="1" y="15" width="18" height="1"></rect></svg>',tablet:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000" d="M5,18.5 C4.2,18.5 3.5,17.8 3.5,17 L3.5,3 C3.5,2.2 4.2,1.5 5,1.5 L16,1.5 C16.8,1.5 17.5,2.2 17.5,3 L17.5,17 C17.5,17.8 16.8,18.5 16,18.5 L5,18.5 L5,18.5 L5,18.5 Z"></path><circle cx="10.5" cy="16.3" r="0.8"></circle></svg>',tag:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000" stroke-width="1.1" d="M17.5,3.71 L17.5,7.72 C17.5,7.96 17.4,8.2 17.21,8.39 L8.39,17.2 C7.99,17.6 7.33,17.6 6.93,17.2 L2.8,13.07 C2.4,12.67 2.4,12.01 2.8,11.61 L11.61,2.8 C11.81,2.6 12.08,2.5 12.34,2.5 L16.19,2.5 C16.52,2.5 16.86,2.63 17.11,2.88 C17.35,3.11 17.48,3.4 17.5,3.71 L17.5,3.71 Z"></path><circle cx="14" cy="6" r="1"></circle></svg>',thumbnails:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect fill="none" stroke="#000" x="3.5" y="3.5" width="5" height="5"></rect><rect fill="none" stroke="#000" x="11.5" y="3.5" width="5" height="5"></rect><rect fill="none" stroke="#000" x="11.5" y="11.5" width="5" height="5"></rect><rect fill="none" stroke="#000" x="3.5" y="11.5" width="5" height="5"></rect></svg>',trash:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" points="6.5 3 6.5 1.5 13.5 1.5 13.5 3"></polyline><polyline fill="none" stroke="#000" points="4.5 4 4.5 18.5 15.5 18.5 15.5 4"></polyline><rect x="8" y="7" width="1" height="9"></rect><rect x="11" y="7" width="1" height="9"></rect><rect x="2" y="3" width="16" height="1"></rect></svg>',tripadvisor:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M19.021,7.866C19.256,6.862,20,5.854,20,5.854h-3.346C14.781,4.641,12.504,4,9.98,4C7.363,4,4.999,4.651,3.135,5.876H0\tc0,0,0.738,0.987,0.976,1.988c-0.611,0.837-0.973,1.852-0.973,2.964c0,2.763,2.249,5.009,5.011,5.009\tc1.576,0,2.976-0.737,3.901-1.879l1.063,1.599l1.075-1.615c0.475,0.611,1.1,1.111,1.838,1.451c1.213,0.547,2.574,0.612,3.825,0.15\tc2.589-0.963,3.913-3.852,2.964-6.439c-0.175-0.463-0.4-0.876-0.675-1.238H19.021z M16.38,14.594\tc-1.002,0.371-2.088,0.328-3.06-0.119c-0.688-0.317-1.252-0.817-1.657-1.438c-0.164-0.25-0.313-0.52-0.417-0.811\tc-0.124-0.328-0.186-0.668-0.217-1.014c-0.063-0.689,0.037-1.396,0.339-2.043c0.448-0.971,1.251-1.71,2.25-2.079\tc2.075-0.765,4.375,0.3,5.14,2.366c0.762,2.066-0.301,4.37-2.363,5.134L16.38,14.594L16.38,14.594z M8.322,13.066\tc-0.72,1.059-1.935,1.76-3.309,1.76c-2.207,0-4.001-1.797-4.001-3.996c0-2.203,1.795-4.002,4.001-4.002\tc2.204,0,3.999,1.8,3.999,4.002c0,0.137-0.024,0.261-0.04,0.396c-0.067,0.678-0.284,1.313-0.648,1.853v-0.013H8.322z M2.472,10.775\tc0,1.367,1.112,2.479,2.476,2.479c1.363,0,2.472-1.11,2.472-2.479c0-1.359-1.11-2.468-2.472-2.468\tC3.584,8.306,2.473,9.416,2.472,10.775L2.472,10.775z M12.514,10.775c0,1.367,1.104,2.479,2.471,2.479\tc1.363,0,2.474-1.108,2.474-2.479c0-1.359-1.11-2.468-2.474-2.468c-1.364,0-2.477,1.109-2.477,2.468H12.514z M3.324,10.775\tc0-0.893,0.726-1.618,1.614-1.618c0.889,0,1.625,0.727,1.625,1.618c0,0.898-0.725,1.627-1.625,1.627\tc-0.901,0-1.625-0.729-1.625-1.627H3.324z M13.354,10.775c0-0.893,0.726-1.618,1.627-1.618c0.886,0,1.61,0.727,1.61,1.618\tc0,0.898-0.726,1.627-1.626,1.627s-1.625-0.729-1.625-1.627H13.354z M9.977,4.875c1.798,0,3.425,0.324,4.849,0.968\tc-0.535,0.015-1.061,0.108-1.586,0.3c-1.264,0.463-2.264,1.388-2.815,2.604c-0.262,0.551-0.398,1.133-0.448,1.72\tC9.79,7.905,7.677,5.873,5.076,5.82C6.501,5.208,8.153,4.875,9.94,4.875H9.977z"></path></svg>',tumblr:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.885,8.598c0,0,0,3.393,0,4.996c0,0.282,0,0.66,0.094,0.942c0.377,1.509,1.131,2.545,2.545,3.11 c1.319,0.472,2.356,0.472,3.676,0c0.565-0.188,1.132-0.659,1.132-0.659l-0.849-2.263c0,0-1.036,0.378-1.603,0.283 c-0.565-0.094-1.226-0.66-1.226-1.508c0-1.603,0-4.902,0-4.902h2.828V5.771h-2.828V2H8.205c0,0-0.094,0.66-0.188,0.942 C7.828,3.791,7.262,4.733,6.603,5.394C5.848,6.147,5,6.43,5,6.43v2.168H6.885z"></path></svg>',tv:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect x="7" y="16" width="6" height="1"></rect><rect fill="none" stroke="#000" x="0.5" y="3.5" width="19" height="11"></rect></svg>',twitter:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M19,4.74 C18.339,5.029 17.626,5.229 16.881,5.32 C17.644,4.86 18.227,4.139 18.503,3.28 C17.79,3.7 17.001,4.009 16.159,4.17 C15.485,3.45 14.526,3 13.464,3 C11.423,3 9.771,4.66 9.771,6.7 C9.771,6.99 9.804,7.269 9.868,7.539 C6.795,7.38 4.076,5.919 2.254,3.679 C1.936,4.219 1.754,4.86 1.754,5.539 C1.754,6.82 2.405,7.95 3.397,8.61 C2.79,8.589 2.22,8.429 1.723,8.149 L1.723,8.189 C1.723,9.978 2.997,11.478 4.686,11.82 C4.376,11.899 4.049,11.939 3.713,11.939 C3.475,11.939 3.245,11.919 3.018,11.88 C3.49,13.349 4.852,14.419 6.469,14.449 C5.205,15.429 3.612,16.019 1.882,16.019 C1.583,16.019 1.29,16.009 1,15.969 C2.635,17.019 4.576,17.629 6.662,17.629 C13.454,17.629 17.17,12 17.17,7.129 C17.17,6.969 17.166,6.809 17.157,6.649 C17.879,6.129 18.504,5.478 19,4.74"></path></svg>',uikit:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon points="14.4,3.1 11.3,5.1 15,7.3 15,12.9 10,15.7 5,12.9 5,8.5 2,6.8 2,14.8 9.9,19.5 18,14.8 18,5.3"></polygon><polygon points="9.8,4.2 6.7,2.4 9.8,0.4 12.9,2.3"></polygon></svg>',unlock:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect fill="none" stroke="#000" x="3.5" y="8.5" width="13" height="10"></rect><path fill="none" stroke="#000" d="M6.5,8.5 L6.5,4.9 C6.5,3 8.1,1.5 10,1.5 C11.9,1.5 13.5,3 13.5,4.9"></path></svg>',upload:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" points="5 8 9.5 3.5 14 8 "></polyline><rect x="3" y="17" width="13" height="1"></rect><line fill="none" stroke="#000" x1="9.5" y1="15" x2="9.5" y2="4"></line></svg>',user:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="9.9" cy="6.4" r="4.4"></circle><path fill="none" stroke="#000" stroke-width="1.1" d="M1.5,19 C2.3,14.5 5.8,11.2 10,11.2 C14.2,11.2 17.7,14.6 18.5,19.2"></path></svg>',users:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="7.7" cy="8.6" r="3.5"></circle><path fill="none" stroke="#000" stroke-width="1.1" d="M1,18.1 C1.7,14.6 4.4,12.1 7.6,12.1 C10.9,12.1 13.7,14.8 14.3,18.3"></path><path fill="none" stroke="#000" stroke-width="1.1" d="M11.4,4 C12.8,2.4 15.4,2.8 16.3,4.7 C17.2,6.6 15.7,8.9 13.6,8.9 C16.5,8.9 18.8,11.3 19.2,14.1"></path></svg>',vimeo:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.065,7.59C1.84,7.367,1.654,7.082,1.468,6.838c-0.332-0.42-0.137-0.411,0.274-0.772c1.026-0.91,2.004-1.896,3.127-2.688 c1.017-0.713,2.365-1.173,3.286-0.039c0.849,1.045,0.869,2.629,1.084,3.891c0.215,1.309,0.421,2.648,0.88,3.901 c0.127,0.352,0.37,1.018,0.81,1.074c0.567,0.078,1.145-0.917,1.408-1.289c0.684-0.987,1.611-2.317,1.494-3.587 c-0.115-1.349-1.572-1.095-2.482-0.773c0.146-1.514,1.555-3.216,2.912-3.792c1.439-0.597,3.579-0.587,4.302,1.036 c0.772,1.759,0.078,3.802-0.763,5.396c-0.918,1.731-2.1,3.333-3.363,4.829c-1.114,1.329-2.432,2.787-4.093,3.422 c-1.897,0.723-3.021-0.686-3.667-2.318c-0.705-1.777-1.056-3.771-1.565-5.621C4.898,8.726,4.644,7.836,4.136,7.191 C3.473,6.358,2.72,7.141,2.065,7.59C1.977,7.502,2.115,7.551,2.065,7.59L2.065,7.59z"></path></svg>',warning:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle cx="10" cy="14" r="1"></circle><circle fill="none" stroke="#000" stroke-width="1.1" cx="10" cy="10" r="9"></circle><path d="M10.97,7.72 C10.85,9.54 10.56,11.29 10.56,11.29 C10.51,11.87 10.27,12 9.99,12 C9.69,12 9.49,11.87 9.43,11.29 C9.43,11.29 9.16,9.54 9.03,7.72 C8.96,6.54 9.03,6 9.03,6 C9.03,5.45 9.46,5.02 9.99,5 C10.53,5.01 10.97,5.44 10.97,6 C10.97,6 11.04,6.54 10.97,7.72 L10.97,7.72 Z"></path></svg>',whatsapp:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M16.7,3.3c-1.8-1.8-4.1-2.8-6.7-2.8c-5.2,0-9.4,4.2-9.4,9.4c0,1.7,0.4,3.3,1.3,4.7l-1.3,4.9l5-1.3c1.4,0.8,2.9,1.2,4.5,1.2 l0,0l0,0c5.2,0,9.4-4.2,9.4-9.4C19.5,7.4,18.5,5,16.7,3.3 M10.1,17.7L10.1,17.7c-1.4,0-2.8-0.4-4-1.1l-0.3-0.2l-3,0.8l0.8-2.9 l-0.2-0.3c-0.8-1.2-1.2-2.7-1.2-4.2c0-4.3,3.5-7.8,7.8-7.8c2.1,0,4.1,0.8,5.5,2.3c1.5,1.5,2.3,3.4,2.3,5.5 C17.9,14.2,14.4,17.7,10.1,17.7 M14.4,11.9c-0.2-0.1-1.4-0.7-1.6-0.8c-0.2-0.1-0.4-0.1-0.5,0.1c-0.2,0.2-0.6,0.8-0.8,0.9 c-0.1,0.2-0.3,0.2-0.5,0.1c-0.2-0.1-1-0.4-1.9-1.2c-0.7-0.6-1.2-1.4-1.3-1.6c-0.1-0.2,0-0.4,0.1-0.5C8,8.8,8.1,8.7,8.2,8.5 c0.1-0.1,0.2-0.2,0.2-0.4c0.1-0.2,0-0.3,0-0.4C8.4,7.6,7.9,6.5,7.7,6C7.5,5.5,7.3,5.6,7.2,5.6c-0.1,0-0.3,0-0.4,0 c-0.2,0-0.4,0.1-0.6,0.3c-0.2,0.2-0.8,0.8-0.8,2c0,1.2,0.8,2.3,1,2.4c0.1,0.2,1.7,2.5,4,3.5c0.6,0.2,1,0.4,1.3,0.5 c0.6,0.2,1.1,0.2,1.5,0.1c0.5-0.1,1.4-0.6,1.6-1.1c0.2-0.5,0.2-1,0.1-1.1C14.8,12.1,14.6,12,14.4,11.9"></path></svg>',wordpress:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10,0.5c-5.2,0-9.5,4.3-9.5,9.5s4.3,9.5,9.5,9.5c5.2,0,9.5-4.3,9.5-9.5S15.2,0.5,10,0.5L10,0.5L10,0.5z M15.6,3.9h-0.1 c-0.8,0-1.4,0.7-1.4,1.5c0,0.7,0.4,1.3,0.8,1.9c0.3,0.6,0.7,1.3,0.7,2.3c0,0.7-0.3,1.5-0.6,2.7L14.1,15l-3-8.9 c0.5,0,0.9-0.1,0.9-0.1C12.5,6,12.5,5.3,12,5.4c0,0-1.3,0.1-2.2,0.1C9,5.5,7.7,5.4,7.7,5.4C7.2,5.3,7.2,6,7.6,6c0,0,0.4,0.1,0.9,0.1 l1.3,3.5L8,15L5,6.1C5.5,6.1,5.9,6,5.9,6C6.4,6,6.3,5.3,5.9,5.4c0,0-1.3,0.1-2.2,0.1c-0.2,0-0.3,0-0.5,0c1.5-2.2,4-3.7,6.9-3.7 C12.2,1.7,14.1,2.6,15.6,3.9L15.6,3.9L15.6,3.9z M2.5,6.6l3.9,10.8c-2.7-1.3-4.6-4.2-4.6-7.4C1.8,8.8,2,7.6,2.5,6.6L2.5,6.6L2.5,6.6 z M10.2,10.7l2.5,6.9c0,0,0,0.1,0.1,0.1C11.9,18,11,18.2,10,18.2c-0.8,0-1.6-0.1-2.3-0.3L10.2,10.7L10.2,10.7L10.2,10.7z M14.2,17.1 l2.5-7.3c0.5-1.2,0.6-2.1,0.6-2.9c0-0.3,0-0.6-0.1-0.8c0.6,1.2,1,2.5,1,4C18.3,13,16.6,15.7,14.2,17.1L14.2,17.1L14.2,17.1z"></path></svg>',world:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000" d="M1,10.5 L19,10.5"></path><path fill="none" stroke="#000" d="M2.35,15.5 L17.65,15.5"></path><path fill="none" stroke="#000" d="M2.35,5.5 L17.523,5.5"></path><path fill="none" stroke="#000" d="M10,19.46 L9.98,19.46 C7.31,17.33 5.61,14.141 5.61,10.58 C5.61,7.02 7.33,3.83 10,1.7 C10.01,1.7 9.99,1.7 10,1.7 L10,1.7 C12.67,3.83 14.4,7.02 14.4,10.58 C14.4,14.141 12.67,17.33 10,19.46 L10,19.46 L10,19.46 L10,19.46 Z"></path><circle fill="none" stroke="#000" cx="10" cy="10.5" r="9"></circle></svg>',xing:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M4.4,4.56 C4.24,4.56 4.11,4.61 4.05,4.72 C3.98,4.83 3.99,4.97 4.07,5.12 L5.82,8.16 L5.82,8.17 L3.06,13.04 C2.99,13.18 2.99,13.33 3.06,13.44 C3.12,13.55 3.24,13.62 3.4,13.62 L6,13.62 C6.39,13.62 6.57,13.36 6.71,13.12 C6.71,13.12 9.41,8.35 9.51,8.16 C9.49,8.14 7.72,5.04 7.72,5.04 C7.58,4.81 7.39,4.56 6.99,4.56 L4.4,4.56 L4.4,4.56 Z"></path><path d="M15.3,1 C14.91,1 14.74,1.25 14.6,1.5 C14.6,1.5 9.01,11.42 8.82,11.74 C8.83,11.76 12.51,18.51 12.51,18.51 C12.64,18.74 12.84,19 13.23,19 L15.82,19 C15.98,19 16.1,18.94 16.16,18.83 C16.23,18.72 16.23,18.57 16.16,18.43 L12.5,11.74 L12.5,11.72 L18.25,1.56 C18.32,1.42 18.32,1.27 18.25,1.16 C18.21,1.06 18.08,1 17.93,1 L15.3,1 L15.3,1 Z"></path></svg>',yelp:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M17.175,14.971c-0.112,0.77-1.686,2.767-2.406,3.054c-0.246,0.1-0.487,0.076-0.675-0.069\tc-0.122-0.096-2.446-3.859-2.446-3.859c-0.194-0.293-0.157-0.682,0.083-0.978c0.234-0.284,0.581-0.393,0.881-0.276\tc0.016,0.01,4.21,1.394,4.332,1.482c0.178,0.148,0.263,0.379,0.225,0.646L17.175,14.971L17.175,14.971z M11.464,10.789\tc-0.203-0.307-0.199-0.666,0.009-0.916c0,0,2.625-3.574,2.745-3.657c0.203-0.135,0.452-0.141,0.69-0.025\tc0.691,0.335,2.085,2.405,2.167,3.199v0.027c0.024,0.271-0.082,0.491-0.273,0.623c-0.132,0.083-4.43,1.155-4.43,1.155\tc-0.322,0.096-0.68-0.06-0.882-0.381L11.464,10.789z M9.475,9.563C9.32,9.609,8.848,9.757,8.269,8.817c0,0-3.916-6.16-4.007-6.351\tc-0.057-0.212,0.011-0.455,0.202-0.65C5.047,1.211,8.21,0.327,9.037,0.529c0.27,0.069,0.457,0.238,0.522,0.479\tc0.047,0.266,0.433,5.982,0.488,7.264C10.098,9.368,9.629,9.517,9.475,9.563z M9.927,19.066c-0.083,0.225-0.273,0.373-0.54,0.421\tc-0.762,0.13-3.15-0.751-3.647-1.342c-0.096-0.131-0.155-0.262-0.167-0.394c-0.011-0.095,0-0.189,0.036-0.272\tc0.061-0.155,2.917-3.538,2.917-3.538c0.214-0.272,0.595-0.355,0.952-0.213c0.345,0.13,0.56,0.428,0.536,0.749\tC10.014,14.479,9.977,18.923,9.927,19.066z M3.495,13.912c-0.235-0.009-0.444-0.148-0.568-0.382c-0.089-0.17-0.151-0.453-0.19-0.794\tC2.63,11.701,2.761,10.144,3.07,9.648c0.145-0.226,0.357-0.345,0.592-0.336c0.154,0,4.255,1.667,4.255,1.667\tc0.321,0.118,0.521,0.453,0.5,0.833c-0.023,0.37-0.236,0.655-0.551,0.738L3.495,13.912z"></path></svg>',youtube:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M15,4.1c1,0.1,2.3,0,3,0.8c0.8,0.8,0.9,2.1,0.9,3.1C19,9.2,19,10.9,19,12c-0.1,1.1,0,2.4-0.5,3.4c-0.5,1.1-1.4,1.5-2.5,1.6 c-1.2,0.1-8.6,0.1-11,0c-1.1-0.1-2.4-0.1-3.2-1c-0.7-0.8-0.7-2-0.8-3C1,11.8,1,10.1,1,8.9c0-1.1,0-2.4,0.5-3.4C2,4.5,3,4.3,4.1,4.2 C5.3,4.1,12.6,4,15,4.1z M8,7.5v6l5.5-3L8,7.5z"></path></svg>',totop:'<svg width="15" height="22" viewBox="0 0 15 20" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#0000" stroke-width="1.1" points="1,8 7.5,1.5 14,8 "></polyline><rect fill="000" x="7" y="2" width="1" height="20"></rect></svg>',"arrow-down":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon points="10.5,16.08 5.63,10.66 6.37,10 10.5,14.58 14.63,10 15.37,10.66"></polygon><line fill="none" stroke="#000" x1="10.5" y1="4" x2="10.5" y2="15"></line></svg>',"arrow-left":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" points="10 14 5 9.5 10 5"></polyline><line fill="none" stroke="#000" x1="16" y1="9.5" x2="5" y2="9.52"></line></svg>',"arrow-right":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" points="10 5 15 9.5 10 14"></polyline><line fill="none" stroke="#000" x1="4" y1="9.5" x2="15" y2="9.5"></line></svg>',"arrow-up":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon points="10.5,4 15.37,9.4 14.63,10.08 10.5,5.49 6.37,10.08 5.63,9.4"></polygon><line fill="none" stroke="#000" x1="10.5" y1="16" x2="10.5" y2="5"></line></svg>',"chevron-down":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.03" points="16 7 10 13 4 7"></polyline></svg>',"chevron-left":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.03" points="13 16 7 10 13 4"></polyline></svg>',"chevron-right":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.03" points="7 4 13 10 7 16"></polyline></svg>',"chevron-up":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.03" points="4 13 10 7 16 13"></polyline></svg>',"cloud-download":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000" stroke-width="1.1" d="M6.5,14.61 L3.75,14.61 C1.96,14.61 0.5,13.17 0.5,11.39 C0.5,9.76 1.72,8.41 3.3,8.2 C3.38,5.31 5.75,3 8.68,3 C11.19,3 13.31,4.71 13.89,7.02 C14.39,6.8 14.93,6.68 15.5,6.68 C17.71,6.68 19.5,8.45 19.5,10.64 C19.5,12.83 17.71,14.6 15.5,14.6 L12.5,14.6"></path><polyline fill="none" stroke="#000" points="11.75 16 9.5 18.25 7.25 16"></polyline><path fill="none" stroke="#000" d="M9.5,18 L9.5,9.5"></path></svg>',"cloud-upload":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000" stroke-width="1.1" d="M6.5,14.61 L3.75,14.61 C1.96,14.61 0.5,13.17 0.5,11.39 C0.5,9.76 1.72,8.41 3.31,8.2 C3.38,5.31 5.75,3 8.68,3 C11.19,3 13.31,4.71 13.89,7.02 C14.39,6.8 14.93,6.68 15.5,6.68 C17.71,6.68 19.5,8.45 19.5,10.64 C19.5,12.83 17.71,14.6 15.5,14.6 L12.5,14.6"></path><polyline fill="none" stroke="#000" points="7.25 11.75 9.5 9.5 11.75 11.75"></polyline><path fill="none" stroke="#000" d="M9.5,18 L9.5,9.5"></path></svg>',"credit-card":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect fill="none" stroke="#000" x="1.5" y="4.5" width="17" height="12"></rect><rect x="1" y="7" width="18" height="3"></rect></svg>',"file-edit":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000" d="M18.65,1.68 C18.41,1.45 18.109,1.33 17.81,1.33 C17.499,1.33 17.209,1.45 16.98,1.68 L8.92,9.76 L8,12.33 L10.55,11.41 L18.651,3.34 C19.12,2.87 19.12,2.15 18.65,1.68 L18.65,1.68 L18.65,1.68 Z"></path><polyline fill="none" stroke="#000" points="16.5 8.482 16.5 18.5 3.5 18.5 3.5 1.5 14.211 1.5"></polyline></svg>',"git-branch":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.2" cx="7" cy="3" r="2"></circle><circle fill="none" stroke="#000" stroke-width="1.2" cx="14" cy="6" r="2"></circle><circle fill="none" stroke="#000" stroke-width="1.2" cx="7" cy="17" r="2"></circle><path fill="none" stroke="#000" stroke-width="2" d="M14,8 C14,10.41 12.43,10.87 10.56,11.25 C9.09,11.54 7,12.06 7,15 L7,5"></path></svg>',"git-fork":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.2" cx="5.79" cy="2.79" r="1.79"></circle><circle fill="none" stroke="#000" stroke-width="1.2" cx="14.19" cy="2.79" r="1.79"></circle><ellipse fill="none" stroke="#000" stroke-width="1.2" cx="10.03" cy="16.79" rx="1.79" ry="1.79"></ellipse><path fill="none" stroke="#000" stroke-width="2" d="M5.79,4.57 L5.79,6.56 C5.79,9.19 10.03,10.22 10.03,13.31 C10.03,14.86 10.04,14.55 10.04,14.55 C10.04,14.37 10.04,14.86 10.04,13.31 C10.04,10.22 14.2,9.19 14.2,6.56 L14.2,4.57"></path></svg>',"github-alt":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10,0.5 C4.75,0.5 0.5,4.76 0.5,10.01 C0.5,15.26 4.75,19.51 10,19.51 C15.24,19.51 19.5,15.26 19.5,10.01 C19.5,4.76 15.25,0.5 10,0.5 L10,0.5 Z M12.81,17.69 C12.81,17.69 12.81,17.7 12.79,17.69 C12.47,17.75 12.35,17.59 12.35,17.36 L12.35,16.17 C12.35,15.45 12.09,14.92 11.58,14.56 C12.2,14.51 12.77,14.39 13.26,14.21 C13.87,13.98 14.36,13.69 14.74,13.29 C15.42,12.59 15.76,11.55 15.76,10.17 C15.76,9.25 15.45,8.46 14.83,7.8 C15.1,7.08 15.07,6.29 14.75,5.44 L14.51,5.42 C14.34,5.4 14.06,5.46 13.67,5.61 C13.25,5.78 12.79,6.03 12.31,6.35 C11.55,6.16 10.81,6.05 10.09,6.05 C9.36,6.05 8.61,6.15 7.88,6.35 C7.28,5.96 6.75,5.68 6.26,5.54 C6.07,5.47 5.9,5.44 5.78,5.44 L5.42,5.44 C5.06,6.29 5.04,7.08 5.32,7.8 C4.7,8.46 4.4,9.25 4.4,10.17 C4.4,11.94 4.96,13.16 6.08,13.84 C6.53,14.13 7.05,14.32 7.69,14.43 C8.03,14.5 8.32,14.54 8.55,14.55 C8.07,14.89 7.82,15.42 7.82,16.16 L7.82,17.51 C7.8,17.69 7.7,17.8 7.51,17.8 C4.21,16.74 1.82,13.65 1.82,10.01 C1.82,5.5 5.49,1.83 10,1.83 C14.5,1.83 18.17,5.5 18.17,10.01 C18.18,13.53 15.94,16.54 12.81,17.69 L12.81,17.69 Z"></path></svg>',"google-plus":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M12.9,9c0,2.7-0.6,5-3.2,6.3c-3.7,1.8-8.1,0.2-9.4-3.6C-1.1,7.6,1.9,3.3,6.1,3c1.7-0.1,3.2,0.3,4.6,1.3 c0.1,0.1,0.3,0.2,0.4,0.4c-0.5,0.5-1.2,1-1.7,1.6c-1-0.8-2.1-1.1-3.5-0.9C5,5.6,4.2,6,3.6,6.7c-1.3,1.3-1.5,3.4-0.5,5 c1,1.7,2.6,2.3,4.6,1.9c1.4-0.3,2.4-1.2,2.6-2.6H6.9V9H12.9z"></path><polygon points="20,9 20,11 18,11 18,13 16,13 16,11 14,11 14,9 16,9 16,7 18,7 18,9 "></polygon></svg>',"minus-circle":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="9.5" cy="9.5" r="9"></circle><line fill="none" stroke="#000" x1="5" y1="9.5" x2="14" y2="9.5"></line></svg>',"more-vertical":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle cx="10" cy="3" r="2"></circle><circle cx="10" cy="10" r="2"></circle><circle cx="10" cy="17" r="2"></circle></svg>',"paint-bucket":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10.21,1 L0,11.21 L8.1,19.31 L18.31,9.1 L10.21,1 L10.21,1 Z M16.89,9.1 L15,11 L1.7,11 L10.21,2.42 L16.89,9.1 Z"></path><path fill="none" stroke="#000" stroke-width="1.1" d="M6.42,2.33 L11.7,7.61"></path><path d="M18.49,12 C18.49,12 20,14.06 20,15.36 C20,16.28 19.24,17 18.49,17 L18.49,17 C17.74,17 17,16.28 17,15.36 C17,14.06 18.49,12 18.49,12 L18.49,12 Z"></path></svg>',"phone-landscape":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000" d="M17,5.5 C17.8,5.5 18.5,6.2 18.5,7 L18.5,14 C18.5,14.8 17.8,15.5 17,15.5 L3,15.5 C2.2,15.5 1.5,14.8 1.5,14 L1.5,7 C1.5,6.2 2.2,5.5 3,5.5 L17,5.5 L17,5.5 L17,5.5 Z"></path><circle cx="3.8" cy="10.5" r="0.8"></circle></svg>',"play-circle":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon fill="none" stroke="#000" stroke-width="1.1" points="8.5 7 13.5 10 8.5 13"></polygon><circle fill="none" stroke="#000" stroke-width="1.1" cx="10" cy="10" r="9"></circle></svg>',"plus-circle":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="9.5" cy="9.5" r="9"></circle><line fill="none" stroke="#000" x1="9.5" y1="5" x2="9.5" y2="14"></line><line fill="none" stroke="#000" x1="5" y1="9.5" x2="14" y2="9.5"></line></svg>',"quote-right":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M17.27,7.79 C17.27,9.45 16.97,10.43 15.99,12.02 C14.98,13.64 13,15.23 11.56,15.97 L11.1,15.08 C12.34,14.2 13.14,13.51 14.02,11.82 C14.27,11.34 14.41,10.92 14.49,10.54 C14.3,10.58 14.09,10.6 13.88,10.6 C12.06,10.6 10.59,9.12 10.59,7.3 C10.59,5.48 12.06,4 13.88,4 C15.39,4 16.67,5.02 17.05,6.42 C17.19,6.82 17.27,7.27 17.27,7.79 L17.27,7.79 Z"></path><path d="M8.68,7.79 C8.68,9.45 8.38,10.43 7.4,12.02 C6.39,13.64 4.41,15.23 2.97,15.97 L2.51,15.08 C3.75,14.2 4.55,13.51 5.43,11.82 C5.68,11.34 5.82,10.92 5.9,10.54 C5.71,10.58 5.5,10.6 5.29,10.6 C3.47,10.6 2,9.12 2,7.3 C2,5.48 3.47,4 5.29,4 C6.8,4 8.08,5.02 8.46,6.42 C8.6,6.82 8.68,7.27 8.68,7.79 L8.68,7.79 Z"></path></svg>',"sign-in":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon points="7 2 17 2 17 17 7 17 7 16 16 16 16 3 7 3"></polygon><polygon points="9.1 13.4 8.5 12.8 11.28 10 4 10 4 9 11.28 9 8.5 6.2 9.1 5.62 13 9.5"></polygon></svg>',"sign-out":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon points="13.1 13.4 12.5 12.8 15.28 10 8 10 8 9 15.28 9 12.5 6.2 13.1 5.62 17 9.5"></polygon><polygon points="13 2 3 2 3 17 13 17 13 16 4 16 4 3 13 3"></polygon></svg>',"tablet-landscape":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000" d="M1.5,5 C1.5,4.2 2.2,3.5 3,3.5 L17,3.5 C17.8,3.5 18.5,4.2 18.5,5 L18.5,16 C18.5,16.8 17.8,17.5 17,17.5 L3,17.5 C2.2,17.5 1.5,16.8 1.5,16 L1.5,5 L1.5,5 L1.5,5 Z"></path><circle cx="3.7" cy="10.5" r="0.8"></circle></svg>',"triangle-down":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon points="5 7 15 7 10 12"></polygon></svg>',"triangle-left":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon points="12 5 7 10 12 15"></polygon></svg>',"triangle-right":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon points="8 5 13 10 8 15"></polygon></svg>',"triangle-up":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon points="5 13 10 8 15 13"></polygon></svg>',"video-camera":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polygon points="18,6 18,14 12,10 "></polygon><rect x="2" y="5" width="12" height="10"></rect></svg>'};return"undefined"!=typeof window&&window.UIkit&&window.UIkit.use(t),t});
modules/uoa-monitor-portal/trunk/monitor_dashboard/src/assets/monitor-custom.css
1
@import "fonts/fonts.css";
2

  
1 3
:root {
2 4
    --portal-main-color: #9ABB55;
3 5
    --portal-main-contrast: white;
......
20 22
    --sidebar-width: 320px;
21 23
    --sidebar-font-size: 16px;
22 24
    --header-height: 70px;
23
    --list-card-max-width: 1220px;
24 25
}
25 26

  
26 27
.refresh-iframe {
modules/uoa-monitor-portal/trunk/monitor_dashboard/angular.json
22 22
            ],
23 23
            "styles": [
24 24
              "src/styles.css",
25
              "src/material.scss",
25 26
              "node_modules/datatables.net-dt/css/jquery.dataTables.css"
26 27
            ],
27 28
            "scripts": [
modules/uoa-monitor-portal/trunk/monitor_dashboard/src/app/services/stakeholder.service.ts
71 71
    return this.http.delete<any>(url + '/' + path.join('/') + '/delete');
72 72
  }
73 73

  
74
  reorderIndicators(url: string, path: string[], indicators: Indicator[], type: string = 'chart'): Observable<boolean> {
74
  reorderIndicators(url: string, path: string[], indicatorIds: string[], type: string = 'chart'): Observable<Indicator[]> {
75 75
    path = HelperFunctions.encodeArray(path);
76
    return this.http.post<boolean>(url + '/' + path.join('/') + '/' + type + '/reorder', indicators);
76
    return this.http.post<Indicator[]>(url + '/' + path.join('/') + '/' + type + '/reorder', indicatorIds).pipe(map(indicators => {
77
      return this.formalize(indicators);
78
    }));
77 79
  }
78 80

  
79 81
  getStakeholderAsObservable(): Observable<Stakeholder> {
modules/uoa-monitor-portal/trunk/monitor_dashboard/src/app/app.component.html
1 1
<!--disable_transitions -->
2 2
<div class="sidebar_main_swipe" [class.sidebar_main_active]="open && hasSidebar">
3 3
  <div id="header_main"[class.header_full]="!hasSidebar">
4
    <nav class="uk-light">
4
    <div class="uk-light">
5 5
      <a *ngIf="hasSidebar" id="sidebar_main_toggle" (click)="toggleOpen()" class="sSwitch sSwitch_left">
6 6
        <span class="sSwitchIcon"></span>
7 7
      </a>
8
    </nav>
8
    </div>
9 9
  </div>
10 10
  <router-outlet></router-outlet>
11 11
</div>
modules/uoa-monitor-portal/trunk/monitor_dashboard/src/app/home/home.module.ts
9 9
import {HomeRoutingModule} from "./home-routing.module";
10 10
import {ModalModule} from "../openaireLibrary/utils/modal/modal.module";
11 11
import {RouterModule} from "@angular/router";
12
import {FormsModule} from "@angular/forms";
12
import {FormsModule, ReactiveFormsModule} from "@angular/forms";
13 13
import {AlertModalModule} from "../openaireLibrary/utils/modal/alertModal.module";
14 14

  
15 15
@NgModule({
16 16
  imports: [
17
    CommonModule, HomeRoutingModule, ModalModule, RouterModule, FormsModule, AlertModalModule
17
    CommonModule, HomeRoutingModule, ModalModule, RouterModule, FormsModule, AlertModalModule, ReactiveFormsModule
18 18
  ],
19 19
  declarations: [
20 20
    HomeComponent
modules/uoa-monitor-portal/trunk/monitor_dashboard/src/app/home/home.component.html
31 31
              </a>
32 32
              <div uk-drop="mode: none; offset: -2; delay-hide: 0;" #editTopic
33 33
                   class="uk-padding-large uk-padding-remove-vertical uk-padding-remove-right uk-drop">
34
                <div *ngIf="copyTopic">
34
                <div *ngIf="topicFb">
35 35
                  <div class="md-card">
36 36
                    <div class="md-card-content uk-position-relative">
37 37
                      <a class="uk-position-top-right">
38 38
                        <i (click)="hide(editTopic)" class="material-icons">close</i>
39 39
                      </a>
40
                      <div class="uk-grid-small" uk-grid>
40
                      <div class="uk-grid-small" uk-grid [formGroup]="topicFb">
41 41
                        <div class="uk-width-1-1">
42 42
                          <label class="uk-text-bold">Topic Settings</label>
43
                          <input class="uk-input uk-form-small" [(ngModel)]="copyTopic.name"
44
                                 [class.uk-form-danger]="!valid && !copyTopic.name"
43
                          <input class="uk-input uk-form-small" formControlName="name"
44
                                 [class.uk-form-danger]="topicFb.get('name').dirty && topicFb.get('name').invalid"
45 45
                                 type="text">
46 46
                        </div>
47 47
                        <div class="uk-width-1-1">
48 48
                          <label>Description</label>
49
                          <textarea class="uk-textarea" [(ngModel)]="copyTopic.description"
49
                          <textarea class="uk-textarea" formControlName="description"
50 50
                                    rows="3" type="text"></textarea>
51 51
                        </div>
52 52
                        <div class="uk-width-1-2">
53
                          <select class="uk-select uk-form-small" [(ngModel)]="copyTopic.isPublic">
53
                          <select class="uk-select uk-form-small" formControlName="isPublic">
54 54
                            <option [value]="true">Public</option>
55 55
                            <option [value]="false">Private</option>
56 56
                          </select>
57 57
                        </div>
58 58
                        <div class="uk-width-1-2">
59
                          <select class="uk-select uk-form-small" [(ngModel)]="copyTopic.isActive">
59
                          <select class="uk-select uk-form-small" formControlName="isActive">
60 60
                            <option [value]="true">Active</option>
61 61
                            <option [value]="false">Inactive</option>
62 62
                          </select>
......
65 65
                      <hr>
66 66
                      <div class="uk-grid-small uk-child-width-1-2" uk-grid>
67 67
                        <div>
68
                          <button class="md-btn md-btn-small" (click)="deleteTopicOpen(copyTopic.name, editTopic, i)">Delete</button>
68
                          <button class="md-btn md-btn-small"
69
                                  (click)="deleteTopicOpen(this.topicFb.value.name, editTopic, i)">Delete</button>
69 70
                        </div>
70 71
                        <div>
71 72
                          <button class="md-btn md-btn-small md-btn-primary uk-float-right"
73
                                  [class.md-btn-primary]="topicFb.valid && topicFb.dirty"
74
                                  [class.disabled]="topicFb.invalid || !topicFb.dirty"
72 75
                                  (click)="saveTopic(editTopic, i)">Save
73 76
                          </button>
74 77
                        </div>
......
86 89
            </a>
87 90
            <div uk-drop="mode: none; offset: -2; delay-hide: 0" #newTopic
88 91
                 class="uk-padding-large uk-padding-remove-vertical uk-padding-remove-right uk-drop">
89
              <div *ngIf="copyTopic">
92
              <div *ngIf="topicFb">
90 93
                <div class="md-card">
91 94
                  <div class="md-card-content uk-position-relative">
92 95
                    <a class="uk-position-top-right">
93 96
                      <i (click)="hide(newTopic)" class="material-icons">close</i>
94 97
                    </a>
95
                    <div class="uk-grid-small" uk-grid>
98
                    <div class="uk-grid-small" uk-grid [formGroup]="topicFb">
96 99
                      <div class="uk-width-1-1">
97 100
                        <label class="uk-text-bold">New Topic</label>
98
                        <input class="uk-input uk-form-small" [(ngModel)]="copyTopic.name"
99
                               [class.uk-form-danger]="!valid && !copyTopic.name"
101
                        <input class="uk-input uk-form-small" formControlName="name"
102
                               [class.uk-form-danger]="topicFb.get('name').dirty && topicFb.get('name').invalid"
100 103
                               type="text">
101 104
                      </div>
102 105
                      <div class="uk-width-1-1">
103 106
                        <label>Description</label>
104
                        <textarea class="uk-textarea" [(ngModel)]="copyTopic.description"
107
                        <textarea class="uk-textarea" formControlName="description"
105 108
                                  rows="3" type="text"></textarea>
106 109
                      </div>
107 110
                      <div class="uk-width-1-2">
108
                        <select class="uk-select uk-form-small" [(ngModel)]="copyTopic.isPublic">
111
                        <select class="uk-select uk-form-small" formControlName="isPublic">
109 112
                          <option [value]="true">Public</option>
110 113
                          <option [value]="false">Private</option>
111 114
                        </select>
112 115
                      </div>
113 116
                      <div class="uk-width-1-2">
114
                        <select class="uk-select uk-form-small" [(ngModel)]="copyTopic.isActive">
117
                        <select class="uk-select uk-form-small" formControlName="isActive">
115 118
                          <option [value]="true">Active</option>
116 119
                          <option [value]="false">Inactive</option>
117 120
                        </select>
......
123 126
                        <button class="md-btn md-btn-small" (click)="hide(newTopic)">Cancel</button>
124 127
                      </div>
125 128
                      <div>
126
                        <button class="md-btn md-btn-small md-btn-primary uk-float-right" (click)="saveTopic(newTopic)">
129
                        <button class="md-btn md-btn-small uk-float-right"
130
                                [class.md-btn-primary]="topicFb.valid && topicFb.dirty"
131
                                [class.disabled]="topicFb.invalid || !topicFb.dirty"
132
                                (click)="saveTopic(newTopic)">
127 133
                          Create
128 134
                        </button>
129 135
                      </div>
modules/uoa-monitor-portal/trunk/monitor_dashboard/src/app/home/home.component.ts
11 11
import {HelperFunctions} from "../openaireLibrary/utils/HelperFunctions.class";
12 12
import {AlertModal} from "../openaireLibrary/utils/modal/alert";
13 13
import {Subscriber} from "rxjs";
14
import {FormBuilder, FormGroup, Validators} from "@angular/forms";
14 15

  
15 16
declare var UIkit;
16 17

  
......
25 26
  public stakeholder: Stakeholder;
26 27
  public analysisOpen: boolean = true;
27 28
  private errorMessages: ErrorMessagesComponent;
28
  public copyTopic: Topic;
29
  public valid = true;
29
  public topicFb: FormGroup;
30 30
  public element: any;
31 31
  public index: number;
32 32
  properties: EnvProperties;
......
38 38
    private router: Router,
39 39
    private title: Title,
40 40
    private sideBarService: SideBarService,
41
    private fb: FormBuilder,
41 42
    private stakeholderService: StakeholderService) {
42 43
    this.errorCodes = new ErrorCodes();
43 44
    this.errorMessages = new ErrorMessagesComponent();
......
50 51
        this.subscriptions.push(this.stakeholderService.getStakeholderAsObservable().subscribe(stakeholder => {
51 52
          if (stakeholder) {
52 53
            this.stakeholder = HelperFunctions.copy(stakeholder);
53
            this.copyTopic = null;
54
            this.topicFb = null;
54 55
            this.title.setTitle(stakeholder.index_name);
55 56
          }
56 57
        }));
......
70 71
  }
71 72

  
72 73
  public hide(element) {
73
    this.valid = true;
74 74
    UIkit.drop(element).hide();
75 75
  }
76 76

  
......
86 86
    }
87 87
  }
88 88

  
89
  private buildTopic(topic: Topic) {
90
    this.topicFb = this.fb.group({
91
      _id: this.fb.control(topic._id),
92
      name: this.fb.control(topic.name, Validators.required),
93
      description: this.fb.control(topic.description),
94
      alias: this.fb.control(topic.alias),
95
      isActive: this.fb.control(topic.isActive),
96
      isPublic: this.fb.control(topic.isPublic),
97
      isDefault: this.fb.control(topic.isDefault),
98
      categories: this.fb.control(topic.categories)
99
    });
100
  }
101

  
89 102
  public saveTopicOpen(element, index = -1) {
90 103
    if (element.className.indexOf('uk-open') !== -1) {
91 104
      this.hide(element);
92 105
    } else {
93 106
      if (index === -1) {
94
        this.copyTopic = new Topic(null, null, null, true, true);
107
        this.buildTopic(new Topic(null, null, null, true, true, false));
95 108
      } else {
96
        this.copyTopic = HelperFunctions.copy(this.stakeholder.topics[index]);
109
        this.buildTopic(this.stakeholder.topics[index]);
97 110
      }
98 111
      this.show(element);
99 112
    }
100 113
  }
101 114

  
102 115
  public saveTopic(element, index = -1) {
103
    if (this.copyTopic.name && this.copyTopic.name !== '') {
104
      if (!this.copyTopic.alias) {
105
        this.copyTopic.alias = this.copyTopic.name.toLowerCase().trim();
116
    if (!this.topicFb.invalid) {
117
      if (!this.topicFb.value.alias) {
118
        this.topicFb.value.alias = this.topicFb.value.name.toLowerCase().trim();
106 119
      }
107 120
      if (index === -1) {
108 121
        this.save('Topic has been successfully created', element);
109 122
      } else {
110 123
        this.save('Topic has been successfully saved', element, index);
111 124
      }
112
    } else {
113
      this.valid = false;
114 125
    }
115 126
  }
116 127

  
......
126 137

  
127 138
  private save(message: string, element, index: number = -1) {
128 139
    let path = [this.stakeholder._id];
129
    this.stakeholderService.saveElement(this.properties.monitorServiceAPIURL, this.copyTopic, path).subscribe(topic => {
140
    this.stakeholderService.saveElement(this.properties.monitorServiceAPIURL, this.topicFb.value, path).subscribe(topic => {
130 141
      if (index === -1) {
131 142
        this.stakeholder.topics.push(topic);
132 143
      } else {
......
135 146
      this.stakeholderService.setStakeholder(this.stakeholder);
136 147
      UIkit.notification(message, {
137 148
        status: 'success',
138
        timeout: 3000,
149
        timeout: 3000000,
139 150
        pos: 'top-left'
140 151
      });
141 152
      this.hide(element);
modules/uoa-monitor-portal/trunk/monitor_dashboard/src/app/utils/entities/stakeholder.ts
290 290
  isDefault: boolean;
291 291
  categories: Category[];
292 292

  
293
  constructor(name: string, description: string, alias: string, isActive: boolean, isPublic: boolean) {
293
  constructor(name: string, description: string, alias: string, isActive: boolean, isPublic: boolean, isDefault: boolean = true) {
294 294
    this._id = null;
295 295
    this.name = name;
296 296
    this.description = description;
297 297
    this.alias = alias;
298 298
    this.isActive = isActive;
299 299
    this.isPublic = isPublic;
300
    this.isDefault = isDefault;
300 301
    this.categories = [];
301 302
  }
302 303
}
......
312 313
  isDefault: boolean;
313 314
  subCategories: SubCategory[];
314 315

  
315
  constructor(name: string, description: string, alias: string, isActive: boolean, isPublic: boolean) {
316
  constructor(name: string, description: string, alias: string, isActive: boolean, isPublic: boolean, isDefault: boolean = true) {
316 317
    this._id = null;
317 318
    this.name = name;
318 319
    this.description = description;
319 320
    this.alias = alias;
320 321
    this.isActive = isActive;
321 322
    this.isPublic = isPublic;
323
    this.isDefault = isDefault;
322 324
    this.subCategories = [];
323 325
  }
324 326
}
......
334 336
  charts: Indicator[];
335 337
  numbers: Indicator[];
336 338

  
337
  constructor(name: string, description: string, alias: string, isActive: boolean, isPublic: boolean) {
339
  constructor(name: string, description: string, alias: string, isActive: boolean, isPublic: boolean, isDefault: boolean = true) {
338 340
    this._id = null;
339 341
    this.name = name;
340 342
    this.description = description;
341 343
    this.alias = alias;
342 344
    this.isActive = isActive;
343 345
    this.isPublic = isPublic;
346
    this.isDefault = isDefault;
344 347
    this.charts = [];
345 348
    this.numbers = [];
346 349
  }
modules/uoa-monitor-portal/trunk/monitor_dashboard/src/app/library/sharedComponents/input/input.component.ts
1 1
import {Component, Input, OnDestroy, OnInit} from "@angular/core";
2 2
import {Option} from "../../../utils/indicator-utils";
3
import {AbstractControl, FormControl} from "@angular/forms";
3 4

  
4 5
@Component({
5 6
  selector: '[dashboard-input]',
6 7
  template: `
7
    <div class="md-input-wrapper"
8
         [class.md-input-filled]="formControl.value !== ''"
9
         [class.md-input-focus]="formControl.touched"
10
         [class.md-input-wrapper-danger]="formControl.invalid && formControl.dirty">
11
      <label>{{label}}</label>
12
      <input *ngIf="type === 'text' || type === 'number'" [type]="type" class="md-input"
13
             focus-directive [formInput]="formControl"
14
             [formControl]="formControl"
15
             [class.md-input-danger]="formControl.invalid && formControl.dirty">
16
      <textarea *ngIf="type === 'textarea'" type="text" class="md-input no_autosize"
17
                focus-directive [formInput]="formControl"
18
                [rows]="rows" [formControl]="formControl"></textarea>
19
      <span class="md-input-bar"></span>
20
      <select *ngIf="type === 'select'" class="md-input uk-select"
21
             focus-directive [formInput]="formControl"
22
             [formControl]="formControl"
23
             [class.md-input-danger]="formControl.invalid && formControl.dirty">
24
        <option [value]="option.value" *ngFor="let option of options">
8
    <mat-form-field class="uk-width-1-1 uk-padding-remove">
9
      <input *ngIf="type === 'text'" matInput [placeholder]="label"
10
             [formControl]="formControl" [required]="required">
11
      <textarea *ngIf="type === 'textarea'" [rows]="rows" matInput [placeholder]="label" [formControl]="formControl"></textarea>
12
      <mat-select *ngIf="type === 'select'" [placeholder]="label"  [formControl]="formControl" [disableOptionCentering]="true">
13
        <mat-option *ngFor="let option of options" [value]="option.value">
25 14
          {{option.label}}
26
        </option>
27
      </select>
28
    </div>`
15
        </mat-option>
16
      </mat-select>
17
    </mat-form-field>
18
  `
29 19
})
30 20
export class InputComponent implements OnInit, OnDestroy {
31
  @Input('formInput') formControl: any;
21
  @Input('formInput') formControl: FormControl;
32 22
  @Input('type') type: string = 'text';
33 23
  @Input('label') label: string;
34 24
  @Input('rows') rows: number = 3;
......
42 32

  
43 33
  ngOnDestroy(): void {
44 34
  }
35

  
36
  public get required(): boolean {
37
    return this.formControl && this.formControl.validator
38
      && this.formControl.validator(this.formControl)
39
      && this.formControl.validator(this.formControl).required;
40
  }
45 41
}
modules/uoa-monitor-portal/trunk/monitor_dashboard/src/app/library/sharedComponents/input/input.module.ts
3 3
import {FocusDirective} from "./focus.directive";
4 4
import {InputComponent} from "./input.component";
5 5
import {SharedModule} from "../../../shared/shared.module";
6
import {MatFormFieldModule} from "@angular/material/form-field";
7
import {MatInputModule} from "@angular/material/input";
8
import {MatSelectModule} from "@angular/material/select";
6 9

  
7 10
@NgModule({
8 11
  imports: [
9 12
    CommonModule,
10 13
    SharedModule,
14
    MatFormFieldModule,
15
    MatInputModule,
16
    MatSelectModule,
11 17
  ],
12 18
  exports: [
13 19
    InputComponent
modules/uoa-monitor-portal/trunk/monitor_dashboard/src/app/app.component.ts
19 19
  user: User;
20 20
  loginCheck: boolean = false;
21 21
  hasSidebar: boolean = false;
22
  public subscriptions: any[] = [];
22
  private subscriptions: any[] = [];
23 23

  
24 24
  constructor(private  route: ActivatedRoute,
25 25
              private propertiesService: EnvironmentSpecificService,
modules/uoa-monitor-portal/trunk/monitor_dashboard/src/app/topic/topic.component.html
21 21
        </a>
22 22
        <div uk-drop="mode: none; offset: -2; delay-hide: 0;" #editTopic
23 23
             class="uk-padding-large uk-padding-remove-vertical uk-padding-remove-right uk-drop">
24
          <div *ngIf="topic">
24
          <div *ngIf="topicFb">
25 25
            <div class="md-card">
26 26
              <div class="md-card-content uk-position-relative">
27 27
                <a class="uk-position-top-right">
28 28
                  <i (click)="hide(editTopic)" class="material-icons">close</i>
29 29
                </a>
30
                <div class="uk-grid-small" uk-grid>
30
                <div class="uk-grid-small" uk-grid [formGroup]="topicFb">
31 31
                  <div class="uk-width-1-1">
32 32
                    <label class="uk-text-bold">Topic Settings</label>
33
                    <input class="uk-input uk-form-small" [(ngModel)]="topic.name"
34
                           [class.uk-form-danger]="!valid && !topic.name" type="text">
33
                    <input class="uk-input uk-form-small" formControlName="name"
34
                           [class.uk-form-danger]="topicFb.get('name').dirty && topicFb.get('name').invalid"
35
                           type="text">
35 36
                  </div>
36 37
                  <div class="uk-width-1-1">
37 38
                    <label>Description</label>
38
                    <textarea class="uk-textarea" [(ngModel)]="topic.description"
39
                    <textarea class="uk-textarea" formControlName="description"
39 40
                              rows="3" type="text"></textarea>
40 41
                  </div>
41 42
                  <div class="uk-width-1-2">
42
                    <select class="uk-select uk-form-small" [(ngModel)]="topic.isPublic">
43
                    <select class="uk-select uk-form-small" formControlName="isPublic">
43 44
                      <option [value]="true">Public</option>
44 45
                      <option [value]="false">Private</option>
45 46
                    </select>
46 47
                  </div>
47 48
                  <div class="uk-width-1-2">
48
                    <select class="uk-select uk-form-small" [(ngModel)]="topic.isActive">
49
                    <select class="uk-select uk-form-small" formControlName="isActive">
49 50
                      <option [value]="true">Active</option>
50 51
                      <option [value]="false">Inactive</option>
51 52
                    </select>
......
54 55
                <hr>
55 56
                <div class="uk-grid-small uk-child-width-1-2" uk-grid>
56 57
                  <div>
57
                    <button class="md-btn md-btn-small" (click)="deleteTopicOpen(topic.name, editTopic)">Delete</button>
58
                    <button class="md-btn md-btn-small"
59
                            (click)="deleteTopicOpen(topicFb.value.name, editTopic)">Delete</button>
58 60
                  </div>
59 61
                  <div>
60 62
                    <button class="md-btn md-btn-small md-btn-primary uk-float-right"
63
                            [class.md-btn-primary]="topicFb.valid && topicFb.dirty"
64
                            [class.disabled]="topicFb.invalid || !topicFb.dirty"
61 65
                            (click)="saveTopic(editTopic)">Save
62 66
                    </button>
63 67
                  </div>
......
85 89
          </a>
86 90
          <div uk-drop="mode: none; offset: -2; delay-hide: 0;" #editCategory
87 91
               class="uk-padding-large uk-padding-remove-vertical uk-padding-remove-right uk-drop">
88
            <div *ngIf="copyCategory">
92
            <div *ngIf="categoryFb">
89 93
              <div class="md-card">
90 94
                <div class="md-card-content uk-position-relative">
91 95
                  <a class="uk-position-top-right">
92 96
                    <i (click)="hide(editCategory)" class="material-icons">close</i>
93 97
                  </a>
94
                  <div class="uk-grid-small" uk-grid>
98
                  <div class="uk-grid-small" uk-grid [formGroup]="categoryFb">
95 99
                    <div class="uk-width-1-1">
96 100
                      <label class="uk-text-bold">Category Settings</label>
97
                      <input class="uk-input uk-form-small"
98
                             [(ngModel)]="copyCategory.name"
99
                             [class.uk-form-danger]="!valid && !copyCategory.name" type="text">
101
                      <input class="uk-input uk-form-small" formControlName="name"
102
                             [class.uk-form-danger]="categoryFb.get('name').dirty && categoryFb.get('name').invalid"
103
                             type="text">
100 104
                    </div>
101 105
                    <div class="uk-width-1-2">
102
                      <select class="uk-select uk-form-small" [(ngModel)]="copyCategory.isPublic">
106
                      <select class="uk-select uk-form-small" formControlName="isPublic">
103 107
                        <option [value]="true">Public</option>
104 108
                        <option [value]="false">Private</option>
105 109
                      </select>
106 110
                    </div>
107 111
                    <div class="uk-width-1-2">
108
                      <select class="uk-select uk-form-small" [(ngModel)]="copyCategory.isActive">
112
                      <select class="uk-select uk-form-small" formControlName="isActive">
109 113
                        <option [value]="true">Active</option>
110 114
                        <option [value]="false">Inactive</option>
111 115
                      </select>
......
115 119
                  <div class="uk-grid-small uk-child-width-1-2" uk-grid>
116 120
                    <div>
117 121
                      <button class="md-btn md-btn-small"
118
                              (click)="deleteCategoryOpen(copyCategory.name, editCategory, i)">Delete
122
                              (click)="deleteCategoryOpen(categoryFb.value.name, editCategory, i)">Delete
119 123
                      </button>
120 124
                    </div>
121 125
                    <div>
122 126
                      <button class="md-btn md-btn-small md-btn-primary uk-float-right"
127
                              [class.md-btn-primary]="categoryFb.valid && categoryFb.dirty"
128
                              [class.disabled]="categoryFb.invalid || !categoryFb.dirty"
123 129
                              (click)="saveCategory(editCategory, i)">Save
124 130
                      </button>
125 131
                    </div>
......
145 151
                </a>
146 152
                <div uk-drop="mode: none; offset: -2; delay-hide: 0" #editSubCategory
147 153
                     class="uk-padding-large uk-padding-remove-vertical uk-padding-remove-right uk-drop">
148
                  <div *ngIf="copySubCategory">
154
                  <div *ngIf="subcategoryFb">
149 155
                    <div class="md-card">
150 156
                      <div class="md-card-content uk-position-relative">
151 157
                        <a class="uk-position-top-right">
152 158
                          <i (click)="hide(editSubCategory)" class="material-icons">close</i>
153 159
                        </a>
154
                        <div class="uk-grid-small" uk-grid>
160
                        <div class="uk-grid-small" uk-grid [formGroup]="subcategoryFb">
155 161
                          <div class="uk-width-1-1">
156 162
                            <label class="uk-text-bold">Subcategory Settings</label>
157
                            <input class="uk-input uk-form-small" [(ngModel)]="copySubCategory.name"
158
                                   [class.uk-form-danger]="!valid && !copySubCategory.name" type="text">
163
                            <input class="uk-input uk-form-small" formControlName="name"
164
                                   [class.uk-form-danger]="subcategoryFb.get('name').dirty && subcategoryFb.get('name').invalid"
165
                                   type="text">
159 166
                          </div>
160 167
                          <div class="uk-width-1-2">
161
                            <select class="uk-select uk-form-small" [(ngModel)]="copySubCategory.isPublic">
168
                            <select class="uk-select uk-form-small" formControlName="isPublic">
162 169
                              <option [value]="true">Public</option>
163 170
                              <option [value]="false">Private</option>
164 171
                            </select>
165 172
                          </div>
166 173
                          <div class="uk-width-1-2">
167
                            <select class="uk-select uk-form-small" [(ngModel)]="copySubCategory.isActive">
174
                            <select class="uk-select uk-form-small" formControlName="isActive">
168 175
                              <option [value]="true">Active</option>
169 176
                              <option [value]="false">Inactive</option>
170 177
                            </select>
......
174 181
                        <div class="uk-grid-small uk-child-width-1-2" uk-grid>
175 182
                          <div>
176 183
                            <button class="md-btn md-btn-small"
177
                                    (click)="deleteSubcategoryOpen(copySubCategory.name, editSubCategory, j)">Delete
184
                                    (click)="deleteSubcategoryOpen(subcategoryFb.value.name, editSubCategory, j)">Delete
178 185
                            </button>
179 186
                          </div>
180 187
                          <div>
181 188
                            <button class="md-btn md-btn-small md-btn-primary uk-float-right"
189
                                    [class.md-btn-primary]="subcategoryFb.valid && subcategoryFb.dirty"
190
                                    [class.disabled]="subcategoryFb.invalid || !subcategoryFb.dirty"
182 191
                                    (click)="saveSubCategory(editSubCategory, j)">Save
183 192
                            </button>
184 193
                          </div>
......
196 205
              </a>
197 206
              <div uk-drop="mode: none; offset: -2; delay-hide: 0" #newSubCategory
198 207
                   class="uk-padding-large uk-padding-remove-vertical uk-padding-remove-right uk-drop">
199
                <div *ngIf="copySubCategory">
208
                <div *ngIf="subcategoryFb">
200 209
                  <div class="md-card">
201 210
                    <div class="md-card-content uk-position-relative">
202 211
                      <a class="uk-position-top-right">
203 212
                        <i (click)="hide(newSubCategory)" class="material-icons">close</i>
204 213
                      </a>
205
                      <div class="uk-grid-small" uk-grid>
214
                      <div class="uk-grid-small" uk-grid [formGroup]="subcategoryFb">
206 215
                        <div class="uk-width-1-1">
207 216
                          <label class="uk-text-bold">New Subcategory</label>
208
                          <input class="uk-input uk-form-small" [(ngModel)]="copySubCategory.name"
209
                                 [class.uk-form-danger]="!valid && !copySubCategory.name" type="text">
217
                          <input class="uk-input uk-form-small" formControlName="name"
218
                                 [class.uk-form-danger]="subcategoryFb.get('name').dirty && subcategoryFb.get('name').invalid"
219
                                 type="text">
210 220
                        </div>
211 221
                        <div class="uk-width-1-2">
212
                          <select class="uk-select uk-form-small" [(ngModel)]="copySubCategory.isPublic">
222
                          <select class="uk-select uk-form-small" formControlName="isPublic">
213 223
                            <option [value]="true">Public</option>
214 224
                            <option [value]="false">Private</option>
215 225
                          </select>
216 226
                        </div>
217 227
                        <div class="uk-width-1-2">
218
                          <select class="uk-select uk-form-small" [(ngModel)]="copySubCategory.isActive">
228
                          <select class="uk-select uk-form-small" formControlName="isActive">
219 229
                            <option [value]="true">Active</option>
220 230
                            <option [value]="false">Inactive</option>
221 231
                          </select>
......
228 238
                        </div>
229 239
                        <div>
230 240
                          <button class="md-btn md-btn-small md-btn-primary uk-float-right"
241
                                  [class.md-btn-primary]="subcategoryFb.valid && subcategoryFb.dirty"
242
                                  [class.disabled]="subcategoryFb.invalid || !subcategoryFb.dirty"
231 243
                                  (click)="saveSubCategory(newSubCategory)">Create
232 244
                          </button>
233 245
                        </div>
......
247 259
        </a>
248 260
        <div uk-drop="mode: none; offset: -2; delay-hide: 0" #newCategory
249 261
             class="uk-padding-large uk-padding-remove-vertical uk-padding-remove-right uk-drop">
250
          <div *ngIf="copyCategory">
262
          <div *ngIf="categoryFb">
251 263
            <div class="md-card">
252 264
              <div class="md-card-content uk-position-relative">
253 265
                <a class="uk-position-top-right">
254 266
                  <i (click)="hide(newCategory)" class="material-icons">close</i>
255 267
                </a>
256
                <div class="uk-grid-small" uk-grid>
268
                <div class="uk-grid-small" uk-grid [formGroup]="categoryFb">
257 269
                  <div class="uk-width-1-1">
258 270
                    <label class="uk-text-bold">New Category</label>
259
                    <input class="uk-input uk-form-small" [(ngModel)]="copyCategory.name"
260
                           [class.uk-form-danger]="!valid && !copyCategory.name" type="text">
271
                    <input class="uk-input uk-form-small" formControlName="name"
272
                           [class.uk-form-danger]="categoryFb.get('name').dirty && categoryFb.get('name').invalid"
273
                           type="text">
261 274
                  </div>
262 275
                  <div class="uk-width-1-2">
263
                    <select class="uk-select uk-form-small" [(ngModel)]="copyCategory.isPublic">
276
                    <select class="uk-select uk-form-small" formControlName="isPublic">
264 277
                      <option [value]="true">Public</option>
265 278
                      <option [value]="false">Private</option>
266 279
                    </select>
267 280
                  </div>
268 281
                  <div class="uk-width-1-2">
269
                    <select class="uk-select uk-form-small" [(ngModel)]="copyCategory.isActive">
282
                    <select class="uk-select uk-form-small" formControlName="isActive">
270 283
                      <option [value]="true">Active</option>
271 284
                      <option [value]="false">Inactive</option>
272 285
                    </select>
......
279 292
                  </div>
280 293
                  <div>
281 294
                    <button class="md-btn md-btn-small md-btn-primary uk-float-right"
295
                            [class.md-btn-primary]="categoryFb.valid && categoryFb.dirty"
296
                            [class.disabled]="categoryFb.invalid || !categoryFb.dirty"
282 297
                            (click)="saveCategory(newCategory)">Create
283 298
                    </button>
284 299
                  </div>
modules/uoa-monitor-portal/trunk/monitor_dashboard/src/app/topic/indicators.component.html
1 1
<div id="page_content" click-outside-or-esc targetId="page_content" [escClose]="false"
2 2
     (clickOutside)="toggleOpen($event)">
3 3
  <div class="uk-padding-small md-bg-white" uk-grid>
4
    <div class="uk-width-2-3@m uk-width-1-1 uk-child-width-1-3@m uk-child-width-1-1" uk-grid>
5
      <div class="uk-flex uk-flex-middle">
6
        <label>Chart Type:</label>
7
        <select class="uk-select uk-form-small uk-margin-small-left"
8
                (ngModelChange)="onChartTypeChange($event)"
9
                [(ngModel)]="chartType">
10
          <option [value]="'all'">All</option>
11
          <option [value]="'pie'">Pie</option>
12
          <option [value]="'table'">Table</option>
13
          <option [value]="'line'">Line</option>
14
          <option [value]="'column'">Column</option>
15
          <option [value]="'bar'">Bar</option>
16
        </select>
4
    <div *ngIf="filters" class="uk-width-2-3@m uk-width-1-1 uk-child-width-1-3@m uk-child-width-1-1" uk-grid>
5
      <div>
6
        <div dashboard-input [formInput]="filters.get('chartType')"
7
             type="select" [options]="[all].concat(indicatorUtils.chartTypes)"
8
             label="Chart Type"></div>
17 9
      </div>
18
      <div class="uk-flex uk-flex-middle">
19
        <label>Privacy:</label>
20
        <select class="uk-select uk-form-small uk-margin-small-left"
21
                (ngModelChange)="onPrivacyChange($event)"
22
                [(ngModel)]="privacy">
23
          <option [value]="'all'">All</option>
24
          <option [value]="'public'">Public</option>
25
          <option [value]="'private'">Private</option>
26
        </select>
10
      <div>
11
        <div dashboard-input [formInput]="filters.get('privacy')"
12
             type="select" [options]="[all].concat(indicatorUtils.isPublic)"
13
             label="Privacy"></div>
27 14
      </div>
28
      <div class="uk-flex uk-flex-middle">
29
        <label>Status:</label>
30
        <select class="uk-select uk-form-small uk-margin-small-left"
31
                (ngModelChange)="onStatusChange($event)"
32
                [(ngModel)]="status">
33
          <option [value]="'all'">All</option>
34
          <option [value]="'active'">Active</option>
35
          <option [value]="'inactive'">Inactive</option>
36
        </select>
15
      <div>
16
        <div dashboard-input [formInput]="filters.get('status')"
17
             type="select" [options]="[all].concat(indicatorUtils.isActive)"
18
             label="Status"></div>
37 19
      </div>
38 20
    </div>
39 21
    <div class="uk-width-expand@m uk-width-1-1 uk-flex uk-flex-middle uk-flex-right">
40
      <div class="uk-inline">
41
        <span class="uk-form-icon uk-form-icon-flip"><i class="material-icons">search</i></span>
42
        <input (ngModelChange)="onKeywordChange($event)"
43
               [(ngModel)]="keyword"
44
               class="uk-input uk-form-small" placeholder="Locate indicator..">
22
      <div class="uk-inline uk-width-medium">
23
        <span class="uk-position-center-right"><i class="material-icons">search</i></span>
24
        <div dashboard-input [formInput]="filters.get('keyword')" label="Locate indicator"></div>
45 25
      </div>
46 26
      <div [class.uk-active]="grid" class="uk-margin-small-left">
47 27
        <a [routerLink]="" class="uk-icon-button" (click)="changeGrid(true)"><i
......
74 54
    <div [class.uk-child-width-1-3@m]="grid"
75 55
         [class.uk-child-width-1-2@s]="grid"
76 56
         [class.uk-child-width-1-1]="!grid"
77
         [class.list]="!grid" id="numbers"
57
         [class.list]="!grid" id="number"
78 58
         class="uk-grid-match uk-grid-small"
79 59
         uk-sortable uk-grid>
80 60
      <ng-template ngFor [ngForOf]="displayNumbers" let-indicator let-i="index">
81
        <div *ngIf="indicator" [id]="i">
61
        <div *ngIf="indicator" [id]="indicator._id">
82 62
          <div class="md-card" [class.uk-sortable-nodrag]="!canNumbersReorder">
83 63
            <div class="md-card-toolbar">
84 64
              <div class="md-card-toolbar-actions" [class.uk-flex-middle]="!grid" [class.uk-flex]="!grid">
......
92 72
                     [class.md-color-green-300]="indicator.isActive">{{indicatorUtils.isActiveIcon}}</i>
93 73
                  {{(indicator.isActive) ? 'Active' : 'Inactive'}}
94 74
                </span>
95
                <i class="md-icon material-icons">more_vert</i>
75
                <div class="md-card-dropdown uk-inline">
76
                  <i class="md-icon material-icons">more_vert</i>
77
                  <div uk-dropdown="mode: click; pos: bottom-right" class="uk-padding-remove-horizontal">
78
                    <ul class="uk-nav uk-dropdown-nav">
79
                      <li><a (click)="editIndicatorOpen(i)">Edit</a></li>
80
                      <li><a (click)="deleteIndicatorOpen(i, 'number')">Delete</a></li>
81
                    </ul>
82
                  </div>
83
                </div>
96 84
              </div>
97 85
              <div class="md-card-toolbar-heading-text">{{indicator.name}}</div>
98 86
            </div>
......
120 108
    <div [class.uk-child-width-1-3@m]="grid"
121 109
         [class.uk-child-width-1-2@s]="grid"
122 110
         [class.uk-child-width-1-1]="!grid"
123
         [class.list]="!grid" id="charts"
111
         [class.list]="!grid" id="chart"
124 112
         class="uk-grid-match uk-grid-small uk-grid"
125 113
         uk-sortable uk-grid>
126 114
      <ng-template ngFor [ngForOf]="displayCharts" let-indicator let-i="index">
127
        <div *ngIf="indicator" [id]="i">
115
        <div *ngIf="indicator" [id]="indicator._id">
128 116
          <div class="md-card" [class.uk-sortable-nodrag]="!canChartsReorder">
129 117
            <div class="md-card-toolbar">
130 118
              <div class="md-card-toolbar-actions" [class.uk-flex-middle]="!grid" [class.uk-flex]="!grid">
......
150 138
                  </i>
151 139
                  {{(indicator.isActive) ? 'Active' : 'Inactive'}}
152 140
                </span>
153
                <i class="md-icon material-icons" (click)="editIndicatorOpen(i)">more_vert</i>
141
                <div class="md-card-dropdown uk-inline">
142
                  <i class="md-icon material-icons">more_vert</i>
143
                  <div uk-dropdown="mode: click; pos: bottom-right" class="uk-padding-remove-horizontal">
144
                    <ul class="uk-nav uk-dropdown-nav">
145
                      <li><a (click)="editIndicatorOpen(i)">Edit</a></li>
146
                      <li><a (click)="deleteIndicatorOpen(i)">Delete</a></li>
147
                    </ul>
148
                  </div>
149
                </div>
154 150
              </div>
155 151
              <div class="md-card-toolbar-heading-text">{{indicator.name}}</div>
156 152
            </div>
......
185 181
          </div>
186 182
        </div>
187 183
      </ng-template>
188
      <div>
184
      <div class="disable-sortable">
189 185
        <div class="md-card clickable uk-sortable-nodrag" (click)="createIndicatorOpen()">
190 186
          <div class="md-card-toolbar">
191 187
            <div class="md-card-toolbar-heading-text"
......
299 295
    </div>
300 296
  </div>
301 297
</modal-alert>
298
<modal-alert #deleteIndicatorModal (alertOutput)="deleteIndicator()"></modal-alert>
modules/uoa-monitor-portal/trunk/monitor_dashboard/src/app/topic/topic.component.ts
8 8
import {HelperFunctions} from "../openaireLibrary/utils/HelperFunctions.class";
9 9
import {AlertModal} from "../openaireLibrary/utils/modal/alert";
10 10
import {Subscriber} from "rxjs";
11
import {FormBuilder, FormGroup, Validators} from "@angular/forms";
11 12

  
12 13
declare var UIkit;
13 14

  
......
24 25
   * Current topic
25 26
   **/
26 27
  public topicIndex: number = 0;
27
  public topic: Topic = null;
28
  public topicFb: FormGroup;
28 29

  
29 30
  /**
30 31
   * categoryIndex: Current category to be edited, selectedCategoryIndex: selected on menu(opened)
31 32
   */
32 33
  public categoryIndex: number = 0;
33 34
  public selectedCategoryIndex: number = 0;
34
  public copyCategory: Category = null;
35
  public categoryFb: FormGroup;
35 36
  /**
36 37
   * Current Subcategory to be edited
37 38
   */
38 39
  public subCategoryIndex: number = 0;
39
  public copySubCategory: SubCategory = null;
40
  public subcategoryFb: FormGroup;
40 41
  /**
41 42
   * Current drop element and index of topic, category or subcategory to be deleted.
42 43
   */
......
45 46
  /**
46 47
   * Check form validity
47 48
   */
48
  public valid = true;
49 49
  public toggle: boolean = false;
50 50

  
51 51
  @ViewChild('deleteTopicModal') deleteTopicModal: AlertModal;
......
56 56
    private route: ActivatedRoute,
57 57
    private router: Router,
58 58
    private title: Title,
59
    private fb: FormBuilder,
59 60
    private sideBarService: SideBarService,
60 61
    private stakeholderService: StakeholderService) {
61 62
  }
......
90 91
  }
91 92

  
92 93
  public hide(element) {
93
    this.valid = true;
94 94
    UIkit.drop(element).hide();
95 95
  }
96 96

  
......
98 98
    UIkit.drop(element).show();
99 99
  }
100 100

  
101
  private buildTopic(topic: Topic) {
102
    this.topicFb = this.fb.group({
103
      _id: this.fb.control(topic._id),
104
      name: this.fb.control(topic.name, Validators.required),
105
      description: this.fb.control(topic.description),
106
      alias: this.fb.control(topic.alias),
107
      isActive: this.fb.control(topic.isActive),
108
      isPublic: this.fb.control(topic.isPublic),
109
      isDefault: this.fb.control(topic.isDefault),
110
      categories: this.fb.control(topic.categories)
111
    });
112
  }
113

  
101 114
  public editTopicOpen(element) {
102 115
    if(element.className.indexOf('uk-open') !== -1) {
103 116
      this.hide(element);
104 117
    } else {
105
      this.topic = HelperFunctions.copy(this.stakeholder.topics[this.topicIndex]);
118
      this.buildTopic(this.stakeholder.topics[this.topicIndex]);
106 119
      this.show(element);
107 120
    }
108 121
  }
109 122

  
110 123
  public saveTopic(element) {
111
    if(this.topic.name && this.topic.name !== '') {
112
      if(!this.topic.alias) {
113
        this.topic.alias = this.topic.name.toLowerCase().trim();
124
    if(!this.topicFb.invalid) {
125
      if(!this.topicFb.value.alias) {
126
        this.topicFb.value.alias = this.topicFb.value.name.toLowerCase().trim();
114 127
      }
115 128
      let path = [this.stakeholder._id];
116 129
      let callback = (topic: Topic): void => {
117 130
          this.stakeholder.topics[this.topicIndex] = topic;
118 131
          this.stakeholderService.setStakeholder(this.stakeholder);
119 132
      };
120
      this.save('Topic has been successfully saved', element, path, this.topic, callback,true);
121
    } else {
122
      this.valid = false;
133
      this.save('Topic has been successfully saved', element, path, this.topicFb.value, callback,true);
123 134
    }
124 135
  }
125 136

  
......
148 159
    }
149 160
  }
150 161

  
162
  private buildCategory(category: Category) {
163
    this.categoryFb = this.fb.group({
164
      _id: this.fb.control(category._id),
165
      name: this.fb.control(category.name, Validators.required),
166
      alias: this.fb.control(category.alias),
167
      isActive: this.fb.control(category.isActive),
168
      isPublic: this.fb.control(category.isPublic),
169
      isDefault: this.fb.control(category.isDefault),
170
      subCategories: this.fb.control(category.subCategories)
171
    });
172
  }
173

  
151 174
  public editCategoryOpen(element, index:number = -1) {
152 175
    if(element.className.indexOf('uk-open') !== -1) {
153 176
      this.hide(element);
154 177
    } else {
155 178
      if(index === -1) {
156
        this.copyCategory = new Category(null, null, null, true, true);
179
        this.buildCategory(new Category(null, null, null, true, true));
157 180
      } else {
158
        this.copyCategory = HelperFunctions.copy(this.stakeholder.topics[this.topicIndex].categories[index]);
181
        this.buildCategory(this.stakeholder.topics[this.topicIndex].categories[index]);
159 182
      }
160 183
      this.show(element);
161 184
    }
162 185
  }
163 186

  
164 187
  public saveCategory(element, index = -1) {
165
    if(this.copyCategory.name && this.copyCategory.name !== '') {
166
      if(!this.copyCategory.alias) {
167
        this.copyCategory.alias = this.copyCategory.name.toLowerCase();
188
    if(!this.categoryFb.invalid) {
189
      if(!this.categoryFb.value.alias) {
190
        this.categoryFb.value.alias = this.categoryFb.value.name.toLowerCase();
168 191
      }
169 192
      let path = [this.stakeholder._id, this.stakeholder.topics[this.topicIndex]._id];
170 193
      let callback = (category: Category): void => {
......
176 199
        this.stakeholderService.setStakeholder(this.stakeholder);
177 200
      };
178 201
      if(index === -1) {
179
        this.save('Category has been successfully created', element, path, this.copyCategory, callback);
202
        this.save('Category has been successfully created', element, path, this.categoryFb.value, callback);
180 203
      } else {
181
        this.save('Category has been successfully saved', element, path, this.copyCategory, callback);
204
        this.save('Category has been successfully saved', element, path, this.categoryFb.value, callback);
182 205
      }
183
    } else {
184
      this.valid = false;
185 206
    }
186 207
  }
187 208

  
......
202 223
    this.delete('Category has been successfully be deleted', path, callback);
203 224
  }
204 225

  
226
  private buildSubcategory(subCategory: SubCategory) {
227
    this.subcategoryFb = this.fb.group({
228
      _id: this.fb.control(subCategory._id),
229
      name: this.fb.control(subCategory.name, Validators.required),
230
      alias: this.fb.control(subCategory.alias),
231
      isActive: this.fb.control(subCategory.isActive),
232
      isPublic: this.fb.control(subCategory.isPublic),
233
      isDefault: this.fb.control(subCategory.isDefault),
234
      charts: this.fb.control(subCategory.charts),
235
      numbers: this.fb.control(subCategory.numbers)
236
    });
237
  }
238

  
205 239
  public editSubCategoryOpen(element, index:number = -1) {
206 240
    if(element.className.indexOf('uk-open') !== -1) {
207 241
      this.hide(element);
208 242
    } else {
209 243
      if(index === -1) {
210
        this.copySubCategory = new SubCategory(null, null, null, true, true);
244
        this.buildSubcategory(new SubCategory(null, null, null, true, true));
211 245
      } else {
212
        this.copySubCategory = HelperFunctions.copy(this.stakeholder.topics[this.topicIndex].
213
          categories[this.categoryIndex].subCategories[index]);
246
        this.buildSubcategory(this.stakeholder.topics[this.topicIndex].
247
          categories[this.selectedCategoryIndex].subCategories[index]);
214 248
      }
215 249
      this.show(element);
216 250
    }
217 251
  }
218 252

  
219 253
  public saveSubCategory(element, index = -1) {
220
    if(this.copySubCategory.name && this.copySubCategory.name !== '') {
221
      if(!this.copySubCategory.alias) {
222
        this.copySubCategory.alias = this.copySubCategory.name.toLowerCase();
254
    if(!this.subcategoryFb.invalid) {
255
      if(!this.subcategoryFb.value.alias) {
256
        this.subcategoryFb.value.alias = this.subcategoryFb.value.name.toLowerCase();
223 257
      }
224 258
      let path: string[] = [
225 259
        this.stakeholder._id,
......
237 271
        this.stakeholderService.setStakeholder(this.stakeholder);
238 272
      };
239 273
      if(index === -1) {
240
        this.save('Subcategory has been successfully created', element, path, this.copySubCategory, callback);
274
        this.save('Subcategory has been successfully created', element, path, this.subcategoryFb.value, callback);
241 275
      } else {
242
        this.save('Subcategory has been successfully saved', element, path, this.copySubCategory, callback);
276
        this.save('Subcategory has been successfully saved', element, path, this.subcategoryFb.value, callback);
243 277
      }
244 278
      this.hide(element);
245
    } else {
246
      this.valid = false;
247 279
    }
248 280
  }
249 281

  
modules/uoa-monitor-portal/trunk/monitor_dashboard/src/app/topic/indicators.component.ts
1
import {AfterViewInit, Component, Input, OnChanges, OnInit, SimpleChanges, ViewChild} from "@angular/core";
1
import {AfterViewInit, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewChild} from "@angular/core";
2 2
import {SideBarService} from "../library/sharedComponents/sidebar/sideBar.service";
3 3
import {Indicator, IndicatorPath, Stakeholder} from "../utils/entities/stakeholder";
4
import {IndicatorUtils} from "../utils/indicator-utils";
4
import {IndicatorUtils, Option} from "../utils/indicator-utils";
5 5
import {FormArray, FormBuilder, FormControl, FormGroup, Validators} from "@angular/forms";
6 6
import {AlertModal} from "../openaireLibrary/utils/modal/alert";
7 7
import {StatisticsService} from "../utils/services/statistics.service";
......
9 9
import {DomSanitizer} from "@angular/platform-browser";
10 10
import {StakeholderService} from "../services/stakeholder.service";
11 11
import {EnvProperties} from "../openaireLibrary/utils/properties/env-properties";
12
import {Subscriber} from "rxjs";
12 13

  
13 14
declare var UIkit;
14 15

  
......
16 17
  selector: 'indicators',
17 18
  templateUrl: './indicators.component.html'
18 19
})
19
export class IndicatorsComponent implements OnInit, OnChanges {
20
export class IndicatorsComponent implements OnInit, OnDestroy, OnChanges, AfterViewInit {
20 21

  
21 22
  @Input()
22 23
  public properties: EnvProperties = null;
......
44 45
  /**
45 46
   * Top filters
46 47
   */
47
  public chartType: string = 'all';
48
  public privacy: string = 'all';
49
  public status: string = 'all';
50
  public keyword: string = null;
48
  public filters: FormGroup;
49
  public all: Option = {
50
    value: 'all',
51
    label: 'All'
52
  };
51 53
  /**
52 54
   * Grid or List View
53 55
   */
54 56
  public grid: boolean = true;
57
  private subscriptions: any[] = [];
55 58

  
56 59
  @ViewChild('createIndicatorModal') createIndicatorModal: AlertModal;
57 60
  @ViewChild('editIndicatorModal') editIndicatorModal: AlertModal;
61
  @ViewChild('deleteIndicatorModal') deleteIndicatorModal: AlertModal;
58 62

  
59 63
  constructor(private sideBarService: SideBarService,
60 64
              private stakeholderService: StakeholderService,
......
64 68
  }
65 69

  
66 70
  ngOnInit(): void {
71
    this.buildFilters();
72
  }
73

  
74
  ngOnDestroy(): void {
75
    this.subscriptions.forEach(value => {
76
      if (value instanceof Subscriber) {
77
        value.unsubscribe();
78
      } else if(value instanceof Function){
79
        value();
80
      }
81
    });
82
  }
83

  
84
  ngAfterViewInit(): void {
67 85
    if (document !== undefined) {
68 86
      let callback = (list): void => {
69 87
        let items: HTMLCollection = list.current.children;
70 88
        let reordered = [];
71
        let indicators = [];
72 89
        for (let i = 0; i < items.length; i++) {
73 90
          if (items.item(i).id) {
74
            reordered.push(+items.item(i).id);
91
            reordered.push(items.item(i).id);
75 92
          }
76 93
        }
77
        if(list.current.id === 'charts') {
78
          reordered.forEach((id, index) => {
79
            indicators[index] = HelperFunctions.copy(this.charts[id]);
80
          });
81
          this.reorderIndicators('chart', indicators);
82
        } else if(list.current.id === 'numbers') {
83
          reordered.forEach((id, index) => {
84
            indicators[index] = HelperFunctions.copy(this.numbers[id]);
85
          });
86
          this.reorderIndicators('number', indicators);
87
        }
94
        this.reorderIndicators(list.current.id , reordered);
88 95
      };
89
      UIkit.util.on(document, 'moved', '#charts', callback);
90
      UIkit.util.on(document, 'moved', '#numbers', callback);
96
      this.subscriptions.push(UIkit.util.on(document, 'moved', '#chart', callback));
97
      this.subscriptions.push(UIkit.util.on(document, 'moved', '#number', callback));
91 98
    }
92 99
  }
93 100

  
94 101
  ngOnChanges(changes: SimpleChanges): void {
95 102
    if (this.canEdit) {
103
      this.buildFilters();
96 104
      this.filterCharts();
97 105
      this.filterNumbers();
98 106
    }
......
110 118
    this.grid = value;
111 119
  }
112 120

  
121
  private buildFilters() {
122
    this.filters = this.fb.group({
123
      chartType: this.fb.control('all'),
124
      privacy: this.fb.control('all'),
125
      status: this.fb.control('all'),
126
      keyword: this.fb.control('')
127
    });
128
    this.subscriptions.push(this.filters.get('chartType').valueChanges.subscribe( value => {
129
      this.onChartTypeChange(value);
130
    }));
131
    this.subscriptions.push(this.filters.get('privacy').valueChanges.subscribe( value => {
132
      this.onPrivacyChange(value);
133
    }));
134
    this.subscriptions.push(this.filters.get('status').valueChanges.subscribe( value => {
135
      this.onStatusChange(value);
136
    }));
137
    this.subscriptions.push(this.filters.get('keyword').valueChanges.subscribe( value => {
138
      this.onKeywordChange(value);
139
    }));
140
  }
141

  
113 142
  filterCharts() {
114 143
    this.displayCharts = this.filterChartType(this.filterPrivacy(
115
      this.filterStatus(this.filterByKeyword(this.charts, this.keyword), this.status),
116
      this.privacy),
117
      this.chartType
144
      this.filterStatus(this.filterByKeyword(this.charts, this.filters.value.keyword),
145
        this.filters.value.status),
146
      this.filters.value.privacy),
147
      this.filters.value.chartType
118 148
    );
119 149
  }
120 150

  
121 151
  filterNumbers() {
122 152
    this.displayNumbers = this.filterPrivacy(this.filterStatus(
123
      this.filterByKeyword(this.numbers, this.keyword),
124
      this.status),
125
      this.privacy);
153
      this.filterByKeyword(this.numbers, this.filters.value.keyword),
154
      this.filters.value.status),
155
      this.filters.value.privacy);
126 156
  }
127 157

  
128 158
  onChartTypeChange(value) {
......
130 160
  }
131 161

  
132 162
  onPrivacyChange(value) {
163
    console.log(value);
133 164
    this.displayCharts = this.filterPrivacy(this.charts, value);
134 165
    this.displayNumbers = this.filterPrivacy(this.numbers, value);
135 166
  }
......
157 188
    if (value === 'all') {
158 189
      return indicators;
159 190
    } else {
160
      return indicators.filter(indicator => indicator.isPublic === (value === 'public'));
191
      return indicators.filter(indicator => indicator.isPublic === value);
161 192
    }
162 193
  }
163 194

  
......
165 196
    if (value === 'all') {
166 197
      return indicators;
167 198
    } else {
168
      return indicators.filter(indicator => indicator.isActive === (value === 'active'));
199
      return indicators.filter(indicator => indicator.isActive === value);
169 200
    }
170 201
  }
171 202

  
......
173 204
    if (value === null || value === '') {
174 205
      return indicators;
175 206
    } else {
176
      return indicators.filter(indicator => (indicator.name && indicator.name.includes(value))
177
        || (indicator.description && indicator.description.includes(value)));
207
      return indicators.filter(indicator => (indicator.name && indicator.name.toLowerCase().includes(value.toLowerCase()))
208
        || (indicator.description && indicator.description.toLowerCase().includes(value.toLowerCase())));
178 209
    }
179 210
  }
180 211

  
......
322 353
      this.indicator.indicatorPaths.forEach(indicatorPath => {
323 354
        indicatorPath.safeResourceUrl = this.getUrlByStakeHolder(indicatorPath)
324 355
      });
325
    }, 500);
356
    }, (index === -1)?500:0);
326 357
  }
327 358

  
328 359
  saveIndicator() {
......
344 375
    });
345 376
  }
346 377

  
347
  reorderIndicators(type: string, indicators: Indicator[]) {
378
  reorderIndicators(type: string, indicatorIds: string[]) {
348 379
    let path = [
349 380
      this.stakeholder._id,
350 381
      this.stakeholder.topics[this.topicIndex]._id,
351 382
      this.stakeholder.topics[this.topicIndex].categories[this.categoryIndex]._id,
352 383
      this.stakeholder.topics[this.topicIndex].categories[this.categoryIndex].subCategories[this.subcategoryIndex]._id
353 384
    ];
354
    this.stakeholderService.reorderIndicators(this.properties.monitorServiceAPIURL, path, indicators, type).
355
    subscribe(() => {
356
      if(type === 'chart') {
385
    this.stakeholderService.reorderIndicators(this.properties.monitorServiceAPIURL, path, indicatorIds, type).subscribe(indicators => {
386
      if (type === 'chart') {
357 387
        this.charts = indicators;
358 388
        this.filterCharts();
359 389
      } else {
......
371 401
    });
372 402
    this.indicatorPaths.at(index).markAsPristine({onlySelf: true});
373 403
  }
404

  
405
  deleteIndicatorOpen(index: number, type: string = 'chart') {
406
    this.index = index;
407
    if(type === 'chart') {
408
      this.indicator = this.charts[index];
409
    } else {
410
      this.indicator = this.numbers[index];
411
    }
412
    this.deleteIndicatorModal.alertTitle = 'Delete ' + this.indicator.name;
413
    this.deleteIndicatorModal.cancelButtonText = 'No';
414
    this.deleteIndicatorModal.okButtonText = 'Yes';
415
    this.deleteIndicatorModal.message = 'This indicator will permanently be deleted. Are you sure you want to proceed?';
416
    this.deleteIndicatorModal.open();
417
  }
418

  
419
  deleteIndicator() {
420
    let path = [
421
      this.stakeholder._id,
422
      this.stakeholder.topics[this.topicIndex]._id,
423
      this.stakeholder.topics[this.topicIndex].categories[this.categoryIndex]._id,
424
      this.stakeholder.topics[this.topicIndex].categories[this.categoryIndex].subCategories[this.subcategoryIndex]._id,
425
      this.indicator._id
426
    ];
427
    this.stakeholderService.deleteElement(this.properties.monitorServiceAPIURL, path).subscribe( () => {
428
      if(this.indicator.type === 'chart') {
429
        this.charts.splice(this.index, 1);
430
      } else {
431
        this.numbers.splice(this.index, 1);
432
      }
433
      this.stakeholderService.setStakeholder(this.stakeholder);
434
    });
435
  }
374 436
}
modules/uoa-monitor-portal/trunk/monitor_dashboard/src/assets/fonts/open-sans-v17-latin-300italic.svg
1
<?xml version="1.0" standalone="no"?>
2
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
<svg xmlns="http://www.w3.org/2000/svg">
4
<defs >
5
<font id="OpenSans" horiz-adv-x="1092" ><font-face
6
    font-family="Open Sans Light"
7
    units-per-em="2048"
8
    panose-1="2 11 3 6 3 5 4 2 2 4"
9
    ascent="2189"
10
    descent="-600"
11
    alphabetic="0" />
12
<glyph unicode=" " glyph-name="space" horiz-adv-x="532" />
13
<glyph unicode="!" glyph-name="exclam" horiz-adv-x="502" d="M248 377H186L389 1462H508L248 377ZM80 57Q80 113 105 145T174 178Q240 178 240 106Q240 53 215 19T147 -16Q80 -16 80 57Z" />
14
<glyph unicode="&quot;" glyph-name="quotedbl" horiz-adv-x="721" d="M455 1462L309 934H248L328 1462H455ZM784 1462L639 934H578L657 1462H784Z" />
15
<glyph unicode="#" glyph-name="numbersign" horiz-adv-x="1323" d="M389 530L508 928H211L219 1008H530L664 1462H754L618 1008H983L1118 1462H1204L1069 1008H1354L1346 928H1044L926 530H1229L1221 451H901L768 0H678L813 451H453L319 0H231L365 451H82L90
16
530H389ZM475 530H838L958 928H596L475 530Z" />
17
<glyph unicode="$" glyph-name="dollar" horiz-adv-x="1128" d="M928 467Q928 316 818 224T520 121L467 -119H385L436 121Q357 123 278 139T141 182V276Q206 242 294 223T455 203L565 715Q455 768 412 806T346 893T322 1010Q322 1165 427 1260T700 1360L741 1552H821L780
18
1360Q929 1355 1057 1292L1022 1214Q912 1275 766 1284L657 770Q781 710 829 671T903 582T928 467ZM537 203Q679 210 760 277T842 461Q842 537 794 590T637 688L537 203ZM686 1284Q552 1275 481 1204T410 1018Q410 940 447 890T584 793L686 1284Z" />
19
<glyph unicode="%" glyph-name="percent" horiz-adv-x="1556" d="M1458 1462L319 0H213L1348 1462H1458ZM1520 612Q1520 437 1470 285T1334 55T1137 -23Q1025 -23 965 52T905 276Q905 436 957 588T1095 817T1288 895Q1409 895 1464 824T1520 612ZM1284 821Q1204
20
821 1138 749T1031 546T991 283Q991 167 1032 109T1145 51Q1275 51 1354 217T1434 604Q1434 713 1398 767T1284 821ZM760 1198Q760 1023 710 871T574 641T377 563Q265 563 205 638T145 862Q145 1022 197 1174T335 1403T528 1481Q760 1481 760 1198ZM524 1407Q445
21
1407 379 1336T272 1133T231 868Q231 753 272 695T385 637Q469 637 533 709T636 913T674 1190Q674 1299 638 1353T524 1407Z" />
22
<glyph unicode="&amp;" glyph-name="ampersand" horiz-adv-x="1331" d="M748 1395Q623 1395 554 1327T485 1135Q485 1003 594 854Q797 943 873 1017T950 1200Q950 1291 894 1343T748 1395ZM465 63Q573 63 676 105T899 252L547 745Q383 666 315 611T212 487T176
23
328Q176 209 254 136T465 63ZM78 324Q78 486 177 601T502 817L461 884Q383 1012 383 1135Q383 1292 484 1388T748 1485Q893 1485 975 1409T1057 1202Q1057 1117 1016 1048T895 920T639 782L969 319Q1042 394 1104 495T1196 682H1307Q1205 435 1022 246L1206 0H1083L952
24
184Q831 76 710 28T444 -20Q277 -20 178 74T78 324Z" />
25
<glyph unicode="&apos;" glyph-name="quotesingle" horiz-adv-x="403" d="M461 1462L315 934H254L334 1462H461Z" />
26
<glyph unicode="(" glyph-name="parenleft" horiz-adv-x="526" d="M104 270Q104 613 226 903T608 1462H713Q454 1186 329 894T203 276Q203 -41 330 -324H250Q104 -62 104 270Z" />
27
<glyph unicode=")" glyph-name="parenright" horiz-adv-x="526" d="M453 868Q453 523 330 232T-51 -324H-156Q101 -50 227 242T354 862Q354 1010 326 1156T227 1462H307Q453 1200 453 868Z" />
28
<glyph unicode="*" glyph-name="asterisk" horiz-adv-x="1137" d="M834 1540L725 1135L1163 1143L1155 1036L739 1065L920 664L805 627L670 1044L385 696L307 774L625 1092L233 1217L272 1319L666 1151L713 1559L834 1540Z" />
29
<glyph unicode="+" glyph-name="plus" horiz-adv-x="1128" d="M563 672H162V772H563V1176H664V772H1065V672H664V272H563V672Z" />
30
<glyph unicode="," glyph-name="comma" horiz-adv-x="451" d="M250 238L258 215Q224 123 144 -18T-16 -264H-90Q-11 -132 51 7T139 238H250Z" />
31
<glyph unicode="-" glyph-name="hyphen" horiz-adv-x="629" d="M82 502L100 592H557L541 502H82Z" />
32
<glyph unicode="." glyph-name="period" horiz-adv-x="485" d="M82 55Q82 111 107 143T176 176Q242 176 242 104Q242 51 217 17T150 -18Q82 -18 82 55Z" />
33
<glyph unicode="/" glyph-name="slash" horiz-adv-x="641" d="M827 1462L10 0H-100L715 1462H827Z" />
34
<glyph unicode="0" glyph-name="zero" horiz-adv-x="1128" d="M1075 1016Q1075 815 1034 611T918 265T734 52T492 -20Q316 -20 228 106T139 494Q139 680 183 875T307 1209T494 1416T735 1485Q1075 1485 1075 1016ZM723 1397Q589 1397 482 1284T308 955T242 504Q242
35
282 304 175T502 68Q641 68 746 180T912 517T973 1006Q973 1205 914 1301T723 1397Z" />
36
<glyph unicode="1" glyph-name="one" horiz-adv-x="1128" d="M537 0H432L657 1055Q676 1147 731 1348Q689 1312 656 1287T406 1126L354 1204L760 1462H850L537 0Z" />
37
<glyph unicode="2" glyph-name="two" horiz-adv-x="1128" d="M909 0H39L61 104L510 506Q708 683 794 782T920 969T961 1149Q961 1261 895 1327T698 1393Q522 1393 365 1264L311 1337Q491 1483 705 1483Q878 1483 973 1398T1069 1161Q1069 1051 1026 953T884 741T573
38
438L190 100V96H926L909 0Z" />
39
<glyph unicode="3" glyph-name="three" horiz-adv-x="1128" d="M1049 1174Q1049 1012 943 899T657 756V752Q774 728 842 637T911 410Q911 276 847 177T668 29T393 -20Q297 -20 209 0T55 53V154Q227 68 399 68Q596 68 702 157T809 410Q809 555 720 633T473 711H356L377
40
807H487Q696 807 820 902T944 1161Q944 1275 881 1336T692 1397Q525 1397 348 1266L299 1341Q383 1408 487 1445T705 1483Q866 1483 957 1401T1049 1174Z" />
41
<glyph unicode="4" glyph-name="four" horiz-adv-x="1128" d="M1071 371H807L727 0H631L711 371H23L43 467L924 1477H1042L827 459H1092L1071 371ZM729 459Q808 828 848 1017T934 1372H930Q864 1281 801 1206L150 459H729Z" />
42
<glyph unicode="5" glyph-name="five" horiz-adv-x="1128" d="M582 879Q770 879 874 777T979 498Q979 261 831 121T424 -20Q340 -20 247 0T88 51V158Q258 68 428 68Q636 68 756 182T877 496Q877 636 792 715T567 795Q434 795 324 754L258 803L451 1462H1075L1057
43
1366H516L367 850Q465 879 582 879Z" />
44
<glyph unicode="6" glyph-name="six" horiz-adv-x="1128" d="M170 428Q170 711 275 972T544 1357T928 1481Q1051 1481 1110 1460L1092 1370Q1006 1393 922 1393Q689 1393 529 1219T295 717H303Q371 811 467 860T678 909Q839 909 928 809T1018 526Q1018 370 958
45
245T787 50T530 -20Q359 -20 265 99T170 428ZM543 68Q655 68 739 126T869 288T915 518Q915 664 848 742T653 821Q572 821 499 790T370 703T292 588T270 414Q270 250 342 159T543 68Z" />
46
<glyph unicode="7" glyph-name="seven" horiz-adv-x="1128" d="M244 0L1040 1366H274L297 1462H1155L1135 1352L356 0H244Z" />
47
<glyph unicode="8" glyph-name="eight" horiz-adv-x="1128" d="M737 1485Q900 1485 995 1400T1090 1171Q1090 1033 1006 937T721 764Q851 686 911 594T971 385Q971 269 913 177T748 33T487 -20Q309 -20 204 72T98 326Q98 485 198 594T520 782Q420 854 376 934T332
48
1114Q332 1273 446 1379T737 1485ZM610 733Q392 660 297 566T201 340Q201 204 278 134T498 63Q666 63 768 154T870 387Q870 491 808 576T610 733ZM727 1399Q597 1399 513 1317T428 1114Q428 1023 469 955T627 813Q819 875 906 957T993 1163Q993 1272 923 1335T727
49
1399Z" />
50
<glyph unicode="9" glyph-name="nine" horiz-adv-x="1128" d="M1059 1032Q1059 744 958 484T694 102T301 -20Q187 -20 115 2V92Q202 63 307 63Q781 63 934 737H926Q786 545 559 545Q397 545 304 650T211 934Q211 1089 270 1215T441 1411T698 1481Q872 1481 965
51
1366T1059 1032ZM686 1393Q574 1393 489 1335T358 1172T313 942Q313 797 380 717T573 637Q656 637 730 669T859 757T936 871T958 1047Q958 1213 887 1303T686 1393Z" />
52
<glyph unicode=":" glyph-name="colon" horiz-adv-x="485" d="M260 989Q260 1046 285 1078T354 1110Q420 1110 420 1038Q420 983 395 949T328 915Q260 915 260 989ZM102 55Q102 111 127 143T197 176Q262 176 262 104Q262 49 237 16T170 -18Q102 -18 102 55Z" />
53
<glyph unicode=";" glyph-name="semicolon" horiz-adv-x="485" d="M287 238L295 215Q260 119 177 -27T20 -264H-53Q26 -132 88 7T176 238H287ZM266 989Q266 1046 291 1078T360 1110Q426 1110 426 1038Q426 983 401 949T334 915Q266 915 266 989Z" />
54
<glyph unicode="&lt;" glyph-name="less" horiz-adv-x="1128" d="M1051 262L137 676V750L1051 1221V1118L250 719L1051 369V262Z" />
55
<glyph unicode="=" glyph-name="equal" horiz-adv-x="1128" d="M168 885V985H1071V885H168ZM168 461V559H1071V461H168Z" />
56
<glyph unicode="&gt;" glyph-name="greater" horiz-adv-x="1128" d="M170 369L971 719L170 1118V1221L1085 750V676L170 262V369Z" />
57
<glyph unicode="?" glyph-name="question" horiz-adv-x="799" d="M242 362L248 391Q277 523 330 597T487 745Q605 829 662 890T748 1018T778 1159Q778 1267 711 1329T528 1391Q389 1391 221 1290L182 1376Q267 1425 353 1454T541 1483Q700 1483 791 1399T883 1169Q883
58
1042 817 935T586 709Q501 648 454 601T381 506T334 362H242ZM170 59Q170 115 195 147T264 180Q330 180 330 109Q330 55 306 21T238 -14Q170 -14 170 59Z" />
59
<glyph unicode="@" glyph-name="at" horiz-adv-x="1724" d="M1688 858Q1688 679 1632 535T1478 308T1266 225Q1168 225 1112 280T1055 424H1051Q997 327 919 276T750 225Q638 225 572 298T506 500Q506 656 569 783T747 981T1008 1053Q1130 1053 1260 1001L1176
60
686Q1137 546 1137 465Q1137 394 1171 354T1272 313Q1358 313 1432 386T1549 584T1593 836Q1593 992 1528 1113T1341 1301T1049 1368Q814 1368 625 1260T329 956T223 516Q223 228 378 67T813 -94Q1020 -94 1233 -12V-102Q1023 -184 805 -184Q602 -184 448 -102T209
61
137T125 508Q125 784 246 1001T583 1338T1057 1458Q1246 1458 1387 1386T1608 1173T1688 858ZM1008 969Q895 969 804 910T661 745T610 506Q610 414 650 364T764 313Q865 313 944 402T1069 657L1147 946Q1081 969 1008 969Z" />
62
<glyph unicode="A" glyph-name="A" horiz-adv-x="1059" d="M805 520H293L6 0H-111L711 1468H778L979 0H874L805 520ZM793 612L754 903Q723 1145 715 1305Q685 1242 651 1175T344 612H793Z" />
63
<glyph unicode="B" glyph-name="B" horiz-adv-x="1202" d="M412 1462H791Q981 1462 1081 1378T1182 1137Q1182 984 1092 888T838 764V760Q963 729 1026 647T1090 442Q1090 237 950 119T559 0H102L412 1462ZM377 811H655Q861 811 968 892T1075 1130Q1075 1249 997
64
1310T768 1372H496L377 811ZM358 721L223 90H565Q766 90 874 177T983 434Q983 579 893 650T618 721H358Z" />
65
<glyph unicode="C" glyph-name="C" horiz-adv-x="1169" d="M961 1389Q764 1389 610 1285T365 980T274 539Q274 314 384 193T702 72Q842 72 1006 123V29Q850 -20 690 -20Q438 -20 304 125T170 535Q170 801 274 1023T559 1364T961 1483Q1138 1483 1268 1415L1223
66
1325Q1168 1355 1099 1372T961 1389Z" />
67
<glyph unicode="D" glyph-name="D" horiz-adv-x="1350" d="M1288 879Q1288 626 1179 418T878 105T432 0H102L412 1462H717Q999 1462 1143 1315T1288 879ZM430 90Q656 90 824 184T1085 460T1178 872Q1178 1370 702 1370H496L221 90H430Z" />
68
<glyph unicode="E" glyph-name="E" horiz-adv-x="1067" d="M829 0H102L412 1462H1139L1118 1368H494L377 815H967L946 721H358L223 94H850L829 0Z" />
69
<glyph unicode="F" glyph-name="F" horiz-adv-x="981" d="M205 0H102L412 1462H1120L1100 1368H496L362 748H932L911 653H342L205 0Z" />
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff