index.html 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638
  1. <!DOCTYPE html>
  2. <html
  3. ng-app = "application"
  4. lang = "en-US">
  5. <head>
  6. <!-- Page title -->
  7. <title>Manche Numérique</title>
  8. <!-- Meta tags -->
  9. <meta charset = "UTF-8">
  10. <meta name = "description" content = "Zeno-Labs">
  11. <meta name = "keywords" content = "HTML,CSS,JavaScript">
  12. <meta name = "author" content = "Francois Beaufils">
  13. <!-- Angulars Material CSS using RawGit to load directly from `bower-material/master` -->
  14. <link rel = "stylesheet" href = "css/angular-material.css">
  15. <link rel = "stylesheet" href = "css/theme.css">
  16. <!-- Favicon-->
  17. <link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon">
  18. <!-- Material design CSS font http://zavoloklom.github.io/material-design-iconic-font/examples.html -->
  19. <link rel="stylesheet" href="css/material-design-iconic-font.min.css">
  20. <link rel="stylesheet" href="css/font-awesome.min.css">
  21. <!-- Roboto font-->
  22. <link href='http://fonts.googleapis.com/css?family=Roboto:500,300,400' rel='stylesheet' type='text/css'>
  23. <!-- Specific CSS -->
  24. <link rel = "stylesheet" href = "css/main.css">
  25. <script type = "text/javascript" src = "https://code.jquery.com/jquery-2.1.3.min.js"></script>
  26. <script type = "text/javascript" src = "https://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"></script>
  27. <script type = "text/javascript" src = "js/proj4js/dist/proj4.js"></script>
  28. <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" />
  29. <script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
  30. <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment-with-locales.min.js"></script>
  31. <!-- Angular Material Dependencies -->
  32. <script type = "text/javascript" src = "http://cdn.jsdelivr.net/hammerjs/2.0.4/hammer.js"></script>
  33. <script type = "text/javascript" src = "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.js"></script>
  34. <script type = "text/javascript" src = "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular-animate.js"></script>
  35. <script type = "text/javascript" src = "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular-aria.js"></script>
  36. <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/skrollr/0.6.29/skrollr.min.js"></script>
  37. <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css">
  38. <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>
  39. <link rel="stylesheet" href="css/angular.typeahead.css" />
  40. <script src="js/bootstrap-typeahead.min"></script>
  41. <!-- Angular Material Javascript using RawGit to load directly from `bower-material/master` -->
  42. <script type = "text/javascript" src = "js/angular-material.js"></script>
  43. <script type = "text/javascript" src = "js/angular-adaptive-detection.js"></script>
  44. <script type = "text/javascript" src = "js/app.js"></script>
  45. </head>
  46. <body ng-controller = "mainController">
  47. <div class = "title">
  48. <div
  49. class = "data-loading"
  50. ng-if = "!loaded">
  51. <md-progress-circular
  52. class = "md-warn md-hue-3"
  53. md-mode = "indeterminate"
  54. md-diameter = "25">
  55. </md-progress-circular>
  56. <div class = "data-loading-txt">
  57. Téléchargement des données...
  58. </div>
  59. </div>
  60. <img
  61. src = "img/logo.png"
  62. ng-if = "loaded"
  63. ng-click = "toggleResultPane()"/>
  64. </div>
  65. <div class = "address-bar">
  66. <div class = "input-type">
  67. <input
  68. type = "text"
  69. ng-model = "address"
  70. ng-focus = "closeRight()"
  71. class = "typeahead"
  72. options = "typeAheadOpts"
  73. datasets = "allAdresses"
  74. ng-keypress = "($event.which === 13) ? onSubmitAddress():0"
  75. autofocus/>
  76. </div>
  77. <md-button
  78. aria-label = "submit"
  79. ng-click = "onSubmitAddress()"
  80. class = "md-raised md-primary">
  81. <i class = "md-search md-2x"></i>
  82. </md-button>
  83. <i class = "md-menu md-2x" ng-click = "toggleRight()"></i>
  84. </div>
  85. <md-sidenav class="md-sidenav-right md-whiteframe-z2" md-component-id="right">
  86. <md-toolbar class="md-theme-light">
  87. <h1 class="md-toolbar-tools">Options</h1>
  88. <md-progress-circular
  89. id = "layer-loading"
  90. class = "md-warn md-hue-3 force-hidden"
  91. md-mode = "indeterminate"
  92. md-diameter = "25">
  93. </md-progress-circular>
  94. </md-toolbar>
  95. <md-content class="md-padding">
  96. <div class = "section-title">
  97. Type de vue
  98. </div>
  99. <md-radio-group ng-model="mapType">
  100. <md-radio-button
  101. value = "Carte"
  102. ng-click = "changeMap('carte')"
  103. aria-label = "Carte">Carte
  104. </md-radio-button>
  105. <br/>
  106. <md-radio-button
  107. value = "Satellite"
  108. ng-click = "changeMap('satellite')"
  109. aria-label = "Satellite">Satellite
  110. </md-radio-button>
  111. </md-radio-group>
  112. <br/>
  113. <br/>
  114. <div class = "section-title">
  115. Montrer les zones de découpages
  116. </div>
  117. <md-checkbox ng-model="view.ftth" aria-label="Fibre optique">Fibre optique</md-checkbox>
  118. <br/>
  119. <md-checkbox ng-model="view.mimo" aria-label="Réseau Mimo">Réseau Mimo</md-checkbox>
  120. <br/>
  121. <md-checkbox ng-model="view.adsl" aria-label="ADSL">ADSL</md-checkbox>
  122. </md-content>
  123. </md-sidenav>
  124. <div id="map"></div>
  125. <div id="result">
  126. <div
  127. layout = "row"
  128. layout-margin
  129. class = "result-container">
  130. <div
  131. flex
  132. flex-order = "1"
  133. class = "result-box">
  134. <div class = "box-header">
  135. <div class = "box-logo">
  136. <img src = "img/fibre.png"/>
  137. </div>
  138. <div class = "box-title-description">
  139. <div class = "box-title">
  140. <span class = "solution">
  141. Solution n°1:
  142. </span>
  143. <br>
  144. Fibre optique (FTTH)
  145. </div>
  146. </div>
  147. </div>
  148. <div
  149. class = "box-body box-body-ftth"
  150. ng-style = "{'border-color': colors.ftth}">
  151. <div class = "box-description">
  152. Une fibre optique est un fil en verre ou en plastique très fin qui a la propriété d'être un conducteur de la lumière et sert dans la transmission de données et de lumière. Elle offre un débit d'information nettement supérieur à celui des câbles coaxiaux et peuvent servir de support à un réseau « large bande » par lequel transitent aussi bien la télévision, le téléphone, la visioconférence ou les données informatiques.
  153. </div>
  154. <div class = "box-description-more">
  155. <a
  156. href = "http://fr.wikipedia.org/wiki/Fibre_optique"
  157. target = "_blank">
  158. En savoir plus
  159. </a>
  160. </div>
  161. <hr>
  162. <div class = "box-eligibilite-title">
  163. éligibilité au pré-raccordement
  164. <span>
  165. <span
  166. ng-if = "results.ftth.DATE_DEB_TRAV_PREV"
  167. class = "box-eligibilite-yes">
  168. OUI
  169. </span>
  170. <span
  171. ng-if = "!results.ftth.DATE_DEB_TRAV_PREV"
  172. class = "box-eligibilite-no">
  173. NON
  174. </span>
  175. <button
  176. ng-if = "results.ftth.DATE_DEB_TRAV_PREV"
  177. type = "button"
  178. class = "btn btn-primary btn-lg"
  179. data-toggle = "modal"
  180. ng-click = "initPopup()"
  181. data-target = "#mn_inscription">
  182. Inscription
  183. </button>
  184. </span>
  185. </div>
  186. <div class = "box-eligibilite">
  187. <div
  188. ng-if = "results.ftth !== undefined">
  189. <div
  190. ng-if = "results.ftth"
  191. style = "margin-top: 30px;"
  192. ng-bind-html = "computeDateFtthAvailable(results.ftth.DATE_FIN_TRAV_PREV)">
  193. </div>
  194. <div
  195. class = "box-description-more"
  196. ng-if = "!results.ftth._advanced"
  197. style = "margin-bottom: 30px;">
  198. <a
  199. href = ""
  200. ng-click = "results.ftth._advanced = true">
  201. + détails
  202. </a>
  203. </div>
  204. <div
  205. ng-if = "results.ftth._advanced"
  206. ng-bind-html = "formatResults('ftth', results.ftth)">
  207. </div>
  208. </div>
  209. <div
  210. ng-if = "results.ftth === undefined"
  211. class = "box-eligibilite-spinner">
  212. <md-progress-circular class="md-warn md-hue-3" md-mode="indeterminate"></md-progress-circular>
  213. </div>
  214. </div>
  215. </div>
  216. </div>
  217. <div
  218. flex
  219. flex-order = "2"
  220. class = "result-box">
  221. <div class = "box-header">
  222. <div class = "box-logo">
  223. <img src = "img/adsl.png"/>
  224. </div>
  225. <div class = "box-title-description">
  226. <div class = "box-title">
  227. <span class = "solution">
  228. Solution n°2:
  229. </span>
  230. <br>
  231. ADSL (téléphone)
  232. </div>
  233. </div>
  234. </div>
  235. <div
  236. class = "box-body box-body-adsl"
  237. ng-style = "{'border-color': colors.adsl}">
  238. <div class = "box-description">
  239. L'ADSL est une technique de communication numérique qui permet d'utiliser une ligne téléphonique pour transmettre et recevoir des données numériques de manière indépendante du service téléphonique conventionnel via un filtre ADSL branché à la prise.
  240. </div>
  241. <div class = "box-description-more">
  242. <a
  243. href = "http://fr.wikipedia.org/wiki/Asymmetric_Digital_Subscriber_Line"
  244. target = "_blank">
  245. En savoir plus
  246. </a>
  247. </div>
  248. <hr>
  249. <div class = "box-eligibilite-title">
  250. éligibilité
  251. <span>
  252. <span
  253. ng-if = "results.adsl"
  254. class = "box-eligibilite-yes">
  255. OUI
  256. </span>
  257. <span
  258. ng-if = "!results.adsl"
  259. class = "box-eligibilite-no">
  260. NON
  261. </span>
  262. </span>
  263. </div>
  264. <div class = "box-eligibilite">
  265. <div
  266. ng-if = "results.adsl !== undefined">
  267. <div
  268. class = "box-eligibilite-none"
  269. ng-if = "!results.adsl">
  270. Non éligible
  271. </div>
  272. <div
  273. class = "popup-line"
  274. ng-if = "!results.adsl._advanced && results.adsl.LEGENDE">
  275. <span class="popup-title">{{results.adsl.LEGENDE}}</span>
  276. </div>
  277. <div
  278. class = "box-description-more"
  279. ng-if = "!results.adsl._advanced"
  280. style = "margin-bottom: 30px;">
  281. <a
  282. href = ""
  283. ng-click = "results.adsl._advanced = true">
  284. + détails
  285. </a>
  286. </div>
  287. <div
  288. ng-if = "results.adsl._advanced"
  289. ng-bind-html = "formatResults('adsl', results.adsl)">
  290. </div>
  291. </div>
  292. <div
  293. ng-if = "results.adsl === undefined"
  294. class = "box-eligibilite-spinner">
  295. <md-progress-circular class="md-warn md-hue-3" md-mode="indeterminate"></md-progress-circular>
  296. </div>
  297. </div>
  298. </div>
  299. </div>
  300. <div
  301. flex
  302. flex-order = "3"
  303. class = "result-box">
  304. <div class = "box-header">
  305. <div class = "box-logo">
  306. <img src = "img/mimo.png"/>
  307. </div>
  308. <div class = "box-title-description">
  309. <div class = "box-title">
  310. <span class = "solution">
  311. Solution n°3:
  312. </span>
  313. <br>
  314. Réseau MiMo
  315. </div>
  316. </div>
  317. </div>
  318. <div
  319. class = "box-body box-body-mimo"
  320. ng-style = "{'border-color': colors.mimo}">
  321. <div class = "box-description">
  322. MiMo est une technique de multiplexage utilisée dans les réseaux sans fil et les réseaux mobiles permettant des transferts de données à plus longue portée et à plus grande vitesse qu’avec des antennes "classiques".
  323. </div>
  324. <div class = "box-description-more">
  325. <a
  326. href = "http://fr.wikipedia.org/wiki/MIMO_(t%C3%A9l%C3%A9communications)"
  327. target = "_blank">
  328. En savoir plus
  329. </a>
  330. </div>
  331. <hr>
  332. <div class = "box-eligibilite-title">
  333. éligibilité
  334. <span>
  335. <span
  336. ng-if = "results.mimo"
  337. class = "box-eligibilite-yes">
  338. OUI
  339. </span>
  340. <span
  341. ng-if = "!results.mimo"
  342. class = "box-eligibilite-no">
  343. NON
  344. </span>
  345. </span>
  346. </div>
  347. <div class = "box-eligibilite">
  348. <div
  349. ng-if = "results.mimo">
  350. <p class="bg-warning">Votre éligibilité à la technologie MiMo est théorique. Seul le passage d'un antenniste pourra confirmer votre niveau de signal.</p>
  351. <div>
  352. Vous pouvez souscrire à une offre d'accès internet auprès de ce FAI:
  353. <p class="bg-info">
  354. <a
  355. href = "https://www.ozone.net/"
  356. target = "_blank">
  357. Ozone.net
  358. </a>
  359. <br/>
  360. <i class ="fa fa-phone"></i>
  361. 0 973 01 1000
  362. </p>
  363. </div>
  364. <div
  365. class = "box-description-more"
  366. ng-if = "!results.mimo._advanced"
  367. style = "margin-bottom: 30px;">
  368. <a
  369. href = ""
  370. ng-click = "results.mimo._advanced = true">
  371. + détails
  372. </a>
  373. </div>
  374. <div
  375. ng-if = "results.mimo_advanced"
  376. ng-bind-html = "formatResults('mimo', results.mimo)">
  377. </div>
  378. </div>
  379. <div
  380. ng-if = "!results.ftth.DATE_DEB_TRAV_PREV && !results.adsl && !results.mimo">
  381. <p class="bg-warning">Nous vous invitons à contacter les services de <a href="http://www.manchenumerique.fr" >Manche Numérique</a> qui vous indiqueront la procédure pour une connecion internet par satellite et bénéficier d'une prise en charge de l'installationdu kit satellitaire par un antenniste.</p>
  382. </div>
  383. <div
  384. ng-if = "results.mimo === undefined"
  385. class = "box-eligibilite-spinner">
  386. <md-progress-circular class="md-warn md-hue-3" md-mode="indeterminate"></md-progress-circular>
  387. </div>
  388. </div>
  389. </div>
  390. </div>
  391. </div>
  392. </div>
  393. <!-- Modal -->
  394. <div
  395. class = "modal fade"
  396. id = "mn_inscription"
  397. tabindex = "-1"
  398. role = "dialog"
  399. aria-labelledby="mn_inscriptionLabel">
  400. <div
  401. class = "modal-dialog"
  402. role = "document">
  403. <div class = "modal-content">
  404. <div class = "modal-header">
  405. <button
  406. type = "button"
  407. class = "close"
  408. data-dismiss = "modal"
  409. aria-label = "Close">
  410. <span aria-hidden = "true">&times;</span>
  411. </button>
  412. <h4
  413. class = "modal-title"
  414. id = "mn_inscriptionLabel">
  415. FORMULAIRE DE DEMANDE DE PRÉ-RACCORDEMENT À LA FIBRE OPTIQUE
  416. </h4>
  417. </div>
  418. <div class = "modal-body">
  419. <div ng-if = "!postForm">
  420. Vous souhaitez être pré-raccordé au réseau de fibre optique, nous vous remercions de bien vouloir compléter ce formulaire. Après vérification de votre demande, Manche Numérique se chargera de transmettre votre demande ainsi que vos coordonnées à l’entreprise en charge des travaux de pré-raccordement pour une prise de rendez-vous.
  421. </div>
  422. <div
  423. class = "mn-form"
  424. ng-if = "!postForm"
  425. ng-include = "'./html/form.html'">
  426. </div>
  427. <div
  428. class = "mn-form-in-progress"
  429. ng-if = "postForm.inProgress">
  430. <i class="fa fa-circle-o-notch fa-spin"></i>
  431. <br/>
  432. Enregistrement en cours...
  433. </div>
  434. <div
  435. class = "mn-form-error"
  436. ng-if = "postForm.error">
  437. <i class="fa fa-exclamation-circle"></i>
  438. <br/>
  439. Error: {{postForm.error}}
  440. </div>
  441. <div
  442. class = "mn-form-ok"
  443. ng-if = "postForm.ok">
  444. <i class="fa fa-check-circle-o"></i>
  445. <br/>
  446. Votre demande a bien été prise en compte. Un mail de confirmation vous a été envoyé.
  447. </div>
  448. </div>
  449. <div class = "modal-footer">
  450. <button
  451. type = "button"
  452. class = "btn btn-default"
  453. data-dismiss = "modal">
  454. Fermer
  455. </button>
  456. <button
  457. type = "button"
  458. ng-if = "!postForm"
  459. ng-click = "ready = true; isFormValid() ? postFormEl() : null"
  460. class = "btn btn-primary">
  461. Valider
  462. </button>
  463. </div>
  464. </div>
  465. </div>
  466. </div>
  467. </body>
  468. </html>