iks:virtonomic kvala_personal_indicator_zarplaty

Отображение максимального числа сотрудников, которое держит топ, а также максимальной технологии установленной в подразделении. Показ процентного соотношения зарплаты от среднегородской.

  1. // ==UserScript==
  2. // @name iks:virtonomic kvala_personal_indicator_zarplaty
  3. // @version 1.86
  4. // @namespace virtonomica
  5. // @description Отображение максимального числа сотрудников, которое держит топ, а также максимальной технологии установленной в подразделении. Показ процентного соотношения зарплаты от среднегородской.
  6. // @include http*://*virtonomic*.*/*/main/unit/view/*
  7. // @grant none
  8. // ==/UserScript==
  9.  
  10. // Окно калькулятора
  11. var strSetting = ('<style>'
  12. +'.calcTop { background-color: white; position:fixed;margin:0; padding:0; display:none; top:10px; max-width:450px; min-width:200px; width:250px; color: #708090;'
  13. +' border: 2px solid #b4b4b4; box-shadow: 0 0 0 2px #708090, 0 0 0 4px #b4b4b4; border-radius:11px; -webkit-border-radius:11px; -moz-border-radius:11px; -khtml-border-radius:13px}'
  14. +' .calcTop > div:nth-child(1) { position:relative; margin:0; padding:0}'
  15. +' .calcTop td { border-top: 1px solid #b4b4b4 }'
  16. +' .calcTop td:nth-child(2) { text-align: right; white-space: nowrap; color: blue }'
  17. +' .calcTop th { background-color:#e1e1e1; text-align:center; border-radius:7px; height:28px }'
  18.  
  19. +' .scriptIks_imp { border: 2px solid #708090; border-radius:50%; background:#e1e1e1; text-align:right }'
  20. +' .scriptIks_cur { cursor: pointer }'
  21. +' .svgExit {background: url(data:image/svg+xml;base64,'
  22. +'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAABURJREFUOI1tk1tsFHUUxr+Z/+zsTrc7e2mXtru00JugoLRETQoVEn3hQd5UTFB80ESLCYiNggZfALmpQRFj'
  23. +'DAFpEcpqGwE1bEVu5ZKWGIrFXtjWsG1pu/ednZntzmV3xgdo5MHv8ZxfvnNO8h3goSRJBABommYdHR1dvnPnrmIA2PTeZvyfTNP0nDsXfNbv91EA0NHR8V8zFkvMQawoSh/GYnG5t/fm1mXLGy0AsLGl'
  24. +'BQCQTqcBAPFYwhGNxb4Jh8NKX1/fWwAoAPj+2DEgHB6fM7PMzMx8EY8n8qIombFYXL148eL2uaGBU4GHnMGMj48fmpmZKciSZMbiMfnGjRutAMij67N37vz9+eDQkDI1NWUKgmBms1kzGo0ap8+c2fXo'
  25. +'qeFw+LtwOGwKmYwpSZKZSCTM4eERqauza2ND/SKKjI39w4bD4c0ZUdxuGKaFpmlYWAssLAuGEIrn+eeamppmOzs7b0Qika9ESdrodDrBcTboeh6SLEESZbZgGGuqFy0apLo6uxocvPOq1WYtpikaHGeD'
  26. +'0+WCx+2CjeOQSqaQSCak0pKSm6qqvpAvFOD3+WCYBoR0BslUErKcBaFojNy9mybTM9NyqdebLyub12yxWEi+UICmajBMAyxrBWEIsrJsdbs9NYlkEi4nD6vNimQyjUQiAUVRQAGYmprSenp6tpOJiQmt'
  27. +'Oxjsa1jWiJqa6tU0TVOqpkKSZOi6DqeTRzY7C9M0IWezqCgvRzQaRSQahaqqME0TqVRK7Q4Gt7a3t39LfBU+SLJU6O4OXqmtq7MvfnzxCpqmKU3XIQgZaJoOu70IGVEEzzsgCCImJieR13VQFI2coiid'
  28. +'nZ37jx498lmhkM8TSZbQ2NCISCSCP86fP19VtUCpr39spdPJWxiGgSBmoGkaaIqGLM9ifHIShBBYrTZkBCF3/Hj77pMnftgBwKyrqwcNAP23+3Hw64MAgI8/2rbPKORvcRwHl8sFf7kPrIWFYRgQMgLs'
  29. +'djusViusLIuBgb96f/oxsAsAnliyFGNjow/COJvNobm5GQAwOXn/YL5gvDQ7m4MoShDEDBy8A+m0gMr5lZAkEYZhQNN11NXWLWhoXG4JBs9disdjePudlgcvMxfu4eHQl6IktiiKAkVRQROCivJycDYr'
  30. +'/rzVD7/PB7/fh3vhe8jlVNAUBYZhzFAo9EkgcHL/1Z4enQCAkBEcd+4M7UumUu/KsgRFUcAwDCrKyuByOZBKC4hGYpAkGS6XC+Xz5iGXyyGXyyGfz1M8zzdXV9fOjg0P3iRGwXQNDAzujccTLdnZLGUU'
  31. +'DHBcEcrKyuBwFENVNQgZEYKQgSzJoAkNt9uJkhIPNFWHLMswDINwHLe68elndKJo2lOFQuEQIRYGJmC321FaWgLeUQzDMJHL5TA+Pp49e/bMNb9//gKaJhRFPTDleQcMw4CczYJhGHJ/cnIVuX7t2vTC'
  32. +'hdUxr7f0eY/bbfF4PHAUF4OiKGiahng8oba1HdsTCHS8abXZuKrKypUAKMIQuFwuFBUVgaJphEKh/K+//bKeAEBfX2//smUN+erq6qaSEg9LUTQM08D09LTS1ta2t6PjxA4AGBkZuuD1zqNLS70rABAr'
  33. +'y8LBO5CIJzKXL11oDQROtZMX165FKBQyr1y+1Ltk6ZOi1+td43Ty1NjYmHb69M/bjhw5vB8APG43coqC27dvXa+trdeL7PZVnI0jM5Ep/ffu4PsHDhw4DMAEAGzY8MZceqjdu/e8evz4CXHLltZNDMOw'
  34. +'AFBTUwcAqKpaOMdZWls/2L5jx6f5l19Zt26u+Nr61/EvX2SuRXMzfAsAAAAASUVORK5CYII='
  35. +'); position: absolute; top:6px; right:5px; margin:0; padding:0; width:20px; height:20px}'
  36. +' .scriptIks_but { color:white; border:1px solid #708090; border-radius: 10px; background: #708090;'
  37. +' background: linear-gradient(top, #e1e1e1, #708090, #e1e1e1);'
  38. +' background: -webkit-linear-gradient(top, #e1e1e1, #708090, #e1e1e1);'
  39. +' background: -moz-linear-gradient(top, #e1e1e1, #708090, #e1e1e1);'
  40. +' background: -ms-linear-gradient(top, #e1e1e1, #708090, #e1e1e1);'
  41. +' background: -o-linear-gradient(top, #e1e1e1, #708090, #e1e1e1) }'
  42. //----------
  43. +' #unitInfoCal { margin:0 2px; padding:0 }'
  44. +' #unitInfoCal hr { height: 1px; color: #b4b4b4 }'
  45. //----------
  46. +' .svgNews {background: url(data:image/svg+xml;base64,'
  47. +'iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABHNCSVQICAgIfAhkiAAABT1JREFUSIm1lmlsVFUUx//nvm22ttNp6UYpS0HB4oeyKdgICmEJGJW1CgmIBo2EJgoFNwpBCjFKYgSXEImA'
  48. +'u0hVEIwoa2mtoAhEWdqCdEoLndplpu3MvHnL9UMpsXSmpbX8kvvh3ft/93/PyTm5F+iEzeeaUndeDsmdaXoKCze5o7SWnj9pZvlscuV5tWHunTCmSAtrS4Plfs1MDwQZNo+0RNT1lLAR5/76zzaNU/pV'
  49. +'L4crRsSy09VLe9tY/O/Hhl+u02GP4bDGORZUeALQdaAlCCjcOXV/Kf/qSEPNYJ9KribSMNzmYMfLzxfvmze2rifGHVKYU1i725CUmW5fEAIBpmkgs18UKn0hWCUFIjPBuQC/bkDXCUEtgGSL2NTY7M9N'
  50. +'sok/bhybeKXbxsuPla60upLe+OOKHyY3AXAwiCCuQQeBSABAIA4QGeDEWuc0DZKNQQTTk4zA7i3T+md3y/iZwvrKhpZgakOT3oWUd1wjgDFAIwMpJPk+f6xvzJwvL9Gueem3itvvNqeg7BPF6Zx/ucoH'
  51. +'6kYNcwCyqOqyGnPFSwHDIigwmH9gAjG5IHtIxJ0IAB7dfja9z+DkstMXPESQO8QTDmb4wWUr4pXQ5KBOJWP7Sf40Zyova2iBajY6mGlb9l1Zo1KxNCMv3P8iANRobM/1iw0UCHAQqV2EyKExoK/dsvLg'
  52. +'Qs8moiwTAA63V/kA5G8tck9aEinike8UviJYkvK9Xh+MLuMkcHBf+WL7IIob2qM2akOsb7ZPpFA9DJWDMwI3OYgiJJsTLJJQ+n9NAYBNja9ZXt+MNXF26YSmBaAGDagqgxYiaCpHSGXQQjeGRmgJmKM2'
  53. +'7T3pBIAlGwuGjXrxs1OY/UF+9oZ9ud0x7lB1T3x0ctCJUu+helissiQm6KYJU9NBxME5QCAMS3KcKnphxMgzpdfiMlfv93BuMm5yiAIwIFpofmrK6Oe27D589OkJqTXrn52l3ZZxG+/+dFHZd7EhpdKn'
  54. +'Dk+Ksn74c1kwIVrUAAI4Y/zxDHvajkVjro5bvtNTUhXow0kGBwd4ayUwxsB1vaaPTbg0c0Typ+/nTHvvtoxvhXN3zL0bq8Y3NPonWhVpcihgTHG/9ZAbAMQnt3OdCOA3aoMIhNYeZ4xghjgcVoIIo9gu'
  55. +'KoeSYy07euW6S83Z81dVo++e2xITQWTCLrFrZdfUeZuGcKZ07ofWDNhjopEWuHY67H0MADNyvxnXlWHGqm9fp4U/cFW0iWACqJMBJkASRCQKRsX5rYs2RIy42ubMnvv2odnFF5rXTM+QA/lzp9BLXxxg'
  56. +'BZdM5ZE0/b7v3fKBc3Wcw64DukwRI7gJR2xqAhqrfZPaMhCRu18+Gqho0hRTNyqsIphmCrJJepKqA5wRQNTxogqHSYh1WZFhDR07nvfw+E6N7193nErysnhC7pFqTxDJMFvbpPOzhlknAxZFQV+XUl/+'
  57. +'6ui4tumIGSrJy+IA4HlzQsqYVFeRIyqKi7IESAK4yABRAIQbQxQBgQGSBSRKgCCAMwbOGIgsSEh1gtV7c9qdp5Pjt2PS+qLMuKSBD5yqrN5crTIoVgZRkiBLBEYCdB5CyB+C3eZAhdsDiDIIQHysDIeJ'
  58. +'gr/XZs7qkXE4vj7w58xtF7xBiVv4O9P7ewcMji9OfO23vcxpn1Fz3Q9Z5EhIjNEk9zWX3RXXcnZ1xs2K6PX38uKdFQsONoY+dle1wOWKwlDUrShaNWbTrbpeNwaAlPWlXBUM2CShsHLFXQ+G03Tdfj1g'
  59. +'qFOYH20TMZyF1t2J/SNyppYrv5fXDulM8y8o0xvHHOFTuAAAAABJRU5ErkJggg=='
  60. +'); position: absolute; top:2px; right:5px; margin:0; padding:0; width:30px; height:30px}'
  61. +' .svgCalculator {background: url(data:image/svg+xml;base64,'
  62. +'iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAYAAAAxFw7TAAAABHNCSVQICAgIfAhkiAAABaxJREFUOI1tlWtsnEcVhp+Z79ub75fa2GmdOLcGEwq0EhGFpjGhVUUhVBVF/VMVhCjEoFYItRU/WkirgJEi'
  63. +'AVWbqiKlkUglKidSGkhKCCFJG1emMcYJMfVlfVk7Xta7sXft3f12v+sMP9amAeVIozNz5szozPuOzitqf3Topf2P7HqqKhICBDeavslM/F/O2r5luzzXd/558eJfrs59YcO6jn8MTqO0RkbCyFiY2toI'
  64. +'NTURotEQIdNAo3E9hV12KRQcrKKLKttoL0ArxWfv3sLgzNxVM+ep8KIw2Nq9FRWoj2rRa07jAgqBFxZ40QiyLowZKHytURqkKZn3YMUNwmbO13Jyqcx6M4QK1E0eA1pXvFgdEUMQNYz/5oRCBkMZzUCm'
  65. +'JM1lTxvZksf9DfWoQN9YGhp9I3xrICJFBceKE1RXhfjucBbrumWaads3QlX1vHomgdIgwiYyYhKLhohVhQmHDQxDAuD5CtvxuZp1sMs+ynbRfoBlOVgf34YwTMPMuoGUgOUXQUqEI8AFndcIrRFaYfuK'
  66. +'+XJAUYHpOQgUDgat1gq2rxFRgZTb0FIKc8lVopS38W0fLQSCSjWu0pQChac0fqAAzefS/6RnUw3jw0Oc2LiTDXU7iEY01wtT9DtlBBjmspLmihOgnWAVOska10JXMJVao7QmJ8K8cuoCuZlxxOb7uFTr'
  67. +'orRPW3SVOTBMLYTUShP4ahVlhRCrzK5eWFkoxps2c2j/wzx59kNsq8iDNXn2bGqh57SFgUCDNAF5m7b4wToLQxoYaH6bsHimQ1J1Swtaw+/iS3RXO6xvb4fkGD8OzxIPV/NwQxlycxzZBj3aowRSao0R'
  68. +'pBKcef0gX96+iaO/6qUtl+DpJ75JZ30tp/veYuL98xz/dS9Tl4dZnJrgwuFXuXjiKP1/OkXEKfPs3ieISQ0a00QjAs9lZOgDDvT2Mjo8xN3de8gs53njtYP8/f1+uGMnK6l5/nrybSKRMHZuETfSwrl3'
  69. +'/sjYlWFSmQzrEKC0IYyXB3RrayMP2ZP4vk8kFOKd6wGPbqyjYHuYpkF/xuaOepM6s/Khr5ddUrbiM41RtAqIhUP8Um/Bn5mypHYVsYUEiyff5LHbb2Hu2CG6luKcePbb7Gk1KZw9hjd4lvThn9E+P0Lj'
  70. +'5CDFvpdY+PMx8uePUzd9mZM/fYq6wEeYEcPE15RKRSYmJ7k0dIWJeJyOrTuIT06TTCZJLSxQkE0spFIk5uYoWyUymTRLVWFSqoAww4yPj9Poa/CFIYwDl3Sd6dM5doZoLIbnlEk2d3HrwhUcbeD7Hvmm'
  71. +'jTS5OXQ5D0phNLSS8wU1y0lM00QGHqM79+Jn0oEhvvS9fRu8NN9qytLzlXupXkzgF1f4VHmaF/Y+ztZYQPrfSb4o53nyG1/lrrYaqmYGwQ/o2bWdh3ZsR82NMNr4aeyiLUw8xXIuy5vvvk3H7Z/kjd/3'
  72. +'ceuur/Pa4SPsuP9r/OH0WeIFk0zib5gtnaRSKa4MXCIRaqehlGH37t0c/M3rNBz4PniBMOS939lXr23qZweYmZnGLRUIdXXTEfUYS8xTLDvQ3kVHSyPXkklWihYtmz6BX9uOymeYnr1Gc0srCxvvw8lb'
  73. +'mNpRNEdD/PDpZ4hVVRO4DoffHeWe7ntYv7mLctni+OV5Pt+5nrbOLWilmZsag3yUBx+4k+bmZuJj/+Lqch48hcQLSF+b5+ArL9Pa2soven+ObRXY/+ILrOTznDt/gbGRDzna9xbZ7DLxySlOnzrJxQvn'
  74. +'eO9iPxr4yfPPEdESPIUh7npsX3WwghvvZ2b2GlPTM9RsuJMgnyaRWmQ+lUbX3UZMeIyMTzE5O0ekphkn2kw2OcPwyCiO5+NseQCnaCPko0e0+thmsJYr7V5KUD4IuSoklU4D4iM50Go1vhbTiJpGRGoC'
  75. +'s20xRzkzwP9q8trJm2nwzazS4mLC4D+DdfNCcnp7igAAAABJRU5ErkJggg=='
  76. +'); position: absolute; top:5px; left:33px; margin:0; padding:0; width:20px; height:25px}'
  77. // Настройки
  78. +' .svgSettings {background: url(data:image/svg+xml;base64,'
  79. +'iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAABHNCSVQICAgIfAhkiAAAB2dJREFUSIlllf1vW9UZxz/n3nuuX2IntvPipnlvEjdJJ0HRgIE2JtgqumxFwKSpq2CTxiYNtB9hEpr2Fwyh'
  80. +'/rJuAg0BDW2HxIaKWqDrVm0TfVvahELttHFIEzsvduLYiZ3Y917fe/ZDWkTF+ek8OnrOeV6+5/PAV9ZHH//jqyapqRuUSusAnL9wUb09dkyNjR1Xb7z5trpw8bICKBZLJJOpu/ze+9v7d9nGVx/Y//g+'
  81. +'/nXu3+bS8rL48dNPeX6f6dw5z2YXiEXCaJqO67nMzMwAEI1GAFDKk3888rrW09OlDvxo1D46doJnnzkIgAbw8Zmz7H98H+PjV2WtVnvVMIwjU1Opl2bn58PnL14JLWQXD9esGj09vcTjcXq6u6lZFvPz'
  82. +'mcPXJj8NZbLZ8JUrky8Fg/4jtVrt1T/9eUw++8xBjo4dA0AopRBC8J//ftJUqVSOVLe2DnmeiyGl1dLScl0pxWqhcB+eRyjcSCaTYdeuXeTzeQDiO+JXleuxuLS4RxPC57ourieOlyvrv/rNC89v5vMr'
  83. +'GMnkFAClUul527IORaNNRKMRMpmsL5PN3KchkKZBb28f1z67ju04ZLNZEoP9ZLNZsvPz97muS6Spka7ubkqlErfm5n7a2dEplFLPCyFKxp49w1iW3f/JhQvPuH4fPb29VKtVEokEuVwOn89HJBrFcerY'
  84. +'to3f72dza4tgQwMjI3solYrYlkVbPE7ddenbtYtqtYaU8mBpff014JwBYJqy6NjOXDQa2ZNMpljO5Rkc6Kd9RzuWZZFfWWVlZYVAIIAQAl3XSadniMWaiTQ1Eo3GWFpeZjo9QzzeRiwa5YvZ2fcjTU1X'
  85. +'AUQulyceb+OjM2dHK5XyWGl9PeqTEk9BYziM67pUa1VMaWJIA4VAoHBsB6fuEPAH0HWdjXIZIaBWs9A1bT3g9//s0KGDJ2/NzSHuSFQpJY4df/eSJtT9CA1N17aVIQSm6aNQWKW4ViDgD1KtbRGNNdPa'
  86. +'1kqtWkMpBQo0oVG1qszNzZ/7/e9efuzO3eLz68mzN25Oq3K53IBS9+y9957gzOwsKIUQGqbf5GbqBjva4wwODCRffPHFn7zyyivvTqfTI7lcnsFEAtuyUZ6HZuj0dnfx4UdnirbtXOrs6JCPfe9RxDvH'
  87. +'T6igzw9CoWmC3UPDTE3dQNN1DN1gdSVPU1OjA8SfeOIJTQhRUEo1nzx50gNy6+sbsqW1jbpbx3Vdhod2k0omsSwby7ZYWsph2LZDV8dOpJTEYjGyC4sYUqLrOgJoaAgipYyPjo4WAcobGwghCgCnT5+O'
  88. +'NzQE14QQSCnRNI2FhUVGRkbI5/MoFNPTM2i6ptPb20skGqO8uYnjOJhSIqXEtm02NsqMjo4W/36bR+HGRgA++OAUo6OjxUqlgmVZSCkxpdyWulOntS3Orr5+hNDQFIr0zCzpdJqV/Cq6YWAYBtIwiEQi'
  89. +'XLv2GUePvnP5qaefvAt6Bw78kL+eePdyMjlFNBpF3vbTDZ1sdoF0Os2tuTlAYVSrVWq1KqZpousGuq6h6zqapmGaJg8//C0u/+/K/a+9/pfi/sf3rYXD4fcqm5UfnD17rvOz69cjDz74AP6AD8d2EEIg'
  90. +'XBeBQAjY3NzCceqI8+cvpiavXfOFGho6dF03u7o6tyPSdUAxMjLCqVOnyC4s0djURFtbG+ulEuulEh0dO9m37/ukUilA4LoujlMnmUzhbZN6fqB/YEvc/iNBx7Z/+9bYsV/39fXGG8NhDMNACEEgEGB3'
  91. +'YpDPrycprBUIBoI4jkM0EmF4eIgbN6epVqsopXBdl9XVVcbHJ5aee+7n/2zfseNlIUTW2KxUEEJsvfnW2GmU+qVbr2Oa5pf4qDsOmUyWxOAgpjlC3aljSAPbtslkstQdByklruuiaRpbW5uEQkHPsZzD'
  92. +'QojsfCaD0RAKAVAoFA7E460dQ7sTVDY3QQl0XUPTdSzbZml5GWnoIATKU9Rdd1uJPh+e6wKgaxojw8PkcvmOd46feBK40t3VtT20ANbWiu7gwACeAqUUhqHj8/vx+/2YprzdIwGK21lqmKYk4Pfj8/uR'
  93. +'hoHruURjMXp6ukkmU+7Xxm9jU9grVzYJBstIUyI0jcXFRQzdoKe3CyG0bdUgUCgQ4Lous7NzCAGtra0oFKurBTRNp7097n3Jrjubmzdv/uLSpfEjjY0hX0dnB9PTM0xMXMVzPfoHBnjooQfp6+vDcz10'
  94. +'Q2dy4lMmJif5YmYGvz/A3r17GRpKkEpNsVEuW49+95EXErsTb9yVSUtLS/PgYL9vYnKS2VtzrKzkWSsUqFTKLC8v09zczPDQEPXbfTh/4QLj45eRhkE4HObqxBXmM/NoQvCdR77ta9/Z3vy1ctVqteZI'
  95. +'pIndiUGWl3P4fZLmWJRqtYrj1EmnZzBNE9M0UZ5Hca3IN/aMYJo+gsEAwWAQ0wzQ2bmTWCRCpVJp/lq5crlcb7lc7vE8717DMA7btk29vk1WgNMffkwoFEIpxdZWlVg0wgMPfBNN2yaEYRhIKQH+AHwQ'
  96. +'CoUybW1ttwD+D/wsbcMreGqRAAAAAElFTkSuQmCC'
  97. +'); position: absolute; top:6px; left:6px; margin:0; padding:0; width:25px; height:25px}'
  98. +' .svgOpenFile {background: url(data:image/svg+xml;base64,'
  99. +'iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAYAAAAxFw7TAAAABHNCSVQICAgIfAhkiAAABV9JREFUOI19lduLXWcZxn/faX1rrb337JnsTM7pJNMkQluLIbZVYlsQ8aotFm+sxTtRERQs6IUI9R+I19UL'
  100. +'BWlBUKwgGlMrKGqktNF6QHTaZIg5zkw6e/beM7NO3/e9XgS9avtePvB73pvnfV7F+4yIZE+ee+j5HTv9Zp1qnnzwCR5/8NFnzu575kfvxdj3MZv71g+/8rwW9dwHPnIA3zO8dvFVrt+49vCqvHX+uDo5'
  101. +'eTfOvJfhOwdXn17d/Nc5c++E3lJDdGu4gXD96vijr/zh/F//feHGP96NUwAvvviTouvCn1avrG4ZZ1L/uJm7tP3rMxt+hX33G2K5RpYHFnr3sPZ2w/obmrP5Zy71Z4vT8XjLnTp58m95nn/ts89+ulUA'
  102. +'L/34Qt8YMxvt2c+susOvNl7gL7dfY/mRkuDXsOUumReMXmDg9zBZcTQr9/H00uc4fvAEKysrDAf97xhjvm7OX/ijLnz206I3OFmFit+tvMyltd8yvK/B9KdosRhdoo3BS0JI7Du8zOxGxVvrf+fY8AGG'
  103. +'vb3cunn9xHQ6Oadv3rqmbq/dfAQt7OxMWP3nZdJMuHllnWqnQ0RISYgRFB4JGa/88iLXV9d5/eKfiSFiraOuK6mqCjsev4MxJh5aOsZwbp5Fd4pTR+/lzfwXxHqDkCVEC1ihaaHwPXbG1/jix77Mo88+'
  104. +'gcLy9uXLeJ+TUsI2TYd1kPmMxeEiz331G6xPr/Dm739DvQuuSCQrpE7hlSN0hm6mMNsD2ibgMo33OXVd2xgjdrfqcFFhTclsp6LVHZtbMyQaUjKEGKALKONoJSFtjU4KqzV1VVP0ezif0Xbt/IfuP7Ff'
  105. +'f+qpp7JeMedjVGjt2BzPuHV7nTp1dCERoyKkSJQZQW8gWvAOjL6rpxQxWiOI3q12h3pnd7s3vzDMnbPMZjOapubAgYPEFJEUkShIUqSUiCkQYyJJQluDADEmbOYw2lJVldZtW+W+dFkTakJsWFwcoTWA'
  106. +'kFIkhQ7pIikoYgchJlJMlL2CsiwQESRFjFVUVY2eTreGvdIrVKQoc/LCoTR34xI6YkjEDmILsUuEkIhBYbQh9x6lFNY58jyn2q3Q29sdvXKeUDeMhnNkzuKc+/9miQEJEYIiBkWKQowJrS1F2UMZaLqG'
  107. +'wdyQkEBXbYvSmsxlTCcTRntHaGNRktEGTdNZmtbTVIYuWJRodMwofYnPMmIXKfMC73NEwDZNAwiZz6jrhsl0wt7RXnzq09V9gi+QYJAYiLsdFkMRRqSg2NnZxvuctg0UeY42GisiOJ+xtr6GNpZsc0yd'
  108. +'ZiwPTrJ1Y4pMLKItyQYkdoxnsCccI7UQusCVq6sM+kOKvCClFO1kOmkRaNuOvHAICa9KvvTYt+n3ehQ+wxiFAmISYgx0XUeXIl1oqKqasuwhCEePHHrMfvj0B79w6NABlo4vIUkQpVFKYZRCK0FixDlN'
  109. +'TAGtQTuH9Za+yxARHj98lt26YXs6oZrceUB97/svSVnOsTWbEWLCOU9oW0QEazTI3YBnWQaiCBJJkij7PbS1hNBhnMeqiGoa7KDsMZtt8/OXf0Z/OMQ5z2g0wjmL05rJeMxkvMXcYHD3WkgEIh//5Cco'
  110. +'ypyN8YxBz6GUZnZnhs19fmlhfnTGW8v8YI4jR+5h//795LmnyDKauqbarSh8QUwBZTRkmkOHD9KklvHVTVyZsXx0CVt1qO++8IPl06fPXN7eqTCZp98bUPgcZy1GG5QSDAanLIGIaCFZoU4tySRubawx'
  111. +'WBiweXudyfU7n7dCd/X1Ny6Or/3n2kLZ6yMIEtP//hdKgaRESglBgeJuORiFKBCVUEqRuYyHzzz06n8BRSHeGj7kL7cAAAAASUVORK5CYII='
  112. +'); position: absolute; top:3px; left:6px; margin:0; padding:0; width:20px; height:25px}'
  113. +' .svgSaveFile {background: url(data:image/svg+xml;base64,'
  114. +'iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAYAAAAxFw7TAAAABHNCSVQICAgIfAhkiAAABYZJREFUOI11lEtsXGcBhb//ded178zYY8exYzs4jzaJgYBAwtBiS6GNgAiUKqCCSkPKAkWCBRUPVULqokgV'
  115. +'hSLBphK7iEWzjlqKKloJFhEqRVXrSKSOnEcdh9gk9tgzvjNz7/0fLLxBgpz9+XTOWRzBA3TmuZOnQqV4vZPcp8gKKsR47wgh4IXleHLiN480z7xw5uxC5799+kHAu+oOwxNlZh6NyHGUgkdWc6Jqk3sf'
  116. +'wPKVRZbfu/4/vgcCQRBkQGgQsoMMbVTkkKUCDCCHEH74/wMvXLgorHVDq6t3vHeeT4pH81f8s7EPOdYGrNkhBId0ClyO9Rbhh8rTyUzj+Z//UkzunwjGmO4zz3w7CIA/vHopBtE1poQSMDLU5J/3/87F'
  117. +'jRc5tFAhkxskoUxZl1C1FstXtnlk5yzT9tNUKzU2222OPHzka0mS/FH/5a/viQDfLIJkYC1Zv8f41BR37TXseoHzEif6eKeRoYK0Euc9AUGtXmdkeIy4ORquLl17zXun9crtm1JI+fvm6F56/T4rt27y'
  118. +'/j8usy1uUd6jsT1JpiIGWiJlD1WAKXbIBxmHjz/EoF+Q265wtnDOOXSnu41SSu6bmaE36PHa65egyIjGBkSTNULwSGHwLhA0hBBwAUCS9noktQb37m/gAwRAF87iCSipmJ39BL/+1csklRLv377M767+'
  119. +'jJorMbCOqtEEBVZD7gNBKbIsZ6hhiKII5yzOOXR7o4M2BkTEZrtLNSpTZNDp9OnmXXInCcGD8BQa8J7CeQqX47wliICQkrwo1Nxnju7TxlRRWgvnwCjFyuptOu4uS6V3UAr6LiVSEApAC5yD4DXL5m8c'
  120. +'2vgUwgiEMlhn6XbTKf2lE/N7FxevSqMjtrodLr59gcX7f6Y+26EyagmdjKhsyEwgFxaRQ2tS0l5d4sU3fsgMn+f5cy+jlSZN01jmeZpEcYQPFoLj7BPnOHpglnKoEVcSrIRC5+Rih6zoYfNAVGrSrOzh'
  121. +'yMxRXvjBSxijkFowGPSRW9ubH4urJQq/m2S8Oc035p4mXfV01wRCxwxETprnSFmlIluItMn1d9Y5PfckSbmBEIJKuUKapshOZxCSpAHW0mo28M5ybHKO8yd/AWsJ+VoVVdQx0iDzKsW9KpcvXeHcwk/5'
  122. +'wr4zKGFw3hHXGwxyh+xnBaVyDaMNeX9Aa2QEawOfe+gxvjv/E4oVTf+ORGYt7EaVlcUNnpo/z+OzT9GsD+ODp1KpUKvV8IDs9fu4IkdpxSDLsM4yPjGORPPFA4/z5ZmnWVs08O/9XHs3Y27663znsz+i'
  123. +'Xmqy3dlCK4N3npKJUEKiQwiUqrv9PbC+vs7w8BD1oToSyfdPPUstEVx44xVOLTzJ+RPP0SyN0t5q472n3WkjpCFJYkIIXg+yPsF71tbXqTcaNBoN2u027c0NGvWEuBbz1WPfYrp2kKnRQ4Q+rG58RKlU'
  124. +'xju4cfMWrVaLWqXM8HDzmJ7ZP3V8YmKcPWNjIAQIiRACLSTgcLaglexh/uNfwQdACMqVClIbhBAsLMxT2IJs0Ofe3Y+mdJFlL924tkyaDSgKi9IGQsD7gFESIQBvkVIAAhcCHo8yu0AXAkpptIJeL/2x'
  125. +'lsDShx/ypzffpFytonTESKuFUhIjJd2tbTrb28RxDR88PgQyX3Di5GMk9YStzhaVuIKSkk67jZZCrhw+ODP9lpBMjI2zd2ycOI6pVsuUoohet0ua9khqCdZZUAJhBJOT+3DCcWP1OnXV5OEDhwndFD3o'
  126. +'p98bOXj4rdNPnCZO6rRao9SqVSKlMdogZEAiiWQJhyVI8AYKYfHSY4UjHooxQqNN9FsthHj36tIH9NMdguuzufEvRAAhBAAh7F5W8J6wOyMuOIIEoQQOh5SSQdpnanzq1f8AocWaTq24aSIAAAAASUVORK5CYII='
  127. +'); position: absolute; top:3px; left:30px; margin:0; padding:0; width:20px; height:25px}'
  128. +'</style>'
  129.  
  130. // Основное окно
  131. +'<div id="unitInfo" class="calcTop" style="left:10px"><div>'
  132. +'<table id="unitInfoCal" cellpadding=2>'
  133. +'<tr><th class="scriptIks_cur" title="Переместить"><b><h1>ТОП-1</h1></b></th></tr>'
  134. +'<tr><td style="border-top:none"><table cellpadding=2>'
  135. +'<tr><td style="border-top:none">Зарплата одного сотрудника</td> <td style="border-top:none"><font id="employee_salary">0</font>'
  136. +'<font id="color_salary" title="Процентов от средней по городу"> (<font id="wage_percentage_salary">0</font> %)</font></td></tr>'
  137. +'<tr><td>Уровень квалификации сотрудников</td> <td><font id="employee_level">0</font> <font title="требуется">(~<font id="employee_level_required">0</font>)</font></td></tr>'
  138. +'<tr><td>Загрузка топ-1</td> <td id="percent_load_top1_"><font id="percent_load_top1">0</font> %</td></tr>'
  139. +'<tr><td>Максимальная квалификация сотрудников для полной загрузки ТОП-1</td> <td id="employee_level_maximum">0</td></tr>'
  140. +'<tr><td>Максимальное количество сотрудников при данной их квалификации</td> <td>'
  141. +'<font id="maximum_workers" title="100 %">0</font><font id="maximum_workers_"><hr><font id="maximum_workers_1">0</font></font></td></tr>'
  142. +'<tr><th colspan="2"><b><h1>Оборудование</h1></b></th></tr>'
  143. +'<tr><td style="border-top:none">Качество</td> <td id="equipment_quality" style="border-top:none">0</td></tr>'
  144. +'<tr><td>Максимальное качество при данной квалификации сотрудников</td> <td id="equipment_quality_max">0</td></tr>'
  145. +'<tr name="technology"><td>Минимальное качество по технологии</td> <td id="equipment_quality_technology">0</td></tr>'
  146. +'<tr name="office"><td>Управленческая мощность офиса</td> <td><font id="office_control_power">0</font></td></tr>'
  147. +'<tr><th colspan="2"><b><h1>ТОП-3</h1></b></th></tr>'
  148. +'<tr><td style="border-top:none">Суммарное количество подчинённых по профильной квалификации</td> <td id="labor_summary" style="border-top:none">0</td></tr>'
  149. +'<tr><td>Предельная нагрузка по квалификации</td> <td id="labor_summary"><font id="labor_summary_max">0</font><hr><font id="labor_summary_max1" title="На следующем уровне квалификации">0</font></td></tr>'
  150. +'<tr><td>Загрузка топ-3</td> <td><font id="overload_top3">0</font> %</td></tr>'
  151. +'<tr name="labor_summary_plus"><td>Можно еще нанять в отрасле</td> <td id="labor_summary_plus" style="color:green">0</td></tr>'
  152. +'<tr name="labor_summary_mimus"><td>Перебор рабочих в отрасле</td> <td id="labor_summary_mimus" style="color:red">0</td></tr>'
  153.  
  154. +'<tr name="customers"><th colspan="2"><b><h1>Посещаемость</h1></b></th></tr>'
  155. +'<tr name="customers"><td style="border-top:none">Количество посетителей</td> <td id="customers_count" style="border-top:none">0</td></tr>'
  156. +'<tr name="customers"><td>Максимально по персоналу</td> <td id="customers_max">0</td></tr>'
  157. +'<tr name="customers"><td>Процент посещаемости</td> <td><font id="customers_percent">0</font> %</td></tr>'
  158. +'</table></td></tr>'
  159. +'</table>'
  160. +'<div id="unitInfoNews" class="svgNews scriptIks_cur" title="Обновить кэш сервера"></div>'
  161. +'<div id="calcToBloc" class="svgCalculator scriptIks_cur" title="Калькулятор"></div>'
  162. +'<div id="calSettings_" class="svgSettings scriptIks_cur" title="Настройки"></div>'
  163. +'<div id="unitInfoBloc" style="position: absolute; margin:0; padding:0; display:none; width:100%; height:100%; top:0; background: #e1e1e1; opacity: 0.7; border-radius:8px; -webkit-border-radius:8px; -moz-border-radius:8px; -khtml-border-radius:10px">'
  164. +'<div style="position: absolute; border: 2px solid #b4b4b4; background:#708090; width:10px; height:10px; border-radius:5px; -webkit-border-radius:5px; -moz-border-radius:5px; -khtml-border-radius:7px">'
  165. +'</div></div>'
  166. +'</div></div>'
  167.  
  168. // Окно калькулятора
  169. +'<div id="calcTop1" class="calcTop" style="right:10px"><div>'
  170. +'<table style="width: 100%">'
  171. +'<tr><th style="cursor: move" title="Переместить"><b><h1>Калькулятор</h1></b></th></tr>'
  172. +'<tr><td style="border-top:none"><table>'
  173. +'<tr><td style="border-top:none">Квалификация ТОПа</td> <td style="border-top:none"><input id="calcTopKv" type="text" size="4" class="scriptIks_imp"></td></tr>'
  174. +'<tr name="technology"><td>Технология</td> <td style="border-top:none"><input id="calcTopTehImp" type="text" size="4" class="scriptIks_imp"></td></tr>'
  175. +'<tr><td>Количество работников</td> <td style="border-top:none"><input id="calcTopKolRab" type="text" size="4" class="scriptIks_imp"></td></tr>'
  176. +'<tr><td>Квалификация работников</td> <td style="border-top:none"><input id="calcTopKvRab" type="text" size="4" class="scriptIks_imp"></td></tr>'
  177. +'<tr><td align="center" colspan="2" style="border-top:none"><input id="calcButton" type="button" value="Расчитать" class="scriptIks_cur scriptIks_but"></td></tr>'
  178. +'<tr name="technology"><td>Максимальная технология по данной квалификации</td> <td id="calcTopTeh"></td></tr>'
  179. +'<tr><td>Максимальное количество персонала при данной квалификации</td> <td id="calcTopRabMax"></td></tr>'
  180. +'<tr><td style="border-top:none"><input id="calcTopRab_MaxImp" value="120" type="text" size="4" class="scriptIks_imp" title="Укажите процент на какой расчитать">'
  181. +' %</td> <td id="calcTopRab_Max"></td></tr>'
  182. +'<tr><td>Максимальная квалификация персонала при данном количестве</td> <td id="calcTopRab"></td></tr>'
  183. +'<tr name="technology"><td>Минимальная квалификация по данной технолигии</td> <td id="calcTopRabTeh"></td></tr>'
  184. +'<tr><td>Максимальное качество оборудования при данной квалификации персонала</td> <td id="calcTopOb"></td></tr>'
  185. +'<tr name="technology"><td>Качество оборудования по данной технолигии</td> <td id="calcTopObTeh"></td></tr>'
  186. +'<tr><td>Максимальное количество<br>персонала в отрасли</td> <td id="calcTop3"></td></tr>'
  187. +'</table></td></tr>'
  188. +'</table>'
  189. +'<div class="svgExit scriptIks_cur" id="calcExitBloc" title="Закрыть"></div>'
  190. +'</div></div>'
  191.  
  192. // Настройки
  193. +'<div id="calSettings" class="calcTop"><div>'
  194. +'<table style="width: 100%">'
  195. +'<tr><th><b><h1>Настройки</h1></b></th></tr>'
  196. +'<tr><td style="border-top:none"><table style="width: 100%">'
  197. +'<tr><td style="border-top:none">Только на стартовой, или на всех страницах</td> <td style="border-top:none"><input id="unitShow" type="checkbox" checked="checked"/></td></tr>'
  198. +'<tr><td>Фон юнита</td> <td><input id="unitFon" type="checkbox" checked="checked"/></td></tr>'
  199. +'<tr><td>Перевод</td> <td><input id="unitTranslation" type="checkbox"/></td></tr>'
  200. +'</table></td></tr>'
  201. +'<tr name="translation" style="display:none"><td style="border-top:none"> <div style="margin:0; padding:0; overflow:auto; max-height:250px"></div> </td></tr>'
  202. +'<tr><td align="center" style="border-top:none; padding:5px 0"><input id="calcButtonApplySettings" type="button" value="Применить" class="scriptIks_cur scriptIks_but"></td></tr>'
  203. +'</table></td></tr>'
  204. +'</table>'
  205. +'<div class="svgSaveFile scriptIks_cur" id="calcSaveFileSettings" title="Сохранить в файл настроек"></div>'
  206. +'<div class="svgOpenFile scriptIks_cur" id="calcOpenFileSettings" title="Загрузить файл настроек"></div><input type="file" id="FileToLoadSettings" style="display:none"/>'
  207. +'<div class="svgExit scriptIks_cur" id="calcExitSettings" title="Закрыть"></div>'
  208. +'</div></div>');
  209.  
  210.  
  211. var setInfoUnut = function(){
  212. var type = unitWork.type, // Тип юнита
  213. technology_level = parseInt( unitWork.unit.technology_level )|0, // Технология
  214. labor_qty = parseInt(unitWork.unit.labor_qty)|parseInt(unitWork.unit.employee_count)|0, // численость персонала
  215. competence_value = parseInt( unitWork.unit.competence_value )|0, // квалификация ТОПа
  216. labor_summary = parseFloat( unitWork.forecast.labor_summary )|parseFloat( unitWork.unit.all_staff )|0, // Суммарное количество подчинённых по профильной квалификации
  217. pers = unitWork.calcPersonalTop3(competence_value, (type == 'orchard' ? 'farm' : type)), // вычисляет максимальное кол-во работающих на предприятиях отрасли для заданной квалификации игрока (топ-3)
  218. pers_next = unitWork.calcPersonalTop3(competence_value+1, (type == 'orchard' ? 'farm' : type)), // вычисляет максимальное кол-во работающих на предприятиях отрасли для заданной квалификации игрока (топ-3) +1
  219. employee_level = parseFloat( unitWork.unit.employee_level ), // квалификация персонала
  220. employee_level_required = parseFloat( unitWork.unit.employee_level_required ), // Требкемая квалификация персонала
  221. employee_level_maximum = unitWork.calcQualTop1(competence_value, labor_qty, type).toFixed(2), // Вычисляет максимальное квалификацию работающих при заданных их численности и квалификации игрока
  222. emp_count = unitWork.calcPersonalTop1( competence_value, employee_level, type ), // Вычисляет максимальное кол-во работающих с заданной квалификацией на предприятиии для заданной квалификации игрока (топ-1)
  223. customers = parseInt( unitWork.unit.customers )|parseInt( unitWork.unit.customers_count )|0; // численость клиентов
  224.  
  225. // топ-3
  226. $('#labor_summary').html( labor_summary );
  227. $('#calcTop3').html(pers);
  228. unitWork.overload = unitWork.procVal(pers, labor_summary);
  229. if( unitWork.overload < 51 ) {
  230. unitWork.pP = 144.4;
  231. $('#calcTopRab_MaxImp').val( unitWork.pP );
  232. }
  233. $('#labor_summary_max').html( pers ).css( 'color', (unitWork.overload <= 100?'green':unitWork.overload < 102?'blue':'red' ) );
  234. $('#labor_summary_max1').html( pers_next );
  235. $('#overload_top3').html( unitWork.overload );
  236. if( unitWork.overload<100 ){
  237. $('#labor_summary_plus').html( (pers-labor_summary) );
  238. $('tr[name="labor_summary_mimus"]').css( 'display', 'none' );
  239. } else
  240. if( unitWork.overload>100 ){
  241. $('#labor_summary_mimus').html( (labor_summary-pers) );
  242. $('tr[name="labor_summary_plus"]').css( 'display', 'none' );
  243. } else {
  244. $('tr[name="labor_summary_mimus"]').css( 'display', 'none' );
  245. $('tr[name="labor_summary_plus"]').css( 'display', 'none' );
  246. }
  247.  
  248. // Зарплата
  249. $('#employee_salary').html( unitWork.unit.employee_salary );
  250. var procZrp = unitWork.procVal( (parseFloat(unitWork.unit.city_salary)*parseFloat(unitWork.unit.unit_class_salary_koeff)), parseFloat(unitWork.unit.employee_salary) );
  251. $('#wage_percentage_salary').html( procZrp );
  252. $('#color_salary').css( 'color', (procZrp < 90 ? 'green' : procZrp > 110 ? 'red' : 'blue' ) );
  253.  
  254. // Уровень квалификации сотрудников
  255. $('#employee_level').html( employee_level ).css( 'color', (employee_level < employee_level_required ? 'red' : 'green' ) );
  256. // Требуемая квалификации сотрудников
  257. $('#employee_level_required').html( employee_level_required );
  258. // Максимально допустимая квалификации сотрудников для заданной квалификации игрока (топ-1)
  259. $('#employee_level_maximum').html( employee_level_maximum );
  260.  
  261. // процент загрузки по топ-1
  262. var percent_load_top1 = unitWork.procVal(emp_count, labor_qty);
  263. $('#percent_load_top1').html( percent_load_top1 );
  264. $('#percent_load_top1_').css( 'color', ( percent_load_top1 <= 100 ? 'green':percent_load_top1 > unitWork.pP ? 'red' : 'blue' ) );
  265.  
  266. //Максимальное количество сотрудников при данной их квалификации
  267. var maximum_workers_1;
  268. $('#maximum_workers').html(emp_count);
  269. if( unitWork.overload < 81 ) {
  270. maximum_workers_1 = Math.floor(emp_count/100*unitWork.pP);
  271. $('#maximum_workers_1').html( maximum_workers_1 );
  272. $('#maximum_workers_').attr('title', unitWork.pP+' %');
  273. } else $('#maximum_workers_').css( 'display', 'none' );
  274.  
  275. // Технология
  276. if( technology_level > 0 ){
  277. $('#calcTopTehImp').val(technology_level);
  278. $('#calcTopTeh').html(Math.floor( unitWork.calcTechMax(competence_value) ));
  279. } else $('tr[name="technology"]').css('display', 'none');
  280.  
  281. // Качество оборудования
  282. var equipment_quality = parseFloat( unitWork.unit.equipment_quality ),
  283. equipment_quality_max = unitWork.calcEqQualMax( employee_level ), // Максимальное при данной квалификации сотрудников
  284. equipment_quality_technology = parseFloat( unitWork.unit.equipment_quality_required ); // Минимальное качество оборудования по технологии
  285. $('#equipment_quality').html( equipment_quality ).css( 'color', (equipment_quality > equipment_quality_max ? 'red' : 'green' ) );
  286. $('#equipment_quality_max').html( equipment_quality_max );
  287. $('#equipment_quality_technology').html( equipment_quality_technology );
  288.  
  289. // Управленческая мощность офиса
  290. if( type == 'office' ){
  291. var equipment_count = parseInt( unitWork.unit.equipment_count )|0,
  292. office_control_power = Math.min( equipment_count, labor_qty)*1.03^(equipment_quality-1)*1.4^(employee_level-1);
  293. $('#office_control_power').html( office_control_power );
  294. } else $('tr[name="office"]').css('display', 'none');
  295.  
  296. //-----------
  297. $('#calcTopKv').val( competence_value );
  298. $('#calcTopKolRab').val( labor_qty );
  299. $('#calcTopKvRab').val( employee_level );
  300. $('#calcTopRab').html( employee_level_maximum );
  301. $('#calcTopRabMax').html( emp_count );
  302. $('#calcTopRab_Max').html( maximum_workers_1 );
  303.  
  304. $('#calcTopOb').html( equipment_quality_max );
  305. },
  306. // Локальное хранилище
  307. coordinatesCalc = {
  308. 'set': function(){
  309. window.localStorage.setItem('unitInfoStorage', JSON.stringify( unitWork.coordinates ));
  310. },
  311. 'get': function(){
  312. if( window.localStorage.getItem('unitInfoStorage') ) return ( JSON.parse( window.localStorage.getItem('unitInfoStorage') ) );
  313. else return unitWork.coordinates;
  314. },
  315. 'resizHeight': function(id){
  316. $(id).css({'height':'auto'});
  317. }
  318. },
  319. // Изменение окна информации о юните
  320. unutMove = {
  321. 'InfoUnut': function(){
  322. if(!unitWork.coordinates.unitInfo){
  323. unitWork.coordinates.unitInfo = {};
  324. unitWork.coordinates.unitInfo.top = $('#unitInfo').css('top');
  325. unitWork.coordinates.unitInfo.left = $('#unitInfo').css('left');
  326. unitWork.coordinates.unitInfo.width = $('#unitInfo').css('width');
  327. }
  328. //-----------
  329. switch(unitWork.url[6]) {
  330. case undefined:
  331. $( '#unitInfo' ).resizable({'minWidth': 250, 'maxWidth': 450, 'handles':'e'});
  332. $( '#unitInfo .ui-resizable-handle' ).css({'background-color':'white', 'width':'1px', 'height':'95%', 'top':'2.5%'}).mouseup( function() {
  333. $('#unitInfo').css({'height':'auto'});
  334. unitWork.coordinates.unitInfo.width = $('#unitInfo').css('width');
  335. coordinatesCalc.set();
  336. });
  337. break;
  338. default:
  339. $('#calcToBloc').css('display', 'none');
  340. $('#calSettings_').css('display', 'none');
  341. $('#unitInfoNews').css('display', 'none');
  342. $('#unitInfoCal th.scriptIks_cur').removeAttr('title');
  343. break;
  344. }
  345. //-----------
  346. $('#unitInfo').css({
  347. 'z-index':unitWork.zIndex+1,
  348. 'display': 'block',
  349. 'top': unitWork.coordinates.unitInfo.top,
  350. 'left': unitWork.coordinates.unitInfo.left,
  351. 'width': unitWork.coordinates.unitInfo.width,
  352. 'height':'auto'
  353. }).draggable({
  354. cancel: '#unitInfo table table',
  355. containment: 'body',
  356. cursor: 'move',
  357. snap: 'body'
  358. });
  359. $('#unitInfo h1:nth-child(1)').mouseup( function(){
  360. unitWork.coordinates.unitInfo.top = $('#unitInfo').css('top');
  361. unitWork.coordinates.unitInfo.left = $('#unitInfo').css('left');
  362. coordinatesCalc.set();
  363. });
  364.  
  365. //------
  366. $('#calcToBloc').click(function(){
  367. $('#calcTop1').css('display', 'block');
  368. $(this).css('display', 'none');
  369. });
  370. this.Calculator();
  371. //------
  372. $('#calSettings_').click(function(){
  373. $('#calSettings_').css('display', 'none');
  374. $('#calSettings').css('display', 'block');
  375. $('#calcToBloc').css('left', '8px');
  376. });
  377. this.Settings.start();
  378. },
  379. 'Calculator': function(){
  380. if(!unitWork.coordinates.calcTop1){
  381. unitWork.coordinates.calcTop1 = {};
  382. unitWork.coordinates.calcTop1.top = $('#calcTop1').css('top');
  383. unitWork.coordinates.calcTop1.left = $('#calcTop1').css('left');
  384. unitWork.coordinates.calcTop1.width = $('#calcTop1').css('width');
  385. }
  386. //-----------
  387. $('#calcTop1').css({
  388. 'z-index':unitWork.zIndex+1+$('#unitInfo *').length,
  389. 'top': unitWork.coordinates.calcTop1.top,
  390. 'left': unitWork.coordinates.calcTop1.left,
  391. 'height':'auto'
  392. })
  393. .draggable({
  394. cancel: '#calcTop1 table table',
  395. containment: 'body',
  396. cursor: 'move',
  397. snap: 'body'
  398. });
  399. $('#calcTop1 h1:nth-child(1)').mouseup( function(){
  400. unitWork.coordinates.calcTop1.top = $('#calcTop1').css('top');
  401. unitWork.coordinates.calcTop1.left = $('#calcTop1').css('left');
  402. coordinatesCalc.set();
  403. });
  404.  
  405. var calcTopGet = function()
  406. {
  407. var p = false;
  408. if($('#calcTopTeh').html() != '') p = true;
  409. // Максимум рабов ТОП-3
  410. var kv = $('#calcTopKv').val();
  411. var type_1 = unitWork.type;
  412. if ( unitWork.type == 'orchard' ) type_1 = 'farm';
  413. $('#calcTop3').html( unitWork.calcPersonalTop3(kv, type_1) );
  414. // Максимальная техна
  415. if(p) $('#calcTopTeh').html( Math.floor( unitWork.calcTechMax(kv) ) );
  416. // Максимальное кол. рабов ТОП-1
  417. var kvp = $('#calcTopKvRab').val();
  418. var emp_count = unitWork.calcPersonalTop1(kv, kvp, unitWork.type);
  419. $('#calcTopRabMax').html(emp_count);
  420. var kvpTeh = unitWork.kvTeh[$('#calcTopTehImp').val()];
  421. $('#calcTopRabTeh').html(kvpTeh);
  422. //-----
  423. var maxRab = $('#calcTopRab_MaxImp').val();
  424. $('#calcTopRab_Max').html( Math.floor(emp_count/100*maxRab) );
  425. // Макс. квала рабов
  426. unitWork.cur_pers = $('#calcTopKolRab').val();
  427. $('#calcTopRab').html( unitWork.calcQualTop1( kv, unitWork.cur_pers, unitWork.type ).toFixed(2) );
  428. // Макс. оборудование
  429. var max_eq = unitWork.calcEqQualMax(kvp);
  430. $('#calcTopOb').html(max_eq);
  431. if(p) $('#calcTopObTeh').html( unitWork.calcEqQualMax( kvpTeh ) );
  432. else $('#calcTopObTeh').html('');
  433. };
  434. calcTopGet();
  435. $('#calcButton').click(calcTopGet);
  436.  
  437. //------
  438. $('#calcExitBloc').click(function(){
  439. $('#calcTop1').css('display', 'none');
  440. $('#calcToBloc').css('display', 'block');
  441. });
  442. },
  443. 'Settings': {
  444. 'apply': function(){
  445. unitWork.coordinates.fonBody = $('#unitFon').prop('checked').toString();
  446. if(unitWork.coordinates.fonBody == 'false') $('body').removeClass( $('body').attr('class') );
  447. unitWork.coordinates.unitShow = $('#unitShow').prop('checked').toString();
  448. unitWork.coordinates.unitTranslation = $('#unitTranslation').prop('checked').toString();
  449.  
  450. unitWork.coordinates.translation = {};
  451. $('#calSettings tr[name="th"] input').each(function(){
  452. if( $(this).val()!='' ){
  453. if(!unitWork.coordinates.translation.th) unitWork.coordinates.translation.th = { 'value':[], 'new':[] };
  454. unitWork.coordinates.translation.th.value.push( $(this).parent().parent().find('td:nth-child(1)').text() );
  455. unitWork.coordinates.translation.th.new.push( $(this).val() );
  456. }
  457. });
  458. $('#calSettings tr[name="td"] input').each(function(){
  459. if( $(this).val()!='' ){
  460. if(!unitWork.coordinates.translation.td) unitWork.coordinates.translation.td = { 'value':[], 'new':[] };
  461. unitWork.coordinates.translation.td.value.push( $(this).parent().parent().find('td:nth-child(1)').text() );
  462. unitWork.coordinates.translation.td.new.push( $(this).val() );
  463. }
  464. });
  465. $('#calSettings table[name="button"] input').each(function(){
  466. if( $(this).val()!='' ){
  467. if(!unitWork.coordinates.translation.button) unitWork.coordinates.translation.button = { 'value':[], 'new':[] };
  468. unitWork.coordinates.translation.button.value.push( $(this).parent().parent().find('td:nth-child(1)').text() );
  469. unitWork.coordinates.translation.button.new.push( $(this).val() );
  470. }
  471. });
  472. $('#calSettings table[name="title"] input').each(function(){
  473. if( $(this).val()!='' ){
  474. if(!unitWork.coordinates.translation.title) unitWork.coordinates.translation.title = { 'value':[], 'new':[] };
  475. unitWork.coordinates.translation.title.value.push( $(this).parent().parent().find('td:nth-child(1)').text() );
  476. unitWork.coordinates.translation.title.new.push( $(this).val() );
  477. }
  478. });
  479.  
  480. coordinatesCalc.set();
  481. },
  482. 'saveFile': function(){
  483. var textToWrite = JSON.stringify( unitWork.coordinates ),
  484. textFileAsBlob = new Blob([textToWrite], {type:'text/plain'}),
  485. fileNameToSaveAs ="Settings Virtonomica.dat",
  486. destroyClickedElement = function(event){ document.body.removeChild(event.target); },
  487. downloadLink = document.createElement("a");
  488. downloadLink.download = fileNameToSaveAs;
  489. downloadLink.innerHTML = "Download File";
  490. if (window.webkitURL != null) { downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob); }
  491. else {
  492. downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
  493. downloadLink.onclick = destroyClickedElement;
  494. downloadLink.style.display = "none";
  495. document.body.appendChild(downloadLink);
  496. }
  497. downloadLink.click();
  498. return;
  499. },
  500. 'openFile': function(){
  501. $('#FileToLoadSettings').click().change(function(){
  502. var fileToLoad = document.getElementById("FileToLoadSettings").files[0],
  503. fileReader = new FileReader();
  504. fileReader.onload = function(fileLoadedEvent){
  505. var textFromFileLoaded = fileLoadedEvent.target.result;
  506. unitWork.coordinates = JSON.parse( textFromFileLoaded );
  507. coordinatesCalc.set();
  508. location.reload();
  509. };
  510. fileReader.readAsText(fileToLoad, "UTF-8");
  511. });
  512. return;
  513. },
  514. 'translationStart': function(){
  515. var str = '<table style="width:100%">',
  516. title = [],
  517. pTitle = function(val){
  518. for (var key in title)
  519. if(title[key]==val) return false;
  520. return true;
  521. };
  522. // основное окно
  523. str += '<tr><th>Unit</th></tr>';
  524. str += '<tr><td style="border-top:none"><table name="unitInfo" style="width:100%">';
  525. $('#unitInfo table th').each(function(){
  526. str += '<tr name="th"><td>' + ( $(this).text() ) + '</td> <td><input type="text" class="scriptIks_imp"/></td></tr>';
  527. });
  528. $('#unitInfo table table td:nth-child(1)').each(function(){
  529. str += '<tr name="td"><td>' + $(this).text() + '</td> <td><input type="text" class="scriptIks_imp"/></td></tr>';
  530. });
  531. $('#unitInfo [title]').each(function(){
  532. if($(this).attr('title').indexOf('%') < 0){
  533. if( pTitle($(this).attr('title')) ) title.push($(this).attr('title'));
  534. }
  535. });
  536. str += '</table></td></tr>';
  537. // калькулятор
  538. str += '<tr><th>Calculator</th></tr>';
  539. str += '<tr><td style="border-top:none"><table name="calcTop1" style="width:100%">';
  540. $('#calcTop1 table th').each(function(){
  541. str += '<tr name="th"><td>' + $(this).text() + '</td> <td><input type="text" class="scriptIks_imp"/></td></tr>';
  542. });
  543. $('#calcTop1 table table td:nth-child(1)').each(function(){
  544. if( $(this).html().indexOf('<') < 0 ) str += '<tr name="td"><td>' + $(this).text() + '</td> <td><input type="text" class="scriptIks_imp"/></td></tr>';
  545. });
  546. $('#calcTop1 [title]').each(function(){
  547. if( pTitle($(this).attr('title')) ) title.push($(this).attr('title'));
  548. });
  549. str += '</table></td></tr>';
  550. // настройки
  551. str += '<tr><th>Settings</th></tr>';
  552. str += '<tr><td style="border-top:none"><table name="calSettings" style="width:100%">';
  553. $('#calSettings table th').each(function(){
  554. str += '<tr name="th"><td>' + $(this).text() + '</td> <td><input type="text" class="scriptIks_imp"/></td></tr>';
  555. });
  556. $('#calSettings table table td:nth-child(1)').each(function(){
  557. str += '<tr name="td"><td>' + $(this).text() + '</td> <td><input type="text" class="scriptIks_imp"/></td></tr>';
  558. });
  559. $('#calSettings [title]').each(function(){
  560. if( pTitle($(this).attr('title')) ) title.push($(this).attr('title'));
  561. });
  562. str += '</table></td></tr>';
  563. // title
  564. str += '<tr><th>Button</th></tr>';
  565. str += '<tr><td style="border-top:none"><table name="button" style="width:100%">';
  566. str += '<tr><td>Расчитать</td> <td><input type="text" class="scriptIks_imp"/></td></tr>';
  567. str += '<tr><td>Применить</td> <td><input type="text" class="scriptIks_imp"/></td></tr>';
  568. str += '</table></td></tr>';
  569. // title
  570. str += '<tr><th>Title</th></tr>';
  571. str += '<tr><td style="border-top:none"><table name="title" style="width:100%">';
  572. for (var key in title)
  573. str += '<tr><td>' + title[key] + '</td> <td><input type="text" class="scriptIks_imp"/></td></tr>';
  574. str += '</table></td></tr>';
  575. str += '</table>';
  576.  
  577. // Если есть перевод применим
  578. if( unitWork.coordinates.unitTranslation == 'true' ){
  579. if(unitWork.coordinates.translation){
  580. for (var key in unitWork.coordinates.translation){
  581. for (var key_ in unitWork.coordinates.translation[key]['value']){
  582. if(key == 'td'){
  583. $('#unitInfo table table td:nth-child(1):contains(' + unitWork.coordinates.translation.td.value[key_] + '),'
  584. +' #calcTop1 table table td:nth-child(1):contains(' + unitWork.coordinates.translation.td.value[key_] + '),'
  585. +' #calSettings table table td:nth-child(1):contains(' + unitWork.coordinates.translation.td.value[key_] + ')').text(unitWork.coordinates.translation.td.new[key_]);
  586. } else if(key == 'th'){
  587. $('#unitInfo table th:nth-child(1):contains(' + unitWork.coordinates.translation.th.value[key_] + '),'
  588. +' #calcTop1 table th:nth-child(1):contains(' + unitWork.coordinates.translation.th.value[key_] + '),'
  589. +' #calSettings table th:nth-child(1):contains(' + unitWork.coordinates.translation.th.value[key_] + ')').find('h1').text(unitWork.coordinates.translation.th.new[key_]);
  590. } else if(key == 'button'){
  591. $('#calSettings input[type="button"][value=' + unitWork.coordinates.translation.button.value[key_] + '],'
  592. +' #calcTop1 input[type="button"][value=' + unitWork.coordinates.translation.button.value[key_] + ']').val(unitWork.coordinates.translation.button.new[key_]);
  593. } else if(key == 'title'){
  594. $('#unitInfo [title=' + unitWork.coordinates.translation.title.value[key_] + '],'
  595. +' #calcTop1 [title=' + unitWork.coordinates.translation.title.value[key_] + '],'
  596. +' #calSettings [title=' + unitWork.coordinates.translation.title.value[key_] + ']').attr('title', unitWork.coordinates.translation.title.new[key_]);
  597. }
  598. }
  599. }
  600. }
  601. }
  602. // ------
  603. $('#calSettings tr[name="translation"] div').append( str );
  604. if(unitWork.coordinates.translation){
  605. for (var key in unitWork.coordinates.translation){
  606. for (var key_ in unitWork.coordinates.translation[key]['value']){
  607. if(key == 'td'){
  608. $('#calSettings tr[name="td"] td:nth-child(1):contains(' + unitWork.coordinates.translation[key]['value'][key_] + ')').next().find('input').val(unitWork.coordinates.translation[key]['new'][key_]);
  609. } else if(key == 'th'){
  610. $('#calSettings tr[name="th"] td:nth-child(1):contains(' + unitWork.coordinates.translation[key]['value'][key_] + ')').next().find('input').val(unitWork.coordinates.translation[key]['new'][key_]);
  611. } else if(key == 'button'){
  612. $('#calSettings table[name="button"] td:nth-child(1):contains(' + unitWork.coordinates.translation[key]['value'][key_] + ')').next().find('input').val(unitWork.coordinates.translation[key]['new'][key_]);
  613. } else if(key == 'title'){
  614. $('#calSettings table[name="title"] td:nth-child(1):contains(' + unitWork.coordinates.translation[key]['value'][key_] + ')').next().find('input').val(unitWork.coordinates.translation[key]['new'][key_]);
  615. }
  616. }
  617. }
  618. }
  619. },
  620. 'translation': function(){
  621. if( $('#unitTranslation').prop('checked') ) $('#calSettings tr[name="translation"]').css({'display':'block'});
  622. else $('#calSettings tr[name="translation"]').css('display', 'none');
  623. $('#calSettings').css({
  624. 'width':'auto',
  625. 'height':'auto',
  626. 'top':($(window).height()/2-$('#calSettings').height()/2)+'px',
  627. 'left':($(window).width()/2-$('#calSettings').width()/2)+'px'
  628. });
  629. },
  630. 'start': function(){
  631. if( !unitWork.coordinates.fonBody ) unitWork.coordinates.fonBody = 'false';
  632. if( unitWork.coordinates.fonBody == 'false' ) $('#unitFon').removeAttr('checked');
  633. if( !unitWork.coordinates.unitShow ) unitWork.coordinates.unitShow = 'false';
  634. if( unitWork.coordinates.unitShow == 'false' ) $('#unitShow').removeAttr('checked');
  635. if( !unitWork.coordinates.unitTranslation ) unitWork.coordinates.unitTranslation = 'false';
  636. if( unitWork.coordinates.unitTranslation == 'true' ){
  637. $('#unitTranslation').attr('checked','checked');
  638. this.translation();
  639. }
  640. $('#calSettings').css({
  641. 'z-index':unitWork.zIndex+1+$('#unitInfo *').length+$('#calcTop1 *').length,
  642. 'top':($(window).height()/3-$('#calSettings').height()/2)+'px',
  643. 'left':($(window).width()/2-$('#calSettings').width()/2)+'px'
  644. });
  645. //------
  646. $('#calcExitSettings').click(function(){
  647. $('#calcToBloc').css('left', '33px');
  648. $('#calSettings').css('display', 'none');
  649. $('#calSettings_').css('display', 'block');
  650. });
  651. //------
  652. $('#calcButtonApplySettings').click( this.apply );
  653. $('#calcSaveFileSettings').click( this.saveFile );
  654. $('#calcOpenFileSettings').click( this.openFile );
  655. this.translationStart();
  656. $('#unitTranslation').change( this.translation );
  657. }
  658. }
  659. },
  660. // Обновить данные
  661. newCacheInfo = {
  662. 'animateLeft': function(n){
  663. var to = this;
  664. $('#unitInfoBloc div').animate({ left: "-="+(n*2) }, +(n*5), function() { to.animateRight(n); });
  665. },
  666. 'animateRight': function(n){
  667. var to = this;
  668. $('#unitInfoBloc div').animate({ left: "+="+(n*2) }, +(n*5), function() { to.animateLeft(n); });
  669. },
  670. 'get': function(){
  671. $('#unitInfoBloc').css({'display':'block'});
  672. var w = parseInt($('#unitInfo').css('width'))/4;
  673. $('#unitInfoBloc div').css({'top':(parseInt($('#unitInfo').css('height'))/2-10)+'px', 'left': w+'px'});
  674. this.animateRight(w);
  675. $.getJSON('/api/' + unitWork.url[1] + '/main/token', function(token){
  676. $.post('/api/' + unitWork.url[1] + '/main/unit/refresh', { 'id': unitWork.url[5], 'token': token }).success( function(){
  677. $.post('/api/' + unitWork.url[1] + '/main/unit/forecast', { 'id': unitWork.url[5] }).success( function(data_){
  678. unitWork.forecast = data_;
  679. $.post('/api/' + unitWork.url[1] + '/main/unit/summary', { 'id': unitWork.url[5] }).success( function(data){
  680. $('#unitInfoBloc div').stop();
  681. unitWork.unit = data;
  682. setInfoUnut();
  683. $('#unitInfoBloc').css({'display':'none'});
  684. });
  685. });
  686. });
  687. });
  688. },
  689. 'start': function(){
  690. var to = this;
  691. $('#unitInfoNews').click(function(){ to.get(); });
  692. }
  693. },
  694.  
  695. // Функции
  696. unitWork = {
  697. 'unit':{}, 'forecast':{}, 'zIndex':0, 'type':'', 'coordinates':{},
  698. 'pP': 120, 'cur_pers': '', 'overload': 0, 'mode': '',
  699. 'kvTeh': [1, 1, 1.74, 2.41, 3.03, 3.62, 4.19, 4.74, 5.28, 5.8,
  700. 6.31, 6.81, 7.3, 7.78, 8.26, 8.73, 9.19, 9.65, 10.1, 10.54,
  701. 10.99, 11.42, 11.86, 12.29, 12.71, 13.13, 13.55, 13.97, 14.38, 14.79,
  702. 15.19, 15.6, 16, 16.4, 16.8, 17.19, 17.58, 17.97, 18.36, 18.74, 19.13],
  703.  
  704. ///////////////////////////////////////////////////////////////////////////
  705. // q - квалификация игрока
  706. //вычисляет максимальное кол-во работающих на предприятиях отрасли для заданной квалификации игрока (топ-3)
  707. 'calcPersonalTop3': function( q, type) {
  708. return (2*q*q + 6*q)*this.getK(type, 3);
  709. },//end calcPersonalTop3()
  710.  
  711. ///////////////////////////////////////////////////////////////////////////
  712. // q - квалификация игрока
  713. // qp - квалификация персонала
  714. //вычисляет максимальное кол-во работающих с заданной квалификацией на предприятиии для заданной квалификации игрока (топ-1)
  715. 'calcPersonalTop1': function(q, qp, type) {
  716. if((this.mode=='Crocuta')&&(type=='office')){return Math.floor(14*q*q/Math.pow(1.4, qp)/4.15);}
  717. return Math.floor(0.2*this.getK(type, 1)*14*q*q/Math.pow(1.4, qp));
  718. },//end calcPersonalTop1()
  719.  
  720. ///////////////////////////////////////////////////////////////////////////
  721. // q - квалификация игрока
  722. // p - численность персонала
  723. //вычисляет максимальное квалификацию работающих при заданных их численности и квалификации игрока (обратна calcPersonalTop1())
  724. 'calcQualTop1': function(q, p, type) {
  725. if(p==0) return 0.00;
  726. if((this.mode=='Crocuta')&&(type=='office')){return Math.log(14/4.15*q*q/p)/Math.log(1.4);}
  727. return Math.log(0.2*14*this.getK(type, 1)*q*q/p)/Math.log(1.4);
  728. },//end calcQualTop1()
  729.  
  730. ///////////////////////////////////////////////////////////////////////////
  731. // qp - квалификация игрока
  732. //вычисляет максимальное качество оборудования/животных для заданной квалификации персонала
  733. 'calcEqQualMax': function( qp ) {
  734. return Math.floor(100*Math.pow(qp, 1.5))/100 ;
  735. },//end calcEqQualMax
  736.  
  737. ///////////////////////////////////////////////////////////////////////////
  738. // q - квалификация игрока
  739. //вычисляет максимальный уровень технологии для заданной квалификации игрока
  740. 'calcTechMax': function(q) {
  741. return Math.round(10*Math.pow(q/0.0064, 1/3))/10 ;
  742. },//end calcTechMax()
  743.  
  744. ///////////////////////////////////////////////////////////////////////////
  745. //возвращает к для расчётов нагрузки по типу
  746. 'getK': function (type, top) {
  747. var num = 0;
  748. switch(type) {
  749. case('shop'):
  750. case('restaurant'):
  751. case('lab'):
  752. num = 5;
  753. break;
  754. case('workshop'):
  755. num = (unitWork.url[1] == 'anna' ? 100 : 50);
  756. break;
  757. case('mill'):
  758. num = ( top == 3 ? (unitWork.url[1] == 'anna' ? 100 : 50) : (unitWork.url[1] == 'anna' ? 10 : 5) );
  759. break;
  760. case('sawmill'):
  761. num = ( top == 3 ? (unitWork.url[1] == 'anna' ? 100 : 50) : (unitWork.url[1] == 'anna' ? 25 : 12.5) );
  762. break;
  763. case('animalfarm'):
  764. num = 7.5;
  765. break;
  766. case('medicine'):
  767. case('fishingbase'):
  768. num = 12.5;
  769. break;
  770. case('farm'):
  771. num = 20;
  772. break;
  773. case('orchard'):
  774. num = ( top == 3 ? 15 : 18);
  775. break;
  776. case('mine'):
  777. num = (unitWork.url[1] == 'anna' ? 50 : 100);
  778. break;
  779. case('office'):
  780. case('it'):
  781. //if(mode=='Crocuta') return
  782. num = 1;
  783. break;
  784. case('service'):
  785. case 'service_light':
  786. case('educational'):
  787. num = 1.5;
  788. break;
  789. case('repair'):
  790. case('fuel'):
  791. num = 2.5;
  792. break;
  793. case('power'):
  794. num = 75;
  795. break;
  796. case('villa'):
  797. case('warehouse'):
  798. case('unknown'):
  799. num = 0;
  800. break;
  801. default:
  802. num = 0;
  803. }//end switch
  804. return num;
  805. },//end getType()
  806.  
  807. ///////////////////////////////////////////////////////////////////////////
  808. //возвращает процент от val по отношению к nun
  809. 'procVal': function(num, val) {
  810. num = val/(num/100);
  811. if (num) return num.toFixed(2);
  812. else return '0.00';
  813. }//end procVal()
  814. };
  815.  
  816. // Расчет количества поситителей в ресторанах, сервисах, медцентрах
  817. var serviceUnit = function(){
  818. $ = (typeof(unsafeWindow) != 'undefined' ? unsafeWindow : top.window).$;
  819.  
  820. // максмальное количество поситетилей по персоналу
  821. var d,
  822. persKol = [parseInt(unitWork.unit.labor_qty)|parseInt(unitWork.unit.employee_count)|0, parseInt(unitWork.unit.employee_required_by_equipment)|0],
  823. spec = unitWork.unit.unit_type_produce_name;
  824. if(persKol[0] > persKol[1]) persKol[0] = persKol[1];
  825.  
  826. switch(spec) {
  827. case('Больница'): //---
  828. case('Hospital'):
  829. case('Лікарня'):
  830. d = 0.2;
  831. break;
  832. case('Стоматологическая клиника'): //---
  833. case('Dental clinic'):
  834. case('Clínica dental'):
  835. case('Стоматологічна клініка'):
  836. d = 0.5;
  837. break;
  838. case('Студия детского творчества'): //---
  839. case('Children\'s Art Studio'):
  840. d = 2;
  841. break;
  842. case('Фитнес'): //---
  843. case('Fitness'):
  844. case('Фітнес'):
  845. case('Йога'): //---
  846. case('Yoga'):
  847. case('Бодибилдинг'): //---
  848. case('Body-building'):
  849. case('Culturismo'):
  850. case('Бодібілдінг'):
  851. case('Группы здоровья'): //---
  852. case('Sports Activities for all ages'):
  853. case('Actividades Deportivas para todas las edades'):
  854. case('Групи здоров\'я'):
  855. case('Профессиональный спорт'): //---
  856. case('Professional Sports'):
  857. case('Deportes Profesionales'):
  858. case('Професійний спорт'):
  859. case('Скалолазание'): //---
  860. case('Climbing'):
  861. case('Escalada'):
  862. case('Альпінізм'):
  863. case('Диагностический центр'): //---
  864. case('Diagnostic Center'):
  865. case('Centro Diagnóstico'):
  866. case('Діагностичний центр'):
  867. case('Поликлиника'): //---
  868. case('Health Center'):
  869. case('Centro de Salud'):
  870. case('Поліклініка'):
  871. case('Ясли'): //---
  872. case('Nursery'):
  873. case('Детский сад'): //---
  874. case('Kindergarten'):
  875. case('Группы подготовки к школе'): //---
  876. case('Prepare for school'):
  877. d = 5;
  878. break;
  879. case('Прачечная'): //---
  880. case('Laundry'):
  881. case('Lavandería'):
  882. case('Пральня'):
  883. case('Химчистка'): //---
  884. case('Dry-cleaning'):
  885. case('Limpieza en seco'):
  886. case('Хімчистка'):
  887. case('Прачечная самообслуживания'): //---
  888. case('Launderette'):
  889. case('Lavandería autoservicio'):
  890. case('Пральня самообслуговування'):
  891. case('SPA-салон'): //---
  892. case('SPA salon'):
  893. case('Salón de spa'):
  894. case('Спа-салон'):
  895. d = 10;
  896. break;
  897. case('Косметический салон'): //---
  898. case('Beauty salon'):
  899. case('Salón de belleza'):
  900. case('Косметичний салон'):
  901. d = 20;
  902. break;
  903. case('Рыбный ресторан'): //---
  904. case('Seafood'):
  905. case('Restaurante de Pescado'):
  906. case('Рибний ресторан'):
  907. case('Устричный ресторан'): //---
  908. case('Oyster Restaurant'):
  909. case('Restaurante de Ostras'):
  910. case('Устричний ресторан'):
  911. d = 30;
  912. break;
  913. case('Парикмахерская'): //---
  914. case('Hairdressing salon'):
  915. case('Salón de peluquería'):
  916. case('Перукарня'):
  917. case('Сырный ресторан'): //---
  918. case('Cheese Bar'):
  919. case('Restaurante de Quesos'):
  920. case('Сирний ресторан'):
  921. d = 40;
  922. break;
  923. case('Стейк ресторан'): //---
  924. case('Steak Restaurant'):
  925. case('Restaurante de Bistec'):
  926. case('М\'ясний ресторан'):
  927. case('Вегетарианский ресторан'): //---
  928. case('Vegetarian Restaurant'):
  929. case('Restaurante Vegetariano'):
  930. case('Вегетаріанський ресторан'):
  931. case('Ресторан мексиканской кухни'): //---
  932. case('Mexican restaurant'):
  933. case('Restaurante mexicano'):
  934. case('Ресторан мексиканської кухні'):
  935. case('ЭКО-ресторан'): //---
  936. case('ECO-Restaurant'):
  937. case('ECO-Restaurante'):
  938. case('Еко-ресторан'):
  939. d = 50;
  940. break;
  941. case('Пивной ресторан'): //---
  942. case('Beer Pub'):
  943. case('Cervecería'):
  944. case('Пивний ресторан'):
  945. case('Ресторан итальянской кухни'): //---
  946. case('Italian Restaurant'):
  947. case('Restaurante Italiano'):
  948. case('Ресторан італійської кухні'):
  949. case('Ресторан греческой кухни'): //---
  950. case('Greek Restaurant'):
  951. case('Restaurante griego'):
  952. case('Ресторан грецької кухні'):
  953. d = 60;
  954. break;
  955. case('Фастфуд'): //---
  956. case('Fast Food'):
  957. case('Comida Rápida'):
  958. case('Фаст-фуд'):
  959. d = 70;
  960. break;
  961. case('Кафе-мороженое'): //---
  962. case('Ice Cream Parlor'):
  963. case('Heladería'):
  964. case('Кафе-морозиво'):
  965. case('Кафе-кондитерская'): //---
  966. case('Tearoom'):
  967. case('Salón de Té'):
  968. case('Кафе-кондитерська'):
  969. case('Кофейня'): //---
  970. case('Coffee House'):
  971. case('Cafetería'):
  972. case('Кав\'ярня'):
  973. case('Блинная'): //---
  974. case('Pancake House'):
  975. case('Bar de tortitas'):
  976. case('Млинцева'):
  977. case('Чайная'): //---
  978. case('Teahouse'):
  979. case('Casa de té'):
  980. case('Чайна'):
  981. case('Fish and chips'): //---
  982. case('Pescado con patatas'):
  983. d = 80;
  984. break;
  985. default:
  986. d = 1;
  987. }
  988.  
  989. var maxPer = persKol[0] * d,
  990. pos = parseInt(unitWork.unit.customers)|parseInt(unitWork.unit.customers_count)|parseInt(unitWork.unit.sales)|0,
  991. proc = Math.round(pos/(maxPer/100))|0;
  992. $('#customers_count').html( pos );
  993. $('#customers_max').html( maxPer.toFixed(0).toString().replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ') );
  994. $('#customers_percent').html( proc.toFixed(0) );
  995. };
  996.  
  997. if(window.top == window) {
  998. unitWork.coordinates = coordinatesCalc.get();
  999. unitWork.url = window.location.pathname.split('/');
  1000. // Фон страницы
  1001. if(unitWork.coordinates.fonBody && unitWork.coordinates.fonBody == 'false') $('body').removeClass( $('body').attr('class') );
  1002. // Паказать или нет на всех страницах юнита
  1003. if( unitWork.coordinates.unitShow == 'true' && unitWork.url[6] != undefined ) return;
  1004. //-----
  1005. $.post('/api/' + unitWork.url[1] + '/main/unit/summary', { 'id': unitWork.url[5] }).success( function(data){
  1006. unitWork.unit = data;
  1007. unitWork.type = data.unit_class_kind;
  1008. switch(unitWork.type) {
  1009. case 'shop':
  1010. case 'workshop':
  1011. case 'mill':
  1012. case 'animalfarm':
  1013. case 'medicine':
  1014. case 'restaurant':
  1015. case 'orchard':
  1016. case 'farm':
  1017. case 'mine':
  1018. case 'lab':
  1019. case 'villa':
  1020. // case 'warehouse':
  1021. case 'fishingbase':
  1022. case 'office':
  1023. case 'sawmill':
  1024. case 'service':
  1025. case 'service_light':
  1026. case 'power':
  1027. case 'repair':
  1028. case 'fuel':
  1029. case 'it':
  1030. case 'educational':
  1031. unitWork.zIndex = $('*').length;
  1032. $('body').prepend( strSetting );
  1033. $.post('/api/' + unitWork.url[1] + '/main/unit/forecast', { 'id': unitWork.url[5] }).success( function(data_){
  1034. unitWork.forecast = data_;
  1035. setInfoUnut();
  1036. unutMove.InfoUnut();
  1037. newCacheInfo.start();
  1038. });
  1039. break;
  1040. case undefined:
  1041. newCacheInfo.get();
  1042. break;
  1043. }
  1044. switch(unitWork.type) {
  1045. case 'restaurant':
  1046. case 'service':
  1047. case 'service_light':
  1048. case 'medicine':
  1049. case 'educational':
  1050. serviceUnit();
  1051. break;
  1052. default:
  1053. $('tr[name="customers"]').css( 'display', 'none' );
  1054. }
  1055. });
  1056. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址