Enhancing Tables with Angular for Dynamic Translation and Filtering

I'm facing a challenge with my search feature in a basic table -

<table>
  <thead>
    <tr>
      <th> Name </th>
      <th> Lastname </th>
      <th> Job Title </th>
    </tr>
   </thead>
  
  <tbody>
    <tr data-ng-repeat="data in ctrl.data | filter : searchQuery">
      <td>{{data.name}}</td>
      <td>{{data.lastname}}</td>
      <td>{{data.jobtitle | translate}}</td>
    </tr>  
  </tbody>
</table>

<input type="text" data-ng-model="searchQuery"/>

Currently, the search functionality only works with the original job title value and not with any translations. Is there a way to include translated job titles in the search results?

Answer №1

If you need to manage the translation in a more organized way, you can implement a custom filter for it

The Custom Filter:

app.filter('translateFilter', function($translate) {
  return function(input, param) {
    if (!param) {
      return input;
    }
    var searchVal = param.toLowerCase();
    var result = [];
    angular.forEach(input, function(item) {
      var translated = $translate.instant(item.jobtitle);
      if (translated.toLowerCase().indexOf(searchVal) > -1) {
        result.push(item);
      }
    });
    return result;
  };
});

To apply this filter, simply use it as follows:

Usage within HTML:

<tr data-ng-repeat="data in ctrl.data | translateFilter:searchQuery">

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

bridging information from tables with text fields in forms

I am working on an HTML/CSS page that utilizes a table layout filled with buttons to mimic a T9 keypad design. Within the page, I have a form containing two text fields. My aim is to populate these text fields with numbers based on the values from the tab ...

Even after deleting the circle from the Google Map, the label still persists within the Google Map Javascript API

Even after removing circles on the Google Map, the labels still persist. I use InfoBox to display labels on circles like this: myOptions.content = datadetail[i].Count; var ibLabel = new InfoBox(myOptions); ibLabel.open(map); I am trying to clear the circ ...

Transferring Data from Python Script to Browser (with an xserver running on a Linux system)

Looking for suggestions on how to efficiently transfer data from a Python script to a web browser. The Python script, as well as the browser, are operating under an xServer environment in Linux (specifically Raspbian on Raspberry Pi). The script is respon ...

Having trouble retrieving a value within the jQuery.ajax success function

I need to implement jQuery Validator in order to validate if a user's desired username is available during the sign-up process. The PHP script untaken.php is responsible for checking this, returning either ok if the username is free or taken if it is ...

Creating an event on the containing element

Here is my HTML tag: <ul> <li> <form>...</form> <div> <div class="A"></div> <div class="B"><img class="wantToShow"></div> </div> ...

Learn the steps to showcase the output in a paragraph using ReactJS

Is there a way to display the result in the browser instead of just exporting it to the console when using the code below? I am new to React and would like the result to appear in a paragraph or another tag on the webpage. import React, { Component, use ...

Executing Controller Actions within a JavaScript Timer

Presenting my latest timer: var eventDate = new Date(Date.parse(new Date) + 3600); function countdown() { var elapsed = Date.parse(eventDate) - Date.parse(new Date()); var seconds = Math.floor((elaps ...

Implementing dynamic data binding in JavaScript templates

I've been experimenting with jQuery and templates, and I managed to create a basic template binding system: <script type="text/template" id="Template"> <div>{0}</div> </script> Furthermore... var buffer = ''; v ...

JavaScript's toFixed method for decimals

I am encountering an issue with displaying prices for my products. I have labels in the form of "span" elements with prices such as 0.9, 1.23, and 9.0. I am using the method "toFixed(2)" to round these prices to two decimal places. However, I have notice ...

Jquery Plugin for Click Selection Activation

After receiving no response to my previous inquiry, I decided to proceed with this particular plugin setup. (function ( $ ) { $.fn.myPlugin = function (options) { options = $.extend( {}, $.fn.myPlugin.defaults, options ); return this.each(function (i ...

Encountering difficulties with the installation of Angular and Node on Ubuntu 16 operating system

After attempting various methods to install the latest version of Node on Ubuntu 16, I was consistently getting stuck with version 4. However, after following a helpful guide, I finally managed to update to version 8.X. Following this, I installed npm succ ...

Error in AngularJS and TypeScript: Property 'module' is undefined and cannot be read

I'm attempting to incorporate TypeScript into my AngularJS 1.x application. Currently, my application utilizes Webpack as a module loader. I configured it to handle the TypeScript compilation by renaming all *.js source files to *.ts, and managed to ...

Successive promises linked together with varying parameters

Originally, I utilized callbacks for all of my nodejs functions that needed to access mysql or txt files. Unfortunately, this resulted in messy code with callbacks nested inside one another, so I decided to switch to promises. The question now is, how can ...

Tips for configuring CakePHP to trigger the second submit button when the enter key is pressed

My form includes two submit buttons: "cancel" and "find." While both buttons work correctly when clicked, pressing the enter key always triggers the submission of "cancel." I don't want to change the button order in the form. To address this issue, I ...

Angular single page application with a sleek, user-friendly navigation bar for easy browsing

I have been attempting to solve the issue at hand without much success. As a newcomer to web development, I have been working on creating a basic app using angularjs and bootstrap. My pages are fairly sparse, consisting only of a few inputs and buttons t ...

Guide to managing AutoComplete {onChange} in MUI version 5 with a personalized hook

Currently, I am utilizing a custom hook that manages the validation and handling of the onChange function. For most components like input, select, and textField, I have no trouble with handling the onChange event using the syntax below: The code snippet ...

Display images in a list with a gradual fade effect as they load in Vue.js

In my Vue project, I am looking to display images one at a time with a fading effect. I have added a transition group with a fade in effect and a function that adds each image with a small delay. However, I am facing an issue where all the images show up ...

Unable to change the filename when utilizing Angular.js ng-file-upload

After uploading a file using Angular.js ng-file-upload, I am attempting to rename the file. However, when I remove the properties ngf-min-height="400" ngf-resize="{width: 400, height:400}", I encounter an issue. Below is my code: <input type="file" dat ...

Customizing the CSS of the TinyMCE editor within a React application

Incorporating TinyMCE 5 into my React project has been an interesting challenge. I'm looking to personalize the editor by adjusting elements like borders and adding box shadows to the toolbar. Despite attempting to add CSS through the content_css prop ...

Resolve feature for UI routes fails to function upon refreshing the page

My app utilizes UI Route for view routing. When accessing /berlinerliste/, a function is triggered to display an array of objects. If one of these objects is clicked, the view changes to /berlinerliste/{id}/ and shows the details of that specific object. ...