mutsuda (owner)

Revisions

gist: 145280 Download_button fork
public
Public Clone URL: git://gist.github.com/145280.git
Embed All Files: show embed
x.js #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
CmdUtils.CreateCommand({
  names: ["tmb"],
  arguments: [{role: "parada",
               nountype: noun_arb_text,
               label: "codi_parada num_bus"}],
 
  homepage: "http://www.mutsuda.com",
  author: { name: "Masumi Mutsuda"},
  license: "MPL",
  description: "T'informa de quan arribaran els propers busos a les parades",
 
 
 
/*Pel simple fet d'introduir els 4 digits del codi d'una parada, apareixera en forma de preview
els dos busos següents per a tots els autobusos de la parada
*/
 
  preview: function( pblock, arguments)
  {
    var msg = 'Parada Bus"${paradaText}" el Bus ${busText}.';
    var subs = {paradaText: arguments.parada.text};
    var codiparada = arguments.parada.text.substring(0, 4);
    var codibus = arguments.parada.text.substring(5);
    var URL = "http://www.tmb.cat/ca_ES/tmbmulticanal/ibus/ibusweb/cercapercodi.jsp?parada="+codiparada+"&linia="+ codibus;
    if (arguments.parada.text.length == 4)
    {
      var msg = obtenirContent(URL);
      if (msg.indexOf("No existeix el codi de parada") > 0) pblock.innerHTML = "No existeix el codi parada";
      else
      {
        var start = msg.indexOf("<td width=\"100%\" class=\"txtgrisosc_gral\" align=\"center\">");
        var end = msg.indexOf("</table>", start);
        var stopE = 0;
        var parada = 0;
        var temps = 0;
        var stopS = msg.indexOf("<td align=\"center\">");
        stopS = msg.indexOf("<td align=\"center\">" , stopS+1);
        var x=0;
        
        while (x != "*")
        {
             stopS = msg.indexOf("<td align=\"center\">" , stopS+1);
             stopE = msg.indexOf("</td>", stopS);
             parada = msg.substring(stopS+19, stopE);
             temps = obteTemps(codiparada, parada);
             stopS = msg.indexOf("<td align=\"center\">" , stopS+1);
             stopE = msg.indexOf("</td>", stopS);
             msg = msg.substr(0, stopS) + temps + msg.substr(stopE);
             x = msg.charAt(msg.indexOf("<td align=\"center\">" , stopS+1)+21);
        }
        var show = msg.substring(start, end);
        pblock.innerHTML = show+"</table></td></tr>";
      }
    }
  },
  
 
/*Quan es prem Intro un cop introduida la comanda, es mostra en una finestra el temps
que trigaran els dos propers busos de la linia especificada*/
 
  execute: function(arguments)
  {
    var codiparada = arguments.parada.text.substring(0, 4);
    var codibus = arguments.parada.text.substring(5);
    text = obteTemps(codiparada, codibus);
    displayMessage(text);
  }
});
 
 
/*Donat un codi de parada i un numero de bus, la funcio retorna el teemps dels dos següents busos
en el format XXmin | YYmin.*/
 
function obteTemps(codiparada, codibus)
{
var URL = "http://www.tmb.cat/ca_ES/tmbmulticanal/ibus/ibusweb/cercapercodi.jsp?parada="+codiparada+"&linia="+ codibus;
    var msg = obtenirContent(URL);
    if (msg.indexOf("Línia i parada no coincidents") > 0) return "Línia i parada no coincidents";
    else if (msg.indexOf("Temporalment sense previsions") > 0) return "Temporalment sense previsions";
    else if (msg.indexOf("Consulteu les línies disponibles") > 0) return "Línia sense servei TMBiBus";
    else if (codiparada.length < 4) return "El codi de parada té un format invàlid";
    else if (codibus.length == 0) return "Has d'especificar una línia de bus";
    else
    {
      var start = msg.indexOf("<tr align=\"center\">");
      var end = msg.indexOf("</table>", start);
      start = msg.indexOf("Temps*");
      var firststart= msg.indexOf("<td align=\"center\">", start) + 19;
      var firstend = msg.indexOf("</td>", firststart);
      var proper1 = msg.substring(firststart, firstend);
      var secondstart = msg.indexOf("<td align=\"center\">", firstend) + 19;
      var secondend = msg.indexOf("</td>", secondstart);
      var proper2 = msg.substring(secondstart, secondend);
      if (proper2.indexOf(" Temps")>=0) proper2="";
      return proper1 + " | " + proper2;
     }
}
 
 
 
/*Donada una URL la funcio retorna en forma de String el contingut HTML de la mateixa*/
 
function obtenirContent(URL)
{
    var error=0;
    var req = new XMLHttpRequest();
    req.open("GET", URL, false);
    req.onreadystatechange=function()
    {
        if (req.readyState==4)
        {
            if (req.status!=200)
            {
                error=1;
            }
        }
    }
    req.send(null);
    var txt=req.responseText;
    return txt;
}