Subversion Repositories wimsdev

Rev

Rev 17752 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 17752 Rev 17770
Line 100... Line 100...
100
        self.mendel_family = mendel_family
100
        self.mendel_family = mendel_family
101
        self.parent_noble_gas = parent_noble_gas
101
        self.parent_noble_gas = parent_noble_gas
102
        return
102
        return
103
 
103
 
104
    def __str__(self):
104
    def __str__(self):
105
        return "{Z} {symbol} {name} {mass}, row = {mendel_row}, col = {mendel_col}, elec. struct. : {struc}".format(
105
        return "{Z} {symbol} {name} {mass}, row = {mendel_row}, col = {mendel_col}, elec. struct. {struc}".format(
106
            struc = ("[" + self.parent_noble_gas + "] " if \
106
            struc = ("[" + self.parent_noble_gas + "] " if \
107
                     self.parent_noble_gas else "") + \
107
                     self.parent_noble_gas else "") + \
108
            self.elec_structure_string,
108
            self.elec_structure_string,
109
            **self.__dict__
109
            **self.__dict__
110
        )
110
        )
Line 122... Line 122...
122
            soup.div.append(p)
122
            soup.div.append(p)
123
            return p
123
            return p
124
        addPara("symbol", self.symbol)
124
        addPara("symbol", self.symbol)
125
        addPara("Z", self.Z)
125
        addPara("Z", self.Z)
126
        addPara("mass", self.mass)
126
        addPara("mass", self.mass)
127
        struc = addPara("struct", ("[" + self.parent_noble_gas + "] " if \
127
        struc = addPara("str0", ("[" + self.parent_noble_gas + "] " if \
128
                     self.parent_noble_gas else ""))
128
                     self.parent_noble_gas else ""))
129
        for layer in self.elec_structure:
129
        for layer in self.elec_structure:
130
            span = soup.new_tag("span")
130
            span = soup.new_tag("span")
131
            span["class"] = "layer"
131
            span["class"] = "layer"
132
            m = re.match(r'(.*)\^\{(.*)\}', layer)
132
            m = re.match(r'(.*)\^\{(.*)\}', layer)
Line 210... Line 210...
210
                    result.append(elt)
210
                    result.append(elt)
211
                substructure.append(struct+'^{'+str(len(z_list))+'}')
211
                substructure.append(struct+'^{'+str(len(z_list))+'}')
212
        return result
212
        return result
213
 
213
 
214
    @staticmethod
214
    @staticmethod
215
    def get_table_html(css=True, js=False, standalone=False, tocxx = False):
215
    def get_table_html(css=True, js=False, standalone=False, tocxx = False,
-
 
216
                       compress = True):
216
        """
217
        """
217
        Crée un élément HTML prêt à insérer dans une page, ou une page
218
        Crée un élément HTML prêt à insérer dans une page, ou une page
218
        HTML complète.
219
        HTML complète.
219
        @param css fournit un élément de stryle, pour le placement des
220
        @param css fournit un élément de stryle, pour le placement des
220
                   DIVs de chaque élément (True par défaut)
221
                   DIVs de chaque élément (True par défaut)
221
        @param js fournit un script javascript pour augmenter les
222
        @param js fournit un script javascript pour augmenter les
222
                   facilités offertes par le tableau (False par défaut)
223
                   facilités offertes par le tableau (False par défaut)
223
        @param standalone fait une page HTML complète (False par défaut)
224
        @param standalone fait une page HTML complète (False par défaut)
224
        @param tocxx crée du code valide pour C++11 s'il est
225
        @param tocxx crée du code valide pour C++11 s'il est
225
                   positionné à vrai. Faux par défut.
226
                   positionné à vrai. Faux par défaut.
-
 
227
        @param compress minifiera le code CSS ; (True par défaut)
226
        """
228
        """
227
        result=""
229
        result=""
228
        # éléments de style
230
        # éléments de style
229
        if css:
231
        if css:
230
            """
232
            """
Line 284... Line 286...
284
                "row_enum": row_enum,
286
                "row_enum": row_enum,
285
                "col_enum": col_enum,
287
                "col_enum": col_enum,
286
            }
288
            }
287
            ################################
289
            ################################
288
            tm = jinja2.Template(open("mendeleiev_template.css").read())
290
            tm = jinja2.Template(open("mendeleiev_template.css").read())
-
 
291
            css_code = tm.render(**dict)
-
 
292
            if compress:
-
 
293
                from cssmin import cssmin
-
 
294
                css_code = cssmin(css_code, wrap = 72)
289
            result += "<style>\n" + tm.render(**dict) + "</style>\n"
295
            result += "<style>\n" + css_code + "</style>\n"
290
           
296
           
291
        # script interactif
297
        # script interactif
292
        if js:
298
        if js:
293
            with open("mendeleiev.js") as infile:
299
            with open("mendeleiev.js") as infile:
294
                result += "<script>\n" + infile.read() + "</script>\n"
300
                result += "<script>\n" + infile.read() + "</script>\n"
295
        # suite de DIVs, un par élément
301
        # suite de DIVs, un par élément
296
        result += "\n".join([elt.toHtml() for elt in Element.get_table()]) + "\n"
302
        result += "\n".join([elt.toHtml() for elt in Element.get_table()]) + "\n"
297
        # enrobage dans un DIV commun
303
        # enrobage dans un DIV commun
298
        result = """\
304
        result = """\
299
<div id="mendeleiev_table">{r}</div>
305
<div id="mendeleiev_table" style="position: relative">{r}</div>
300
<div id="one_element"></div>
306
<div id="one_element"></div>
301
<div id="wait" style="width:500; text-align: center;
307
<div id="wait" style="width:500; text-align: center;
302
     background: rgba(200,200,255,0.5); position: absolute;
308
     background: rgba(200,200,255,0.5); position: absolute;
303
     top: 50px; left: 200px; border: 1px navy solid; border-radius: 3px;">
309
     top: 50px; left: 200px; border: 1px navy solid; border-radius: 3px;">
304
        Wait a few seconds...
310
        Wait a few seconds...