{"id":4929,"date":"2024-12-12T14:43:26","date_gmt":"2024-12-12T13:43:26","guid":{"rendered":"https:\/\/www.vertikalpuntamartin.it\/teammartin10zerouno\/?page_id=4929"},"modified":"2026-03-07T17:33:58","modified_gmt":"2026-03-07T16:33:58","slug":"gare","status":"publish","type":"page","link":"https:\/\/www.vertikalpuntamartin.it\/teammartin10zerouno\/gare\/","title":{"rendered":"gare"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"4929\" class=\"elementor elementor-4929\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-26ec4e9 elementor-section-height-full elementor-section-full_width elementor-section-height-default elementor-section-items-middle\" data-id=\"26ec4e9\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5b74aaa\" data-id=\"5b74aaa\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-aebb493 elementor-widget elementor-widget-heading\" data-id=\"aebb493\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.9.0 - 06-12-2022 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h3 class=\"elementor-heading-title elementor-size-default\">Gare Atleti TeamMartin10zerouno <\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-833420d elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"833420d\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<script src=\"https:\/\/www.vertikalpuntamartin.it\/tm_races\/assets\/axios.min.js\"><\/script>\n<script src=\"\/\/code.jquery.com\/jquery-latest.js\"><\/script>  \n<script src=\"\/\/cdn.jsdelivr.net\/npm\/featherlight@1.7.14\/release\/featherlight.min.js\" type=\"text\/javascript\" charset=\"utf-8\"><\/script>\n<link href=\"\/\/cdn.jsdelivr.net\/npm\/featherlight@1.7.14\/release\/featherlight.min.css\" type=\"text\/css\" rel=\"stylesheet\" \/>\n<link rel=\"stylesheet\" href=\"https:\/\/www.w3schools.com\/w3css\/4\/w3.css\">\n\n\n\n<style>\n.elementor-section.elementor-section-height-full {\n  height: auto;\n}\n.elementor img {\n  max-width: inherit\n}\nbutton {\n    background-color: white;\n    color: black;\n}  \ntd {\n  border: 0px;\n  border-bottom: 1px solid gray;\n}\n.thumbImg {\n  height: 100px;\n}\n\n* {\n  box-sizing: border-box;\n}\n\n#myInput {\n  background-image: url('assets\/searchicon.png');\n  background-position: 10px 10px;\n  background-repeat: no-repeat;\n  width: 500px;\n  font-size: 16px;\n  padding: 12px 20px 12px 40px;\n  border: 1px solid #ddd;\n  margin-bottom: 12px;\n}\n\n#myTable {\n  border-collapse: collapse;\n  width: 100%;\n  border: 1px solid #ddd;\n  font-size: 18px;\n}\n\n#myTable th, #myTable td {\n  text-align: left;\n  \/*padding: 12px;*\/\n}\n\n#myTable tr {\n  border-bottom: 1px solid #ddd;\n}\n\n#myTable tr.header, #myTable tr:hover {\n  background-color: #f1f1f1;\n}\n\n.chip {\n  display: inline-block;\n  padding: 0 25px;\n  font-size: small;\n  border-radius: 25px;\n  \/*line-height: 50px; \n    height: 50px;\n  \/*border-radius: 25px; *\/\n  background-color: #f1f1f1;\n}\n\n.chip img {\n  float: left;\n  margin: 0 10px 0 -25px;\n  height: 50px;\n  width: 50px;\n  border-radius: 50%;\n}\n\n#races {\n  margin: 4px, 4px;\n  padding: 4px;\n  min-width: 1000px;\n  overflow-x: auto;\n  white-space: nowrap;\n  border: 1px solid black;\n}\n.rightAlign{\n  text-align: right;\n}\n\n.noRunning{\n  border: 1px solid red;\n  padding: 3px;\n  color: red;\n}\n.dnf{\n  border: 1px solid red;\n  padding: 3px;\n  color: red;\n}\n\n<\/style>\n\n<script type=\"module\">\nimport { createApp } from \"https:\/\/unpkg.com\/petite-vue?module\";\n\ncreateApp({\n  baseUrl: \"https:\/\/www.vertikalpuntamartin.it\/tm_races\/\",\n  data: [],\n  dataAll:[],\n  \/\/runners: [],\n  runnersN: [],\n  runnersKm: [],\n  allRunners:[],\n  search: \"\",\n  year: \"2026\",\n  viewNav: false,\n  keyCount:0, \n  callConfig: {\n    headers: {\n      \"Content-Type\": \"application\/json\",\n      Accept: \"application\/json\",\n      Pragma: \"no-cache\",\n      \"Access-Control-Allow-Origin\": \"*\",\n    },\n  },\n  giorno:(\"Dom Lun Mar Mer Gio Ven Sab\").split(\" \"),\n\n  mounted() {\n    this.getData();\n    this.viewNav=window.location.href.endsWith('classifica');\n  },\n  getData() {\n    console.log(\"Reading file...\");\n    const fullPath = this.baseUrl+\"data2024.json?\"+(new Date()).getTime();\n    let httpMethod = axios.get(fullPath, this.callConfig);\n    httpMethod.then((response) => {\n      this.data = response.data;\n      this.fixData();\n      console.log(\"Reading file done\");\n      this.filterData();\n            \n    });\n    \n  },\n  fixData(){\n    this.dataAll=[];\n    for(let i=0;i<this.data.length;i++){\n      const row=this.data[i];\n      if(!row.races){\n        console.log(\"Skip (no races) \", row);\n        continue;\n      }\n      const els=row.date.split(\"\/\");\n      row.date=new Date(parseInt(els[0]),parseInt(els[1])-1,parseInt(els[2]));\n      this.dataAll.push(row);\n    }\n  },\n  filterData() {\n    let filter = this.search.toUpperCase();\n    this.data=[];\n    for (let i = 0; i < this.dataAll.length; i++) {\n      if (this.year && this.dataAll[i].date.getFullYear()!=this.year) continue\n      let found=false;\n      let runners=[];\n      const row=this.dataAll[i];\n      if (! (row.races)) continue;\n      if(this.check(row.name, filter)) {\n        found=true;\n        this.data.push(row);\n        continue;\n      }\n      const rowClone=Object.assign({},row);\n      rowClone.races=[];\n      row.races.forEach(race => {\n        found=false;\n        const raceClone=Object.assign({},race);\n        race.runners.forEach(runner => {\n          if(this.check(runner, filter)) {\n            found=true;\n            runners.push(runner);\n          }\n        });\n        raceClone.runners=runners;\n        runners=[];\n        if (found) rowClone.races.push(raceClone);\n      });\n      if(rowClone.races.length>0) this.data.push(rowClone);\n      if(\"classifica\" == this.search) {\n         this.viewNav=true;\n         this.search=\"\";\n         this.filterData();\n      }\n\n    }\n    this.keyCount++;\n    this.sortData();\n    this.computeTotals();\n  },\n  check(value1, value2){\n    if (value1 && value1.toUpperCase().indexOf(value2) > -1)  return true;\n    return false;\n  },\n  sortData(){\n    this.data=this.data.sort((a, b) => {\n      return (a.date > b.date) ? -1 :1 ;\n\n    });\n  },\n  computeTotals(){\n    const runners=new Map();\n    for (let i = 0; i < this.data.length; i++) {\n      const row=this.data[i];\n      if (! (row.races)) continue;\n      \n      row.races.forEach(race => {\n        race.runners.forEach(runner => {\n          let data=runners.get(runner);\n          if (data==undefined) data={races:0, dist:0};\n          if (!(row.type || race.dnf)) {\n            data.races++;\n            data.dist+=race.dist;\n          }\n          runners.set(runner, data);\n        });\n      });\n    }\n\n    runners.values().forEach(v => v.dist=Math.round(v.dist*100)\/100);\n    this.runnersKm=Array.from(runners).sort((a, b) => {\n      return (a[1].dist > b[1].dist) ? -1 :1 ;\n    });\n    this.runnersN=Array.from(runners).sort((a, b) => {\n      return (a[1].races > b[1].races) ? -1 :1 ;\n    });\n  },\n  formatDate(d){\n    return this.giorno[d.getDay()] + \" \"+d.getDate() + \"\/\" +(d.getMonth()+1)+ \"\/\" + d.getFullYear();\n  },\n  filterBy(name){\n    this.search=name;\n    this.filterData();\n  },\n  openCity(evt, cityName) {\n    const x = document.getElementsByClassName(\"city\");\n    for (let i = 0; i < x.length; i++) {\n      x[i].style.display = (cityName ? \"none\" :\" block\");\n    }\n    const tablinks = document.getElementsByClassName(\"tablink\");\n    for (let i = 0; i < x.length; i++) {\n      tablinks[i].className = tablinks[i].className.replace(\" w3-red\", \"\");\n    }\n    if(!cityName) return;\n    document.getElementById(cityName).style.display = \"block\";\n    evt.currentTarget.className += \" w3-red\";\n},\nexport1(){\n  console.log(\"Export...\");\n  this.data.forEach(element => {\n    console.log(element.name);\n  });\n  }\n}).mount();\n\n<\/script>\n\n<div v-scope @vue:mounted=\"mounted\">\n\n<p>\n Anno <select v-model=\"year\" @change=\"filterData\" >\n  <option value=\"2026\">2026<\/option>\n  <option value=\"2025\">2025<\/option>\n  <option value=\"2024\">2024<\/option>\n  <option value=\"\"><\/option>\n <\/select>\n<input id=\"myInput\" v-model=\"search\" @keyup=\"filterData\" placeholder=\"Ricerca per nome gara o atleta\" title=\"Digita nome gara o atleta\" \/>\n<button @click=\"filterBy('')\">Pulisci<\/button>\n<!--\n  <div class=\"chip\" v-for=\"r in runners\">\n    <a href=\"#\" @click=\"filterBy(r[0])\">{{r[0]}}<\/a><\/td>\n  <\/div> \n-->\n<\/p>\n\nTotale atleti : {{runnersKm.length }}  - Totale gare : {{data.length}}\n\n<div v-if=\"viewNav\" class=\"w3-bar w3-black\">\n  <button v-if=\"viewNav\" class=\"w3-bar-item w3-button tablink w3-red\" @click=\"openCity(event,'runnersKm')\">Classifica chilometrica <\/button>\n  <button v-if=\"viewNav\" class=\"w3-bar-item w3-button tablink\" @click=\"openCity(event,'runnersN')\">Classifica per N. gare<\/button>\n  <button class=\"w3-bar-item w3-button tablink\" @click=\"openCity(event,'races')\">Gare <\/button>\n  <button class=\"w3-bar-item w3-button tablink\" @click=\"openCity(event,'segnala')\">Segnalazioni <\/button>\n<\/div>\n\n\n<div id=\"runnersKm\" class=\"city\" style=\"display:none\">\n  <table>\n    <tr>\n      <th>Atleta<\/th>\n      <th>Tot. Km<\/th>\n      <th>N.Gare<\/th>\n    <\/tr>\n    <tr v-for=\"r in runnersKm\">\n      <td>\n        <a href=\"#\" @click=\"filterBy(r[0])\">{{r[0]}}<\/a>\n      <\/td>\n      <td class=\"rightAlign\">{{r[1].dist}}<\/td>\n      <td class=\"rightAlign\">{{r[1].races}}<\/td>\n      \n    <\/tr>\n  <\/table>\n<\/div>\n\n<div id=\"runnersN\" class=\"city\" style=\"display:none\">\n  <table>\n    <tr>\n      <th>Atleta<\/th>\n      <th>N.Gare<\/th>\n      <th>Tot. Km<\/th>\n      \n    <\/tr>\n    <tr v-for=\"r in runnersN\">\n      <td>\n       <a href=\"#\" @click=\"filterBy(r[0])\">{{r[0]}}<\/a><\/td>\n      <td>{{r[1].races}}<\/td>\n      <td>{{r[1].dist}}<\/td>\n    <\/tr>\n  <\/table>\n  \n<\/div>\n\n<div id=\"segnala\" class=\"city\" style=\"display:none\">\n  <p>\n  Gare mancanti ? \n  <\/p>\n  <p>\n  Invia mail a info@teammartin10zerouno.it con i dati della gara (nome, data e km) e varr\u00e0 inserita in classifica!\n  <\/p>\n<\/div>\n\n\n<div id=\"races\" class=\"city\" >\n\n  <table id=\"myTable\" :key=\"keyCount\">\n        <tr>\n            <th>\n                Data\n            <\/th>\n            <th>&nbsp;\n             <\/th>\n            <th>\n                Evento\n            <\/th>\n            <th>\n              Distanza \/ Atleti\n            <\/th>\n            <th>\n                Foto\n            <\/th>\n        <\/tr>\n       \n\n        <tr v-for=\"d in data\">\n          <td>{{formatDate(d.date)}}<\/td>\n          <td>\n            <a href=\"#\" @click=\"window.open(d.facebook, 'fb', 'width=520,scrollbars=yes,status=no')\">\n              <img v-if=\"d.facebook\" v-bind:src=\"baseUrl+'\/assets\/Facebook_logo.png'\" style=\"height:25px\" \/>\n            <\/a>\n          <\/td>\n          <td>\n            <spam class=\"noRunning\" v-if=\"d.type\">{{d.type}}<\/spam>\n            {{d.name}}\n          <\/td>\n       \n          <\/td>\n          <td>\n            <table  class=\"innerRaces\">\n              <tr v-for=\"x in d.races\" >\n                <td>\n                  {{x.dist}} km \n                  <spam v-if=\"x.dnf\" class=\"dnf\">DNF<\/spam>\n                <\/td>\n                <td>\n                  <span v-for=\"y in x.runners\">\n                   {{y}} <br \/>\n                  <\/span>\n                <\/td>\n              <\/tr>\n            <\/table>\n          <\/td>\n          \n\n          <td>\n            <span v-for=\"x in d.images\">\n              <img v-bind:src=\"baseUrl+'img\/thumb\/'+x\" v-bind:data-featherlight=\"baseUrl+'img\/'+x\" class=\"thumbImg\"><\/img>\n            <\/span>\n          <\/td>\n        <\/tr>\n    <\/table>\n  <\/div>  \t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Gare Atleti TeamMartin10zerouno Anno 202620252024 Pulisci Totale atleti : {{runnersKm.length }} &#8211; Totale gare : {{data.length}} Classifica chilometrica Classifica per N. gare [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/page_fullwidth.php","meta":[],"categories":[],"tags":[],"_links":{"self":[{"href":"https:\/\/www.vertikalpuntamartin.it\/teammartin10zerouno\/wp-json\/wp\/v2\/pages\/4929"}],"collection":[{"href":"https:\/\/www.vertikalpuntamartin.it\/teammartin10zerouno\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.vertikalpuntamartin.it\/teammartin10zerouno\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.vertikalpuntamartin.it\/teammartin10zerouno\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vertikalpuntamartin.it\/teammartin10zerouno\/wp-json\/wp\/v2\/comments?post=4929"}],"version-history":[{"count":142,"href":"https:\/\/www.vertikalpuntamartin.it\/teammartin10zerouno\/wp-json\/wp\/v2\/pages\/4929\/revisions"}],"predecessor-version":[{"id":5482,"href":"https:\/\/www.vertikalpuntamartin.it\/teammartin10zerouno\/wp-json\/wp\/v2\/pages\/4929\/revisions\/5482"}],"wp:attachment":[{"href":"https:\/\/www.vertikalpuntamartin.it\/teammartin10zerouno\/wp-json\/wp\/v2\/media?parent=4929"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vertikalpuntamartin.it\/teammartin10zerouno\/wp-json\/wp\/v2\/categories?post=4929"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vertikalpuntamartin.it\/teammartin10zerouno\/wp-json\/wp\/v2\/tags?post=4929"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}