Ignore:
Timestamp:
8 Jun 2012, 11:42:58 (12 years ago)
Author:
Henrik Bettermann
Message:

Transpose tables for previewing data on import pages.

Location:
main/waeup.kofa/trunk/src/waeup/kofa/browser
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py

    r8573 r8651  
    931931        return reader.next()
    932932
    933     def getPreviewBody(self):
    934         """Get the first 5 rows of attached CSV file.
     933    def getPreviewTable(self):
     934        """Get transposed table with 3 sample records.
     935
     936        The first column contains the headers.
    935937        """
    936         result = []
     938        if not self.reader:
     939            return
     940        header = self.getPreviewHeader()
    937941        num = 0
    938         if not self.reader:
    939             return
    940         for row in self.reader:
    941             if num > 4:
     942        data = []
     943        for line in self.reader:
     944            if num > 2:
    942945                break
    943946            num += 1
    944             row = row.items()
    945             # Sort fields in headerfield order
    946             row = sorted(row,
    947                          key=lambda k: self.reader.fieldnames.index(k[0]))
    948             row = [x[1] for x in row]
    949             result.append(row)
    950         result.append(len(result[0]) * ['...'])
     947            data.append(line)
     948        result = []
     949        for name in header:
     950            result_line = []
     951            result_line.append(name)
     952            for d in data:
     953                result_line.append(d[name])
     954            result.append(result_line)
    951955        return result
    952956
     
    10561060        return reader.next()
    10571061
    1058     def getPreviewBody(self):
    1059         """Get the first 5 rows of attached CSV file.
     1062    def getPreviewTable(self):
     1063        """Get transposed table with 1 sample record.
     1064
     1065        The first column contains the headers.
    10601066        """
    1061         result = []
     1067        if not self.reader:
     1068            return
     1069        header = self.getPreviewHeader()
    10621070        num = 0
    1063         for row in self.reader:
    1064             if num > 4:
     1071        data = []
     1072        for line in self.reader:
     1073            if num > 0:
    10651074                break
    10661075            num += 1
    1067             row = row.items()
    1068             # Sort fields in headerfield order
    1069             row = sorted(row,
    1070                          key=lambda k: self.reader.fieldnames.index(k[0]))
    1071             row = [x[1] for x in row]
    1072             result.append(row)
    1073         result.append(len(result[0]) * ['...'])
     1076            data.append(line)
     1077        result = []
     1078        for name in header:
     1079            result_line = []
     1080            result_line.append(name)
     1081            for d in data:
     1082                result_line.append(d[name])
     1083            result.append(result_line)
    10741084        return result
    10751085
     
    11061116
    11071117    def update(self, headerfield=None, back2=None, cancel=None, proceed=None):
     1118        datatable.need()
    11081119        session = ISession(self.request)['waeup.kofa']
    11091120        self.filename = session.get('import_filename', None)
  • main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/datacenterimport2page.pt

    r7811 r8651  
    1010  </p>
    1111  <div>
    12     <table
    13        tal:define="body view/getPreviewBody;
    14                     headers view/getPreviewHeader;
    15                     fieldnum python: len(headers)">
     12    <table tal:define="prev_table view/getPreviewTable;">
    1613      <thead>
    1714        <tr>
    18           <th tal:repeat="headerfield headers"
    19               tal:content="headerfield"> headerfield
    20           </th>
     15          <th i18n:translate="">Header</th>
     16          <th i18n:translate="">Sample Record 1</th>
     17          <th i18n:translate="">Sample Record 2</th>
     18          <th i18n:translate="">Sample Record 3</th>
    2119        </tr>
    2220      </thead>
    2321      <tbody>
    24         <tr tal:repeat="row body">
     22        <tr tal:repeat="row prev_table">
    2523          <td tal:repeat="value row"
    2624              tal:content="value"> value
  • main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/datacenterimport3page.pt

    r7811 r8651  
    2929
    3030  <div>
    31     <table class="condensed-table"
    32      tal:define="body view/getPreviewBody;
    33            headers view/headerfields;
    34            fieldnum python: len(headers)">
     31
     32
     33    <table tal:define="prev_table view/getPreviewTable;
     34                       headers view/headerfields;">
    3535      <thead>
    3636        <tr>
    37           <th tal:repeat="headerfield headers"
    38               tal:content="headerfield">
    39             headerfield
    40           </th>
     37          <th i18n:translate="">Header</th>
     38          <th i18n:translate="">change to</th>
     39          <th i18n:translate="">Sample Record</th>
    4140        </tr>
    42         <tr>
    43           <th tal:repeat="headerfield headers">
    44             <i i18n:translate="">change to:</i>
    45           </th>
    46         </tr>
    47         <tr>
    48           <th tal:repeat="headerfield headers">
    49             <select name="headerfield">
     41      </thead>
     42      <tbody>
     43        <tr tal:repeat="row prev_table">
     44          <td tal:content="python:row[0]"> value
     45          </td>
     46          <td>
     47            <select class="span4" name="python:row[0]">
    5048              <option tal:repeat="opt view/getPossibleHeaders"
    5149                tal:attributes="value opt/value;
    52                   selected python: opt['value']==headerfield and 'selected' or '';"
     50                  selected python: opt['value']==row[0] and 'selected' or '';"
    5351                tal:content="opt/title">
    5452                new_header_name
    5553              </option>
    5654            </select>
    57           </th>
    58         </tr>
    59       </thead>
    60       <tbody>
    61         <tr tal:repeat="row body">
    62           <td tal:repeat="value row"
    63               tal:content="value">
    64             value
     55          </td>
     56          <td tal:repeat="value python:row[1:]"
     57              tal:content="value"> value
    6558          </td>
    6659        </tr>
Note: See TracChangeset for help on using the changeset viewer.