fix: inherit from wuttaweb for appinfo/index template
although for now, still must override for some link buttons
This commit is contained in:
		
							parent
							
								
									b6a8e508bf
								
							
						
					
					
						commit
						2ffc067097
					
				
					 3 changed files with 26 additions and 93 deletions
				
			
		|  | @ -1,8 +1,7 @@ | |||
| ## -*- coding: utf-8; -*- | ||||
| <%inherit file="/master/index.mako" /> | ||||
| <%inherit file="wuttaweb:templates/appinfo/index.mako" /> | ||||
| 
 | ||||
| <%def name="page_content()"> | ||||
| 
 | ||||
|   <div class="buttons"> | ||||
| 
 | ||||
|     <once-button type="is-primary" | ||||
|  | @ -28,95 +27,5 @@ | |||
| 
 | ||||
|   </div> | ||||
| 
 | ||||
|   <${b}-collapse class="panel" open> | ||||
| 
 | ||||
|     <template #trigger="props"> | ||||
|       <div class="panel-heading" | ||||
|            style="cursor: pointer;" | ||||
|            role="button"> | ||||
| 
 | ||||
|         ## TODO: for some reason buefy will "reuse" the icon | ||||
|         ## element in such a way that its display does not | ||||
|         ## refresh.  so to work around that, we use different | ||||
|         ## structure for the two icons, so buefy is forced to | ||||
|         ## re-draw | ||||
| 
 | ||||
|         <b-icon v-if="props.open" | ||||
|                 pack="fas" | ||||
|                 icon="angle-down"> | ||||
|         </b-icon> | ||||
| 
 | ||||
|         <span v-if="!props.open"> | ||||
|           <b-icon pack="fas" | ||||
|                   icon="angle-right"> | ||||
|           </b-icon> | ||||
|         </span> | ||||
| 
 | ||||
|         <span>Configuration Files</span> | ||||
|       </div> | ||||
|     </template> | ||||
| 
 | ||||
|     <div class="panel-block"> | ||||
|       <div style="width: 100%;"> | ||||
|         <${b}-table :data="configFiles"> | ||||
|            | ||||
|           <${b}-table-column field="priority" | ||||
|                           label="Priority" | ||||
|                           v-slot="props"> | ||||
|             {{ props.row.priority }} | ||||
|           </${b}-table-column> | ||||
| 
 | ||||
|           <${b}-table-column field="path" | ||||
|                           label="File Path" | ||||
|                           v-slot="props"> | ||||
|             {{ props.row.path }} | ||||
|           </${b}-table-column> | ||||
| 
 | ||||
|         </${b}-table> | ||||
|       </div> | ||||
|     </div> | ||||
|   </${b}-collapse> | ||||
| 
 | ||||
|   <${b}-collapse class="panel" | ||||
|               :open="false"> | ||||
| 
 | ||||
|     <template #trigger="props"> | ||||
|       <div class="panel-heading" | ||||
|            style="cursor: pointer;" | ||||
|            role="button"> | ||||
| 
 | ||||
|         ## TODO: for some reason buefy will "reuse" the icon | ||||
|         ## element in such a way that its display does not | ||||
|         ## refresh.  so to work around that, we use different | ||||
|         ## structure for the two icons, so buefy is forced to | ||||
|         ## re-draw | ||||
| 
 | ||||
|         <b-icon v-if="props.open" | ||||
|                 pack="fas" | ||||
|                 icon="angle-down"> | ||||
|         </b-icon> | ||||
| 
 | ||||
|         <span v-if="!props.open"> | ||||
|           <b-icon pack="fas" | ||||
|                   icon="angle-right"> | ||||
|           </b-icon> | ||||
|         </span> | ||||
| 
 | ||||
|         <strong>Installed Packages</strong> | ||||
|       </div> | ||||
|     </template> | ||||
| 
 | ||||
|     <div class="panel-block"> | ||||
|       <div style="width: 100%;"> | ||||
|         ${grid.render_vue_tag()} | ||||
|       </div> | ||||
|     </div> | ||||
|   </${b}-collapse> | ||||
| </%def> | ||||
| 
 | ||||
| <%def name="modify_vue_vars()"> | ||||
|   ${parent.modify_vue_vars()} | ||||
|   <script> | ||||
|     ThisPageData.configFiles = ${json.dumps([dict(path=p, priority=i) for i, p in enumerate(request.rattail_config.prioritized_files, 1)])|n} | ||||
|   </script> | ||||
|   ${parent.page_content()} | ||||
| </%def> | ||||
|  |  | |||
|  | @ -257,6 +257,9 @@ | |||
|       loading: false, | ||||
|       ajaxDataUrl: ${json.dumps(getattr(grid, 'ajax_data_url', request.path_url))|n}, | ||||
| 
 | ||||
|       ## nb. this tracks whether grid.fetchFirstData() happened | ||||
|       fetchedFirstData: false, | ||||
| 
 | ||||
|       savingDefaults: false, | ||||
| 
 | ||||
|       data: ${grid.vue_component}CurrentData, | ||||
|  | @ -519,6 +522,17 @@ | |||
|                       ...this.getFilterParams()} | ||||
|           }, | ||||
| 
 | ||||
|           ## nb. this is meant to call for a grid which is hidden at | ||||
|           ## first, when it is first being shown to the user.  and if | ||||
|           ## it was initialized with empty data set. | ||||
|           async fetchFirstData() { | ||||
|               if (this.fetchedFirstData) { | ||||
|                   return | ||||
|               } | ||||
|               await this.loadAsyncData() | ||||
|               this.fetchedFirstData = true | ||||
|           }, | ||||
| 
 | ||||
|           ## TODO: i noticed buefy docs show using `async` keyword here, | ||||
|           ## so now i am too.  knowing nothing at all of if/how this is | ||||
|           ## supposed to improve anything.  we shall see i guess | ||||
|  |  | |||
|  | @ -71,10 +71,20 @@ class AppInfoView(MasterView): | |||
|                                   app.get_title()) | ||||
| 
 | ||||
|     def get_data(self, session=None): | ||||
|         """ """ | ||||
| 
 | ||||
|         # nb. init with empty data, only load it upon user request | ||||
|         if not self.request.GET.get('partial'): | ||||
|             return [] | ||||
| 
 | ||||
|         # TODO: pretty sure this is not cross-platform.  probably some | ||||
|         # sort of pip methods belong on the app handler?  or it should | ||||
|         # have a pip handler for all that? | ||||
|         pip = os.path.join(sys.prefix, 'bin', 'pip') | ||||
|         output = subprocess.check_output([pip, 'list', '--format=json']) | ||||
|         data = json.loads(output.decode('utf_8').strip()) | ||||
| 
 | ||||
|         # must avoid null values for sort to work right | ||||
|         for pkg in data: | ||||
|             pkg.setdefault('editable_project_location', '') | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Lance Edgar
						Lance Edgar