<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>HTML</title>
	<atom:link href="https://khalil232.com/tag/html/feed/" rel="self" type="application/rss+xml" />
	<link>https://khalil232.com</link>
	<description></description>
	<lastBuildDate>Tue, 14 Apr 2026 20:16:14 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/khalil232-favicon-color.png?fit=32%2C32&#038;ssl=1</url>
	<title>HTML</title>
	<link>https://khalil232.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">222554886</site>	<item>
		<title>Building User-Friendly Web Apps</title>
		<link>https://khalil232.com/vbcs-tutorials/298/how-to-build-user-friendly-web-apps/</link>
		
		<dc:creator><![CDATA[khalil]]></dc:creator>
		<pubDate>Mon, 18 Nov 2024 16:15:31 +0000</pubDate>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[VBCS-Tutorials]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[VBCS]]></category>
		<guid isPermaLink="false">https://khalil232.com/?p=298</guid>

					<description><![CDATA[Building a user-friendly web app isn’t just about features. Learn practical UX improvements like better navigation, non-blocking interactions, and clear visual cues that make your app easier to use.]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-jetpack-markdown"><p>Building a web app isn’t just about features. It’s about how users interact with it. A good app should feel natural, predictable, and easy to use. Small usability improvements often make a big difference in how people experience your product.</p>
<hr>
<h2>Navigation Enhancements</h2>
<h3>Make Pages Easy to Bookmark</h3>
<p>Update the URL to reflect the current state when users search, filter, or view specific content. This allows them to return to the same place without repeating steps.</p>
<ul>
<li>
<p><strong>Example:</strong></p>
<ul>
<li>Before: User searches for “Vehicle XYZ”</li>
<li>After: <code>khalil232.com/someapp/search?query=Vehicle+XYZ</code></li>
</ul>
</li>
</ul>
<p>This saves time and makes your app feel more reliable.</p>
<h3>Support Deep Linking</h3>
<p>Allow users to open specific records, sections, or screens directly using a URL. This avoids repetitive navigation.</p>
<ul>
<li>
<p><strong>Example:</strong></p>
<ul>
<li><code>khalil232.com/someapp/vehicle/12345</code></li>
</ul>
</li>
</ul>
<p>Deep linking is especially useful in business apps where users frequently revisit or share specific records.</p>
<h2>Respect User Actions</h2>
<h3>Avoid Restricting Basic Functionalities</h3>
<p>Do not block basic browser actions like cut, copy, or paste. Users expect these to work everywhere.</p>
<ul>
<li>
<p><strong>Avoid:</strong></p>
<ul>
<li>Disabling right-click</li>
<li>Preventing text selection</li>
</ul>
</li>
</ul>
<p>Blocking these actions creates frustration and breaks normal user behavior.</p>
<h2>Non-Blocking Processes</h2>
<p><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/khalil232.com/wp-content/uploads/2024/11/do-dont-blocking-ui.png?ssl=1" alt="Do vs Don't blocking ui example"></p>
<h3>Reduce Blocking Actions</h3>
<p>Full-screen loaders and blocking overlays interrupt users and slow them down. Instead, allow them to continue working.</p>
<ul>
<li>
<p><strong>Better approaches:</strong></p>
<ul>
<li>Run tasks in the background</li>
<li>Keep screens interactive</li>
<li>Show completion using notifications or toasts</li>
</ul>
</li>
</ul>
<h4>Example</h4>
<p>While generating a report, let users continue using the app. Notify them when the report is ready to download.</p>
<p>This keeps the app responsive and efficient.</p>
<h2>Visual Clarity</h2>
<h3>Make Links Visually Distinct</h3>
<p><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/khalil232.com/wp-content/uploads/2024/11/do-dont-link-image.png?ssl=1" alt="Do vs Don't link example"></p>
<p>Links should clearly look clickable. Use color, underline, or icons to differentiate them from normal text.</p>
<ul>
<li>
<p><strong>Example:</strong></p>
<ul>
<li>Blue, underlined text for links</li>
</ul>
</li>
</ul>
<p>Clear visual cues improve navigation and reduce confusion.</p>
<h3>Confirm Difficult Actions</h3>
<p>Always confirm actions that cannot be undone, such as deleting data.</p>
<p><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/khalil232.com/wp-content/uploads/2024/11/delete-confirmation.png?ssl=1" alt="Delete popup example"></p>
<ul>
<li>
<p><strong>Example:</strong></p>
<ul>
<li>“This action will permanently delete your record. Do you want to continue?”</li>
</ul>
</li>
</ul>
<p>This prevents mistakes and gives users confidence.</p>
<h2>Data Management</h2>
<h3>Manage Text Length in Tables or Lists</h3>
<p>Long text can break layouts and reduce readability. Handle it properly.</p>
<ul>
<li>
<p><strong>Recommended:</strong></p>
<ul>
<li>Truncate long text</li>
<li>Add “Read More” options</li>
<li>Use tooltips or modals for full content</li>
</ul>
</li>
</ul>
<p>This keeps the UI clean without hiding important information.</p>
<hr>
<h3>File Upload Previews</h3>
<p><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/khalil232.com/wp-content/uploads/2024/11/File-upload-do-dont.png?ssl=1" alt="Do vs Don't File Upload example"></p>
<p>Show a preview before users submit uploaded files. Include key details.</p>
<ul>
<li>
<p><strong>Display:</strong></p>
<ul>
<li>File name</li>
<li>File size</li>
<li>File type</li>
</ul>
</li>
</ul>
<p>Users should be able to remove or replace files easily before submitting.</p>
<h2>Conclusion</h2>
<p>User-friendly apps are built through small, thoughtful decisions.</p>
<p>Making navigation easier, avoiding unnecessary restrictions, and keeping the interface responsive all contribute to a better experience. These improvements may seem minor, but they significantly reduce user frustration and make your app more enjoyable to use.</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">298</post-id>	</item>
		<item>
		<title>Getting time difference from now</title>
		<link>https://khalil232.com/javascript/258/getting-time-difference-from-now/</link>
		
		<dc:creator><![CDATA[khalil]]></dc:creator>
		<pubDate>Fri, 10 May 2024 01:54:15 +0000</pubDate>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<guid isPermaLink="false">https://khalil232.com/?p=258</guid>

					<description><![CDATA[Intro Working with raw timestamps is not user-friendly. Instead of showing dates like &#8220;2024-05-10 10:15:43&#8221;,we can display them in a more readable way: &#8211; 5 minutes ago&#8211; 2 days ago&#8211; in 3 months This is called relative time formatting. Example Ouput let us say today is 15-Apr-2026 and we send the input date string, the [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Intro</h2>



<p>Working with raw timestamps is not user-friendly.</p>



<p>Instead of showing dates like &#8220;2024-05-10 10:15:43&#8221;,<br>we can display them in a more readable way: </p>



<p>&#8211; 5 minutes ago<br>&#8211; 2 days ago<br>&#8211; in 3 months</p>



<p>This is called relative time formatting.</p>



<h2 class="wp-block-heading">Example Ouput</h2>



<p>let us say today is 15-Apr-2026 and we send the input date string, the api will return date readable </p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td>Input Date String</td><td>Date Readable</td><td>Time Before / After</td></tr><tr><td>10-Apr-2025</td><td>Thursday, 10 April 2025</td><td>last year</td></tr><tr><td>20-May-2025</td><td>Tuesday, 20 May 2025</td><td>11 months ago</td></tr><tr><td>10-Mar-2026</td><td>Tuesday, 10 March 2026</td><td>last month</td></tr><tr><td>20-Mar-2026</td><td>Friday, 20 March 2026</td><td>26 days ago</td></tr><tr><td>10-Apr-2026</td><td>Friday, 10 April 2026</td><td>5 days ago</td></tr><tr><td>22-Apr-2026</td><td>Wednesday, 22 April 2026</td><td>in 7 days</td></tr><tr><td>10-May-2026</td><td>Sunday, 10 May 2026</td><td>in 25 days</td></tr><tr><td>20-May-2026</td><td>Wednesday, 20 May 2026</td><td>next month</td></tr><tr><td>10-Apr-2027</td><td>Saturday, 10 April 2027</td><td>in 12 months</td></tr><tr><td>20-Apr-2027</td><td>Tuesday, 20 April 2027</td><td>next year</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Try it yourself </h2>



<p>Enter any date and see how it converts into relative time.</p>



<iframe src="https://khalil232.com/apps/plain/date-time-ago/index.html" frameborder="0" width="100%" height="600px"></iframe>



<h2 class="wp-block-heading">How it works </h2>



<p>We calculate the difference between the current time and the given date.</p>



<p>Then we convert that difference into units like seconds, minutes, hours, days, months, or years.</p>



<p>Finally, we format it into readable text like &#8220;2 hours ago&#8221; or &#8220;in 5 days&#8221;.</p>



<h2 class="wp-block-heading">Code Example</h2>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>function getTimeAgo(dateStr) {
  const relativeTime = new RelativeTime(); // defaults to OS localen  
  let dateObj = new Date(dateStr); 
  return relativeTime.from(dateObj);
}</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">function</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">getTimeAgo</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">dateStr</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">relativeTime</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">RelativeTime</span><span style="color: #D4D4D4">(); </span><span style="color: #6A9955">// defaults to OS localen  </span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">let</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">dateObj</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Date</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">dateStr</span><span style="color: #D4D4D4">); </span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">relativeTime</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">from</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">dateObj</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span></code></pre></div>



<p>We can use JavaScript to convert a date into a readable relative time format.</p>



<p>For example, &#8220;2024-05-10T01:25:14.317Z&#8221; is less readable than &#8220;7 hours ago&#8221;.</p>



<p>I have used the relative-time library to simplify this conversion:<br><a href="https://github.com/yairEO/relative-time">https://github.com/yairEO/relative-time</a></p>



<p>Full code available here:<br><a href="https://github.com/khalilahmed232/khalilahmed232/tree/main/plain/date-time-ago">https://github.com/khalilahmed232/khalilahmed232/tree/main/plain/date-time-ago</a></p>



<p>This makes date display much more user-friendly in real applications.</p>



<p>Using relative time formatting makes applications feel more modern and user-friendly, especially for feeds, comments, and activity logs.</p>



<p></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">258</post-id>	</item>
		<item>
		<title>To upload csv data as ADP(Array data provider) or array</title>
		<link>https://khalil232.com/vbcs-tutorials/49/to-upload-csv-data-as-adparray-data-provider-or-array/</link>
		
		<dc:creator><![CDATA[khalil]]></dc:creator>
		<pubDate>Mon, 29 Apr 2024 19:16:42 +0000</pubDate>
				<category><![CDATA[VBCS-Tutorials]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[OJET]]></category>
		<category><![CDATA[VBCS]]></category>
		<guid isPermaLink="false">https://khalil232.com/?p=49</guid>

					<description><![CDATA[Steps to upload csv data as ADP(Array data provider) or array JavaScript function Sample CSV data that will work with this code Sample file picker html code Sample working code &#8212; iframe Link to live demo &#8212; file-picker]]></description>
										<content:encoded><![CDATA[
<p>Steps to upload csv data as ADP(Array data provider) or array</p>



<ul class="wp-block-list">
<li>Add a file component</li>



<li>On file select call the below JavaScript function and pass file as parameter</li>



<li>Assign the result from below function to ADP.data or Array </li>
</ul>



<p>JavaScript function </p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="PageModule.prototype.getRowsFromCsv = function (file) {
  return new Promise((resolve) =&gt; {
    try {
      let fileContent = [];
      const fileReader = new FileReader();
      fileReader.readAsText(file);
      fileReader.onload = (e) =&gt; {
        let result = e.target.result;
        let columns = ['employee','name','phone','salary'];
        let size;
        let inputData = [];
        if (result) {
          let lines = result.split(&quot;\n&quot;);
          for ( let  i = 1 ; i &lt; lines.length ; i++ ) {
            let row = lines[i];
            let rowArray = row.split(&quot;,&quot;);
            let inputObj = {} ;
            inputObj.employee = rowArray[0];
            inputObj.name = rowArray[1];
            inputObj.phone = rowArray[2];
            inputObj.salary= rowArray[3];
            inputData.push(inputObj);
          }
          resolve({
            success: true,
            inputData: inputData,
            error: &quot;&quot;
          });
        } else {
          resolve({
            success: false,
            inputData: [],
            error: &quot;Empty File : &quot; + result
          });
        }
      };
    } catch (err) {
      resolve({
        success: false,
        inputData: [],
        error: &quot;Error while reading file : &quot; + err.detail
      });
    }
  });
};" style="color:#babed8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki material-theme-ocean" style="background-color: #0F111A" tabindex="0"><code><span class="line"><span style="color: #FFCB6B">PageModule</span><span style="color: #89DDFF">.</span><span style="color: #BABED8">prototype</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">getRowsFromCsv</span><span style="color: #BABED8"> </span><span style="color: #89DDFF">=</span><span style="color: #BABED8"> </span><span style="color: #C792EA">function</span><span style="color: #BABED8"> </span><span style="color: #89DDFF">(</span><span style="color: #BABED8; font-style: italic">file</span><span style="color: #89DDFF">)</span><span style="color: #BABED8"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #89DDFF; font-style: italic">return</span><span style="color: #F07178"> </span><span style="color: #89DDFF">new</span><span style="color: #F07178"> </span><span style="color: #FFCB6B">Promise</span><span style="color: #F07178">(</span><span style="color: #89DDFF">(</span><span style="color: #BABED8; font-style: italic">resolve</span><span style="color: #89DDFF">)</span><span style="color: #F07178"> </span><span style="color: #C792EA">=&gt;</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">    </span><span style="color: #89DDFF; font-style: italic">try</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #C792EA">let</span><span style="color: #F07178"> </span><span style="color: #BABED8">fileContent</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> []</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #C792EA">const</span><span style="color: #F07178"> </span><span style="color: #BABED8">fileReader</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #89DDFF">new</span><span style="color: #F07178"> </span><span style="color: #82AAFF">FileReader</span><span style="color: #F07178">()</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #BABED8">fileReader</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">readAsText</span><span style="color: #F07178">(</span><span style="color: #BABED8">file</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #BABED8">fileReader</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">onload</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #89DDFF">(</span><span style="color: #BABED8; font-style: italic">e</span><span style="color: #89DDFF">)</span><span style="color: #F07178"> </span><span style="color: #C792EA">=&gt;</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">        </span><span style="color: #C792EA">let</span><span style="color: #F07178"> </span><span style="color: #BABED8">result</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #BABED8">e</span><span style="color: #89DDFF">.</span><span style="color: #BABED8">target</span><span style="color: #89DDFF">.</span><span style="color: #BABED8">result</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">        </span><span style="color: #C792EA">let</span><span style="color: #F07178"> </span><span style="color: #BABED8">columns</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> [</span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">employee</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">name</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">phone</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">salary</span><span style="color: #89DDFF">&#39;</span><span style="color: #F07178">]</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">        </span><span style="color: #C792EA">let</span><span style="color: #F07178"> </span><span style="color: #BABED8">size</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">        </span><span style="color: #C792EA">let</span><span style="color: #F07178"> </span><span style="color: #BABED8">inputData</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> []</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">        </span><span style="color: #89DDFF; font-style: italic">if</span><span style="color: #F07178"> (</span><span style="color: #BABED8">result</span><span style="color: #F07178">) </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">          </span><span style="color: #C792EA">let</span><span style="color: #F07178"> </span><span style="color: #BABED8">lines</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #BABED8">result</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">split</span><span style="color: #F07178">(</span><span style="color: #89DDFF">&quot;</span><span style="color: #BABED8">\n</span><span style="color: #89DDFF">&quot;</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">          </span><span style="color: #89DDFF; font-style: italic">for</span><span style="color: #F07178"> ( </span><span style="color: #C792EA">let</span><span style="color: #F07178">  </span><span style="color: #BABED8">i</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #F78C6C">1</span><span style="color: #F07178"> </span><span style="color: #89DDFF">;</span><span style="color: #F07178"> </span><span style="color: #BABED8">i</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&lt;</span><span style="color: #F07178"> </span><span style="color: #BABED8">lines</span><span style="color: #89DDFF">.</span><span style="color: #BABED8">length</span><span style="color: #F07178"> </span><span style="color: #89DDFF">;</span><span style="color: #F07178"> </span><span style="color: #BABED8">i</span><span style="color: #89DDFF">++</span><span style="color: #F07178"> ) </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">            </span><span style="color: #C792EA">let</span><span style="color: #F07178"> </span><span style="color: #BABED8">row</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #BABED8">lines</span><span style="color: #F07178">[</span><span style="color: #BABED8">i</span><span style="color: #F07178">]</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">            </span><span style="color: #C792EA">let</span><span style="color: #F07178"> </span><span style="color: #BABED8">rowArray</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #BABED8">row</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">split</span><span style="color: #F07178">(</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">,</span><span style="color: #89DDFF">&quot;</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">            </span><span style="color: #C792EA">let</span><span style="color: #F07178"> </span><span style="color: #BABED8">inputObj</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{}</span><span style="color: #F07178"> </span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">            </span><span style="color: #BABED8">inputObj</span><span style="color: #89DDFF">.</span><span style="color: #BABED8">employee</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #BABED8">rowArray</span><span style="color: #F07178">[</span><span style="color: #F78C6C">0</span><span style="color: #F07178">]</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">            </span><span style="color: #BABED8">inputObj</span><span style="color: #89DDFF">.</span><span style="color: #BABED8">name</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #BABED8">rowArray</span><span style="color: #F07178">[</span><span style="color: #F78C6C">1</span><span style="color: #F07178">]</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">            </span><span style="color: #BABED8">inputObj</span><span style="color: #89DDFF">.</span><span style="color: #BABED8">phone</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #BABED8">rowArray</span><span style="color: #F07178">[</span><span style="color: #F78C6C">2</span><span style="color: #F07178">]</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">            </span><span style="color: #BABED8">inputObj</span><span style="color: #89DDFF">.</span><span style="color: #BABED8">salary</span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #BABED8">rowArray</span><span style="color: #F07178">[</span><span style="color: #F78C6C">3</span><span style="color: #F07178">]</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">            </span><span style="color: #BABED8">inputData</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">push</span><span style="color: #F07178">(</span><span style="color: #BABED8">inputObj</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">          </span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #F07178">          </span><span style="color: #82AAFF">resolve</span><span style="color: #F07178">(</span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">            success</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #FF9CAC">true</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">            inputData</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #BABED8">inputData</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">            error</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&quot;&quot;</span></span>
<span class="line"><span style="color: #F07178">          </span><span style="color: #89DDFF">}</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">        </span><span style="color: #89DDFF">}</span><span style="color: #F07178"> </span><span style="color: #89DDFF; font-style: italic">else</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">          </span><span style="color: #82AAFF">resolve</span><span style="color: #F07178">(</span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">            success</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #FF9CAC">false</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">            inputData</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> []</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">            error</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">Empty File : </span><span style="color: #89DDFF">&quot;</span><span style="color: #F07178"> </span><span style="color: #89DDFF">+</span><span style="color: #F07178"> </span><span style="color: #BABED8">result</span></span>
<span class="line"><span style="color: #F07178">          </span><span style="color: #89DDFF">}</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">        </span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #89DDFF">};</span></span>
<span class="line"><span style="color: #F07178">    </span><span style="color: #89DDFF">}</span><span style="color: #F07178"> </span><span style="color: #89DDFF; font-style: italic">catch</span><span style="color: #F07178"> (</span><span style="color: #BABED8">err</span><span style="color: #F07178">) </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #82AAFF">resolve</span><span style="color: #F07178">(</span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">        success</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #FF9CAC">false</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">        inputData</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> []</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">        error</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">Error while reading file : </span><span style="color: #89DDFF">&quot;</span><span style="color: #F07178"> </span><span style="color: #89DDFF">+</span><span style="color: #F07178"> </span><span style="color: #BABED8">err</span><span style="color: #89DDFF">.</span><span style="color: #BABED8">detail</span></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #89DDFF">}</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">    </span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #89DDFF">}</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #89DDFF">};</span></span></code></pre></div>



<p>Sample CSV data that will work with this code </p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="employee,name,phone,salary
1,khalil,123,3000
2,ahmed,345,4000
3,sayeed,929,25000" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #D4D4D4">employee,name,phone,salary</span></span>
<span class="line"><span style="color: #D4D4D4">1,khalil,123,3000</span></span>
<span class="line"><span style="color: #D4D4D4">2,ahmed,345,4000</span></span>
<span class="line"><span style="color: #D4D4D4">3,sayeed,929,25000</span></span></code></pre></div>



<p></p>



<p>Sample file picker html code</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="&lt;div class=&quot;oj-sm-padding-0 oj-md-padding-4x&quot;&gt;
    &lt;h4&gt;file-picker sample code&lt;/h4&gt;

    &lt;oj-file-picker on-oj-select=&quot;[[ fileSelectListener ]]&quot;&gt;

    &lt;/oj-file-picker&gt;


    &lt;oj-table class=&quot;custom-table&quot; id=&quot;employeetable&quot; scroll-policy=&quot;loadMoreOnScroll&quot;
        class=&quot;oj-flex-item oj-sm-12 oj-md-12&quot; data=&quot;[[ employeeADP ]]&quot; columns='[
    {&quot;headerText&quot;:&quot;employee&quot;,&quot;field&quot;:&quot;employee&quot;},
    {&quot;headerText&quot;:&quot;name&quot;,&quot;field&quot;:&quot;name&quot;},
    {&quot;headerText&quot;:&quot;phone&quot;,&quot;field&quot;:&quot;phone&quot;},
    {&quot;headerText&quot;:&quot;salary&quot;,&quot;field&quot;:&quot;salary&quot;}
    ]'&gt;
    &lt;/oj-table&gt;

&lt;/div&gt;" style="color:#babed8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki material-theme-ocean" style="background-color: #0F111A" tabindex="0"><code><span class="line"><span style="color: #89DDFF">&lt;</span><span style="color: #F07178">div</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">class</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">oj-sm-padding-0 oj-md-padding-4x</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #BABED8">    </span><span style="color: #89DDFF">&lt;</span><span style="color: #F07178">h4</span><span style="color: #89DDFF">&gt;</span><span style="color: #BABED8">file-picker sample code</span><span style="color: #89DDFF">&lt;/</span><span style="color: #F07178">h4</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #BABED8">    </span><span style="color: #89DDFF">&lt;</span><span style="color: #F07178">oj-file-picker</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">on-oj-select</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">[[ fileSelectListener ]]</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #BABED8">    </span><span style="color: #89DDFF">&lt;/</span><span style="color: #F07178">oj-file-picker</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color: #BABED8">    </span><span style="color: #89DDFF">&lt;</span><span style="color: #F07178">oj-table</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">class</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">custom-table</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">id</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">employeetable</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">scroll-policy</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">loadMoreOnScroll</span><span style="color: #89DDFF">&quot;</span></span>
<span class="line"><span style="color: #89DDFF">        </span><span style="color: #C792EA">class</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">oj-flex-item oj-sm-12 oj-md-12</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">data</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">[[ employeeADP ]]</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">columns</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">[</span></span>
<span class="line"><span style="color: #C3E88D">    {&quot;headerText&quot;:&quot;employee&quot;,&quot;field&quot;:&quot;employee&quot;},</span></span>
<span class="line"><span style="color: #C3E88D">    {&quot;headerText&quot;:&quot;name&quot;,&quot;field&quot;:&quot;name&quot;},</span></span>
<span class="line"><span style="color: #C3E88D">    {&quot;headerText&quot;:&quot;phone&quot;,&quot;field&quot;:&quot;phone&quot;},</span></span>
<span class="line"><span style="color: #C3E88D">    {&quot;headerText&quot;:&quot;salary&quot;,&quot;field&quot;:&quot;salary&quot;}</span></span>
<span class="line"><span style="color: #C3E88D">    ]</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #BABED8">    </span><span style="color: #89DDFF">&lt;/</span><span style="color: #F07178">oj-table</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #89DDFF">&lt;/</span><span style="color: #F07178">div</span><span style="color: #89DDFF">&gt;</span></span></code></pre></div>



<p>Sample working code &#8212; iframe</p>



<p></p>



<iframe src="https://khalil232.com/apps/ojet-apps/?ojr=file-picker" frameborder="0" width="100%" height="400px">

</iframe>



<p>Link to live demo &#8212; <a href="https://khalil232.com/apps/ojet-apps/?ojr=file-picker">file-picker</a></p>



<p></p>



<p></p>



<p></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">49</post-id>	</item>
		<item>
		<title>Format dates in VBCS page using functions</title>
		<link>https://khalil232.com/vbcs-tutorials/241/format-dates-in-vbcs-page-using-functions/</link>
					<comments>https://khalil232.com/vbcs-tutorials/241/format-dates-in-vbcs-page-using-functions/#comments</comments>
		
		<dc:creator><![CDATA[khalil]]></dc:creator>
		<pubDate>Wed, 17 Jan 2024 20:20:18 +0000</pubDate>
				<category><![CDATA[VBCS-Tutorials]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[OJET]]></category>
		<category><![CDATA[VBCS]]></category>
		<guid isPermaLink="false">https://khalil232.com/?p=241</guid>

					<description><![CDATA[You can use oj-input-date or oj-input-date-time components for showing formatted date and use convertor options But when using above component only for read-only purpose to show some values in grid or table, it doesn&#8217;t make sense to use input fields. Instead we can use oj-bind-text field and pass data using following JavaScript function. The JavaScript [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>You can use <strong>oj-input-date</strong> or <strong>oj-input-date-time</strong> components for showing formatted date and use convertor options  </p>



<p></p>



<p>But when using above component only for read-only purpose to show some values in grid or table, it doesn&#8217;t make sense to use input fields.</p>



<p></p>



<p>Instead we can use <strong>oj-bind-text</strong> field and pass data using following JavaScript function. </p>



<p></p>



<p>The JavaScript function will add necessary formatting to the date and return the value as string.</p>



<p></p>



<p>Live code preview</p>



<iframe src="https://khalil232.com/apps/ojet-apps/?ojr=date-format-sample" frameborder="0" width="100%" height="400px">

</iframe>



<p></p>



<p>We can use date convertor functions to format the date in required format </p>



<p></p>



<p>JavaScript function</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="define([&quot;ojs/ojconverter-datetime&quot;], (datetimeConverter) =&gt; {
  &quot;use strict&quot;;

  class PageModule {
    convertDateToStr(customDate) {
        let dateConvertor = new datetimeConverter.IntlDateTimeConverter({
          pattern: &quot;dd-MMM-yyyy&quot;,
        });
      return dateConvertor.format(customDate);
    }
  }

  return PageModule;
});

" style="color:#babed8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki material-theme-ocean" style="background-color: #0F111A" tabindex="0"><code><span class="line"><span style="color: #82AAFF">define</span><span style="color: #BABED8">([</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">ojs/ojconverter-datetime</span><span style="color: #89DDFF">&quot;</span><span style="color: #BABED8">]</span><span style="color: #89DDFF">,</span><span style="color: #BABED8"> </span><span style="color: #89DDFF">(</span><span style="color: #BABED8; font-style: italic">datetimeConverter</span><span style="color: #89DDFF">)</span><span style="color: #BABED8"> </span><span style="color: #C792EA">=&gt;</span><span style="color: #BABED8"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">use strict</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #C792EA">class</span><span style="color: #F07178"> </span><span style="color: #FFCB6B">PageModule</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">    convertDateToStr</span><span style="color: #89DDFF">(</span><span style="color: #BABED8; font-style: italic">customDate</span><span style="color: #89DDFF">)</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">        </span><span style="color: #C792EA">let</span><span style="color: #F07178"> </span><span style="color: #BABED8">dateConvertor</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #89DDFF">new</span><span style="color: #F07178"> </span><span style="color: #BABED8">datetimeConverter</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">IntlDateTimeConverter</span><span style="color: #F07178">(</span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">          pattern</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">dd-MMM-yyyy</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">        </span><span style="color: #89DDFF">}</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #89DDFF; font-style: italic">return</span><span style="color: #F07178"> </span><span style="color: #BABED8">dateConvertor</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">format</span><span style="color: #F07178">(</span><span style="color: #BABED8">customDate</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">    </span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #89DDFF">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #89DDFF; font-style: italic">return</span><span style="color: #F07178"> </span><span style="color: #BABED8">PageModule</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #89DDFF">}</span><span style="color: #BABED8">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"></span>
<span class="line"></span></code></pre></div>



<p>Patterns examples</p>



<figure class="wp-block-table"><table><thead><tr><th class="has-text-align-left" data-align="left">Patterns </th><th class="has-text-align-left" data-align="left">Input &#8211; date string</th><th class="has-text-align-left" data-align="left">Output &#8211; formatted date</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">dd-MMM-yyyy</td><td class="has-text-align-left" data-align="left">2024-01-18T13:59:23+05:30</td><td class="has-text-align-left" data-align="left">18-Jan-2024</td></tr><tr><td class="has-text-align-left" data-align="left">dd-MM-yyyy</td><td class="has-text-align-left" data-align="left">2024-01-18T13:59:23+05:30</td><td class="has-text-align-left" data-align="left">18-01-2024</td></tr><tr><td class="has-text-align-left" data-align="left">MM/dd/yyyy</td><td class="has-text-align-left" data-align="left">2024-01-18T13:59:23+05:30</td><td class="has-text-align-left" data-align="left">01/18/2024</td></tr><tr><td class="has-text-align-left" data-align="left">MM/dd/yyyy hh:mm:ss</td><td class="has-text-align-left" data-align="left">2024-01-18T13:59:23+05:30</td><td class="has-text-align-left" data-align="left">01/18/2024 01:59:23</td></tr><tr><td class="has-text-align-left" data-align="left">MM/dd/yyyy hh:mm:ss a</td><td class="has-text-align-left" data-align="left">2024-01-18T13:59:23+05:30</td><td class="has-text-align-left" data-align="left">01/18/2024 01:59:23 PM</td></tr></tbody></table></figure>



<p>References &#8211; </p>



<p>jsDoc for IntlDateTimeConverter ( to view all convertor options  )</p>



<p><a href="https://www.oracle.com/webfolder/technetwork/jet/jsdocs/oj.IntlDateTimeConverter.html">https://www.oracle.com/webfolder/technetwork/jet/jsdocs/oj.IntlDateTimeConverter.html</a></p>



<p>Live application URL ( to try out few configs )</p>



<p><a href="https://khalil232.com/apps/ojet-apps/?ojr=date-format-sample">https://khalil232.com/apps/ojet-apps/?ojr=date-format-sample</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://khalil232.com/vbcs-tutorials/241/format-dates-in-vbcs-page-using-functions/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">241</post-id>	</item>
		<item>
		<title>How to have different colors on rows based on one field in row in oj-data-grid</title>
		<link>https://khalil232.com/vbcs-tutorials/217/how-to-have-different-colors-on-rows-based-on-one-field-in-row-in-oj-data-grid/</link>
		
		<dc:creator><![CDATA[khalil]]></dc:creator>
		<pubDate>Mon, 04 Dec 2023 19:10:44 +0000</pubDate>
				<category><![CDATA[VBCS-Tutorials]]></category>
		<category><![CDATA[datagrid]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[OJET]]></category>
		<category><![CDATA[VBCS]]></category>
		<guid isPermaLink="false">https://khalil232.com/?p=217</guid>

					<description><![CDATA[On a data grid, we can use a function in the cell.class-name attribute to dynamically pass the class name based on row data. &#8220;cellContext&#8221; will contain the required information. We can use console.log() to identify the structure. This can be used for other attributes, like &#8220;header.column.class-name&#8221; as well on oj-data-grid This can be used when [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>On a data grid, we can use a function in the <strong>cell.class-name</strong> attribute to dynamically pass the class name based on row data.</p>



<p>&#8220;<em>cellContext</em>&#8221; will contain the required information. We can use console.log() to identify the structure.</p>



<p>This can be used for other attributes, like <em>&#8220;header.column.class-name&#8221;</em> as well on oj-data-grid</p>



<p>This can be used when we want show different style for different rows, like </p>



<ul class="wp-block-list">
<li>If we want to highlight top performer in a data set,</li>



<li>or differently show calculated fields </li>



<li>or if we want to show different type with a different color</li>
</ul>



<p>Sample HTML code:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="&lt;div class=&quot;oj-flex&quot;&gt;
  &lt;div class=&quot;oj-flex-item oj-sm-12 &quot;&gt;
    &lt;h5&gt;Data grid&lt;/h5&gt;
    &lt;oj-data-grid id=&quot;datagrid&quot; style=&quot;width:100%;height:400px&quot; aria-label=&quot;My Data Grid&quot; 
      data='{{ salaryDataADP }}'
      header.column.style=&quot;[[ headerColStyle ]]&quot; header.column.resizable.width=&quot;enable&quot;
      header.column.resizable.height=&quot;enable&quot; header.row.resizable.width=&quot;enable&quot;     
      header.row.resizable.height=&quot;enable&quot;
      header.column.class-name=&quot;oj-helper-justify-content-flex-start&quot; 
      cell.class-name=&quot;[[ cellClassNameFunc ]]&quot;
      cell.style=&quot;width: 200px;&quot;&gt;     
    &lt;/oj-data-grid&gt;
  &lt;/div&gt;
&lt;/div&gt;" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #808080">&lt;</span><span style="color: #569CD6">div</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;oj-flex&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">div</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;oj-flex-item oj-sm-12 &quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">h5</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">Data grid</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">h5</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">oj-data-grid</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">id</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;datagrid&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">style</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;width:100%;height:400px&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">aria-label</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;My Data Grid&quot;</span><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">data</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&#39;{{ salaryDataADP }}&#39;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">header.column.style</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;[[ headerColStyle ]]&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">header.column.resizable.width</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;enable&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">header.column.resizable.height</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;enable&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">header.row.resizable.width</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;enable&quot;</span><span style="color: #D4D4D4">     </span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">header.row.resizable.height</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;enable&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">header.column.class-name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;oj-helper-justify-content-flex-start&quot;</span><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">cell.class-name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;[[ cellClassNameFunc ]]&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">cell.style</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;width: 200px;&quot;</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">     </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">oj-data-grid</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">div</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #808080">&lt;/</span><span style="color: #569CD6">div</span><span style="color: #808080">&gt;</span></span></code></pre></div>



<p>Sample JS code:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="this.cellClassNameFunc = function (cellContext) {
  let cellRowIndex = cellContext.indexes.row;
  let classNameStr = &quot;oj-helper-justify-content &quot;;
  
  // to do styling based on index 
  // if (cellRowIndex % 3 === 0) {
  //   classNameStr += &quot;oj-bg-success-10 oj-text-color-success&quot;;
  // } else if (cellRowIndex % 3 === 1) {
  //   classNameStr += &quot;oj-bg-danger-30	 oj-text-color-danger&quot;;
  // } else {
  //   classNameStr += &quot;oj-bg-warning-30 oj-text-color-warning&quot;;
  // }
  
  let key = cellContext.key;
  console.log(cellContext);
  console.log(cellContext.datasource.data[cellRowIndex]);
  let rowData = cellContext.datasource.data.find((x) =&gt; x.id === key);
  if (rowData.city === &quot;Delhi&quot; || rowData.city === &quot;Banglore&quot;) {
    classNameStr += &quot;oj-bg-success-10 oj-text-color-success&quot;;
  } else if (rowData.city === &quot;Hyderabad&quot; || rowData.city === &quot;Kolkata&quot;) {
    classNameStr += &quot;oj-bg-danger-30	 oj-text-color-danger&quot;;
  } else if (rowData.city === &quot;Mumbai&quot; || rowData.city === &quot;Nagpur&quot;) {
    classNameStr += &quot;oj-bg-warning-30 oj-text-color-warning&quot;;
  }
  
  cellContext.datasource[cellRowIndex];
  
  return classNameStr;
};" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">this</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">cellClassNameFunc</span><span style="color: #D4D4D4"> = </span><span style="color: #569CD6">function</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">cellContext</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">let</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">cellRowIndex</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">cellContext</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">indexes</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">row</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">let</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">classNameStr</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">&quot;oj-helper-justify-content &quot;</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #6A9955">// to do styling based on index </span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #6A9955">// if (cellRowIndex % 3 === 0) {</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #6A9955">//   classNameStr += &quot;oj-bg-success-10 oj-text-color-success&quot;;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #6A9955">// } else if (cellRowIndex % 3 === 1) {</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #6A9955">//   classNameStr += &quot;oj-bg-danger-30	 oj-text-color-danger&quot;;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #6A9955">// } else {</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #6A9955">//   classNameStr += &quot;oj-bg-warning-30 oj-text-color-warning&quot;;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #6A9955">// }</span></span>
<span class="line"><span style="color: #D4D4D4">  </span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">let</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">key</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">cellContext</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">key</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">log</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">cellContext</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">log</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">cellContext</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">datasource</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">data</span><span style="color: #D4D4D4">[</span><span style="color: #9CDCFE">cellRowIndex</span><span style="color: #D4D4D4">]);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">let</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">rowData</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">cellContext</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">datasource</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">data</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">find</span><span style="color: #D4D4D4">((</span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">=&gt;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">x</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">id</span><span style="color: #D4D4D4"> === </span><span style="color: #9CDCFE">key</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">rowData</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">city</span><span style="color: #D4D4D4"> === </span><span style="color: #CE9178">&quot;Delhi&quot;</span><span style="color: #D4D4D4"> || </span><span style="color: #9CDCFE">rowData</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">city</span><span style="color: #D4D4D4"> === </span><span style="color: #CE9178">&quot;Banglore&quot;</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">classNameStr</span><span style="color: #D4D4D4"> += </span><span style="color: #CE9178">&quot;oj-bg-success-10 oj-text-color-success&quot;</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">  } </span><span style="color: #C586C0">else</span><span style="color: #D4D4D4"> </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">rowData</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">city</span><span style="color: #D4D4D4"> === </span><span style="color: #CE9178">&quot;Hyderabad&quot;</span><span style="color: #D4D4D4"> || </span><span style="color: #9CDCFE">rowData</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">city</span><span style="color: #D4D4D4"> === </span><span style="color: #CE9178">&quot;Kolkata&quot;</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">classNameStr</span><span style="color: #D4D4D4"> += </span><span style="color: #CE9178">&quot;oj-bg-danger-30	 oj-text-color-danger&quot;</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">  } </span><span style="color: #C586C0">else</span><span style="color: #D4D4D4"> </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">rowData</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">city</span><span style="color: #D4D4D4"> === </span><span style="color: #CE9178">&quot;Mumbai&quot;</span><span style="color: #D4D4D4"> || </span><span style="color: #9CDCFE">rowData</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">city</span><span style="color: #D4D4D4"> === </span><span style="color: #CE9178">&quot;Nagpur&quot;</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">classNameStr</span><span style="color: #D4D4D4"> += </span><span style="color: #CE9178">&quot;oj-bg-warning-30 oj-text-color-warning&quot;</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">  }</span></span>
<span class="line"><span style="color: #D4D4D4">  </span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">cellContext</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">datasource</span><span style="color: #D4D4D4">[</span><span style="color: #9CDCFE">cellRowIndex</span><span style="color: #D4D4D4">];</span></span>
<span class="line"><span style="color: #D4D4D4">  </span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">classNameStr</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">};</span></span></code></pre></div>



<p>Screenshots </p>



<p>Choosing row background color and text color based on city </p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="1024" height="646" src="https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image-2.png?resize=1024%2C646&#038;ssl=1" alt="" class="wp-image-218" srcset="https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image-2.png?resize=1024%2C646&amp;ssl=1 1024w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image-2.png?resize=300%2C189&amp;ssl=1 300w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image-2.png?resize=768%2C484&amp;ssl=1 768w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image-2.png?w=1194&amp;ssl=1 1194w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" decoding="async" width="1013" height="601" src="https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image-4.png?resize=1013%2C601&#038;ssl=1" alt="" class="wp-image-220" srcset="https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image-4.png?w=1013&amp;ssl=1 1013w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image-4.png?resize=300%2C178&amp;ssl=1 300w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image-4.png?resize=768%2C456&amp;ssl=1 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<p></p>



<p>Choosing row background color and text color based on index </p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" decoding="async" width="1024" height="627" src="https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image-3.png?resize=1024%2C627&#038;ssl=1" alt="" class="wp-image-219" srcset="https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image-3.png?resize=1024%2C627&amp;ssl=1 1024w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image-3.png?resize=300%2C184&amp;ssl=1 300w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image-3.png?resize=768%2C470&amp;ssl=1 768w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image-3.png?w=1128&amp;ssl=1 1128w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<p>Live application URL ( row style based on city ):  <a href="https://khalil232.com/apps/ojet-apps/?ojr=data-grid-example">https://khalil232.com/apps/ojet-apps/?ojr=data-grid-example</a> </p>



<p></p>



<p>References: </p>



<p>Datagrid js doc for identifying other attributes : <a href="https://www.oracle.com/webfolder/technetwork/jet/jsdocs/oj.ojDataGrid.html">https://www.oracle.com/webfolder/technetwork/jet/jsdocs/oj.ojDataGrid.html</a></p>



<p>CSS helpers used:</p>



<p>Background-color: <a href="https://www.oracle.com/webfolder/technetwork/jet/jsdocs/BackgroundColor.html">https://www.oracle.com/webfolder/technetwork/jet/jsdocs/BackgroundColor.html</a></p>



<p>Font color: <a href="https://www.oracle.com/webfolder/technetwork/jet/jsdocs/Text.html">https://www.oracle.com/webfolder/technetwork/jet/jsdocs/Text.html</a></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">217</post-id>	</item>
		<item>
		<title>How to enable resize in oj-data-grid</title>
		<link>https://khalil232.com/vbcs-tutorials/212/how-to-enable-resize-in-oj-data-grid/</link>
		
		<dc:creator><![CDATA[khalil]]></dc:creator>
		<pubDate>Mon, 04 Dec 2023 18:32:09 +0000</pubDate>
				<category><![CDATA[VBCS-Tutorials]]></category>
		<category><![CDATA[datagrid]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[OJET]]></category>
		<category><![CDATA[VBCS]]></category>
		<guid isPermaLink="false">https://khalil232.com/?p=212</guid>

					<description><![CDATA[We can enable resize in oj-data-grid by adding the following html code to &#60;oj-data-grid>: The following attributes on the header will allow resizing. When hovering on a border, the user can resize the row or column height or width. To add an additional right-click menu, we can add the below code. The user can right-click [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>We can enable resize in oj-data-grid by adding the following html code to &lt;oj-data-grid>:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="&lt;oj-data-grid
  id=&quot;datagrid&quot;
  style=&quot;width:100%;height:400px&quot;
  aria-label=&quot;My Data Grid&quot;
  data='{{ salaryDataADP }}'
  header.column.style=&quot;[[ headerColStyle ]]&quot;
  header.column.resizable.width=&quot;enable&quot;
  header.column.resizable.height=&quot;enable&quot;
  header.row.resizable.width=&quot;enable&quot;
  header.row.resizable.height=&quot;enable&quot;
  header.column.class-name=&quot;oj-helper-justify-content-flex-start&quot;
  cell.class-name=&quot;oj-helper-justify-content-flex-start&quot;
&gt;
  &lt;oj-menu slot=&quot;contextMenu&quot; aria-label=&quot;Employee Edit&quot;&gt;
    &lt;oj-option id=&quot;resizeWidth&quot; value=&quot;Resize Width&quot;
      data-oj-command=&quot;oj-datagrid-resizeWidth&quot;&gt;&lt;/oj-option&gt;
    &lt;oj-option id=&quot;resizeHeight&quot; value=&quot;Resize Height&quot;
      data-oj-command=&quot;oj-datagrid-resizeHeight&quot;&gt;&lt;/oj-option&gt;
    &lt;oj-option id=&quot;resizeFitToContent&quot; value=&quot;Resize Fit To Content&quot;
      data-oj-command=&quot;oj-datagrid-resizeFitToContent&quot;&gt;&lt;/oj-option&gt;
  &lt;/oj-menu&gt;
&lt;/oj-data-grid&gt;" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #808080">&lt;</span><span style="color: #569CD6">oj-data-grid</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">id</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;datagrid&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">style</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;width:100%;height:400px&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">aria-label</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;My Data Grid&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">data</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&#39;{{ salaryDataADP }}&#39;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">header.column.style</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;[[ headerColStyle ]]&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">header.column.resizable.width</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;enable&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">header.column.resizable.height</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;enable&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">header.row.resizable.width</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;enable&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">header.row.resizable.height</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;enable&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">header.column.class-name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;oj-helper-justify-content-flex-start&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">cell.class-name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;oj-helper-justify-content-flex-start&quot;</span></span>
<span class="line"><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">oj-menu</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">slot</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;contextMenu&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">aria-label</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Employee Edit&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">oj-option</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">id</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;resizeWidth&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">value</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Resize Width&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">data-oj-command</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;oj-datagrid-resizeWidth&quot;</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #569CD6">oj-option</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">oj-option</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">id</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;resizeHeight&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">value</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Resize Height&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">data-oj-command</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;oj-datagrid-resizeHeight&quot;</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #569CD6">oj-option</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">oj-option</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">id</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;resizeFitToContent&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">value</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Resize Fit To Content&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">data-oj-command</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;oj-datagrid-resizeFitToContent&quot;</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #569CD6">oj-option</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">oj-menu</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #808080">&lt;/</span><span style="color: #569CD6">oj-data-grid</span><span style="color: #808080">&gt;</span></span></code></pre></div>



<p>The following attributes on the header will allow resizing. When hovering on a border, the user can resize the row or column height or width.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="&lt;oj-data-grid
  header.column.resizable.width=&quot;enable&quot;
  header.column.resizable.height=&quot;enable&quot;
  header.row.resizable.width=&quot;enable&quot;
  header.row.resizable.height=&quot;enable&quot;
&gt;
&lt;/oj-data-grid&gt;" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #808080">&lt;</span><span style="color: #569CD6">oj-data-grid</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">header.column.resizable.width</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;enable&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">header.column.resizable.height</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;enable&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">header.row.resizable.width</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;enable&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">header.row.resizable.height</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;enable&quot;</span></span>
<span class="line"><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #808080">&lt;/</span><span style="color: #569CD6">oj-data-grid</span><span style="color: #808080">&gt;</span></span></code></pre></div>



<p>To add an additional right-click menu, we can add the below code. The user can right-click and click on Resize width, and enter a desired width, like 100 or 200.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="&lt;oj-menu slot=&quot;contextMenu&quot; aria-label=&quot;Employee Edit&quot;&gt;
    &lt;oj-option id=&quot;resizeWidth&quot; value=&quot;Resize Width&quot;
      data-oj-command=&quot;oj-datagrid-resizeWidth&quot;&gt;&lt;/oj-option&gt;
    &lt;oj-option id=&quot;resizeHeight&quot; value=&quot;Resize Height&quot;
      data-oj-command=&quot;oj-datagrid-resizeHeight&quot;&gt;&lt;/oj-option&gt;
    &lt;oj-option id=&quot;resizeFitToContent&quot; value=&quot;Resize Fit To Content&quot;
      data-oj-command=&quot;oj-datagrid-resizeFitToContent&quot;&gt;&lt;/oj-option&gt;
  &lt;/oj-menu&gt;" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #808080">&lt;</span><span style="color: #569CD6">oj-menu</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">slot</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;contextMenu&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">aria-label</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Employee Edit&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">oj-option</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">id</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;resizeWidth&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">value</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Resize Width&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">data-oj-command</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;oj-datagrid-resizeWidth&quot;</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #569CD6">oj-option</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">oj-option</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">id</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;resizeHeight&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">value</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Resize Height&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">data-oj-command</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;oj-datagrid-resizeHeight&quot;</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #569CD6">oj-option</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">oj-option</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">id</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;resizeFitToContent&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">value</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Resize Fit To Content&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">data-oj-command</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;oj-datagrid-resizeFitToContent&quot;</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #569CD6">oj-option</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">oj-menu</span><span style="color: #808080">&gt;</span></span></code></pre></div>



<p>There are other commands available, like below ( see the jsdoc link for more information ). Few features are supported only in latest version of JET</p>



<figure class="wp-block-table"><table><thead><tr><th>Default Function</th><th>data-oj-command value</th></tr></thead><tbody><tr><td><kbd>Resize menu</kbd>&nbsp;(contains width and height resize)</td><td>oj-datagrid-resize</td></tr><tr><td><kbd>Sort Row menu</kbd>&nbsp;(contains ascending and descending sort)</td><td>oj-datagrid-sortRow</td></tr><tr><td><kbd>Sort Column menu</kbd>&nbsp;(contains ascending and descending sort)</td><td>oj-datagrid-sortCol</td></tr><tr><td><kbd>Resize Width</kbd></td><td>oj-datagrid-resizeWidth</td></tr><tr><td><kbd>Resize Height</kbd></td><td>oj-datagrid-resizeHeight</td></tr><tr><td><kbd>Resize Fit To Content</kbd></td><td>oj-datagrid-resizeFitToContent</td></tr><tr><td><kbd>Sort Row Ascending</kbd></td><td>oj-datagrid-sortRowAsc</td></tr><tr><td><kbd>Sort Row Descending</kbd></td><td>oj-datagrid-sortRowDsc</td></tr><tr><td><kbd>Sort Column Ascending</kbd></td><td>oj-datagrid-sortColAsc</td></tr><tr><td><kbd>Sort Column Descending</kbd></td><td>oj-datagrid-sortColDsc</td></tr><tr><td><kbd>Cut (for reordering)</kbd></td><td>oj-datagrid-cut</td></tr><tr><td><kbd>Paste (for reordering)</kbd></td><td>oj-datagrid-paste</td></tr><tr><td><kbd>CutCells (for data transferring)</kbd></td><td>oj-datagrid-cutCells</td></tr><tr><td><kbd>CopyCells (for data transferring)</kbd></td><td>oj-datagrid-copyCells</td></tr><tr><td><kbd>PasteCells (for data transferring)</kbd></td><td>oj-datagrid-pasteCells</td></tr><tr><td><kbd>Fill</kbd></td><td>oj-datagrid-fillCells</td></tr><tr><td><kbd>Select Multiple Cells on Touch Device</kbd></td><td>oj-datagrid-discontiguousSelection</td></tr><tr><td><kbd>Freeze Columns</kbd></td><td>oj-datagrid-freezeCol</td></tr><tr><td><kbd>Freeze Rows</kbd></td><td>oj-datagrid-freezeRow</td></tr><tr><td><kbd>Unfreeze Columns</kbd></td><td>oj-datagrid-unfreezeColumn</td></tr><tr><td><kbd>Unfreeze Rows</kbd></td><td>oj-datagrid-unfreezeRow</td></tr><tr><td><kbd>Hide Columns</kbd></td><td>oj-datagrid-hideCol</td></tr><tr><td><kbd>Unhide Columns</kbd></td><td>oj-datagrid-unhideCol</td></tr></tbody></table></figure>



<p>Screenshots</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="652" height="467" src="https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image.png?resize=652%2C467&#038;ssl=1" alt="" class="wp-image-213" srcset="https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image.png?w=652&amp;ssl=1 652w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image.png?resize=300%2C215&amp;ssl=1 300w" sizes="(max-width: 652px) 100vw, 652px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1024" height="515" src="https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image-1.png?resize=1024%2C515&#038;ssl=1" alt="" class="wp-image-214" srcset="https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image-1.png?resize=1024%2C515&amp;ssl=1 1024w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image-1.png?resize=300%2C151&amp;ssl=1 300w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image-1.png?resize=768%2C386&amp;ssl=1 768w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/12/image-1.png?w=1432&amp;ssl=1 1432w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<p>Live application URL: <a href="https://khalil232.com/apps/ojet-apps/?ojr=data-grid-example">https://khalil232.com/apps/ojet-apps/?ojr=data-grid-example</a></p>



<p>References: </p>



<p>helper classes: <a href="https://www.oracle.com/webfolder/technetwork/jet/jsdocs/Helpers.html">https://www.oracle.com/webfolder/technetwork/jet/jsdocs/Helpers.html</a></p>



<p>jet cookbook: <a href="https://www.oracle.com/webfolder/technetwork/jet/jetCookbook.html?component=dataGrid&amp;demo=resizing">https://www.oracle.com/webfolder/technetwork/jet/jetCookbook.html?component=dataGrid&amp;demo=resizing</a></p>



<p>link for oj-data-commands: <a href="https://www.oracle.com/webfolder/technetwork/jet/jsdocs/oj.ojDataGrid.html#contextmenu-section">https://www.oracle.com/webfolder/technetwork/jet/jsdocs/oj.ojDataGrid.html#contextmenu-section</a></p>



<p></p>



<p></p>



<p></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">212</post-id>	</item>
		<item>
		<title>How to refresh particular cell in oj-data-grid</title>
		<link>https://khalil232.com/vbcs-tutorials/209/how-to-refresh-particular-cell-in-oj-data-grid/</link>
		
		<dc:creator><![CDATA[khalil]]></dc:creator>
		<pubDate>Sun, 03 Dec 2023 19:57:12 +0000</pubDate>
				<category><![CDATA[VBCS-Tutorials]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[OJET]]></category>
		<category><![CDATA[VBCS]]></category>
		<guid isPermaLink="false">https://khalil232.com/?p=209</guid>

					<description><![CDATA[We can use the update event to refresh particular grid cells. Let us say we are displaying a grid with few rows where the user can edit the data and we are showing few calculated fields (like total or percentage). If we have to refresh the grid cells after updating the cell with the correct [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>We can use the update event to refresh particular grid cells.</p>



<p>Let us say we are displaying a grid with few rows where the user can edit the data and we are showing few calculated fields (like total or percentage). If we have to refresh the grid cells after updating the cell with the correct value, we can use the following JavaScript code:</p>



<p></p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="// &quot;gridData&quot; is a variable holding grid information. 
// We can pass &quot;gridData&quot; to the JS function and call the below code.

let updateEventDetails = {
&quot;type&quot;: &quot;update&quot;,
&quot;detail&quot;: {
    &quot;ranges&quot;: [{
            &quot;rowOffset&quot;: 0,      // start of grid row
            &quot;columnOffset&quot;: 0,   // start of grid col
            &quot;rowCount&quot;:  gridData.counts.row // end of grid row
            &quot;columnCount&quot;: gridData.counts.column // end of grid col 
       }]
    }
};
gridData.dispatchEvent(updateEventDetails);" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #6A9955">// &quot;gridData&quot; is a variable holding grid information. </span></span>
<span class="line"><span style="color: #6A9955">// We can pass &quot;gridData&quot; to the JS function and call the below code.</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">let</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">updateEventDetails</span><span style="color: #D4D4D4"> = {</span></span>
<span class="line"><span style="color: #CE9178">&quot;type&quot;</span><span style="color: #9CDCFE">:</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;update&quot;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #CE9178">&quot;detail&quot;</span><span style="color: #9CDCFE">:</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #CE9178">&quot;ranges&quot;</span><span style="color: #9CDCFE">:</span><span style="color: #D4D4D4"> [{</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #CE9178">&quot;rowOffset&quot;</span><span style="color: #9CDCFE">:</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">,      </span><span style="color: #6A9955">// start of grid row</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #CE9178">&quot;columnOffset&quot;</span><span style="color: #9CDCFE">:</span><span style="color: #D4D4D4"> </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">,   </span><span style="color: #6A9955">// start of grid col</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #CE9178">&quot;rowCount&quot;</span><span style="color: #9CDCFE">:</span><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">gridData</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">counts</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">row</span><span style="color: #D4D4D4"> </span><span style="color: #6A9955">// end of grid row</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #CE9178">&quot;columnCount&quot;</span><span style="color: #D4D4D4">: </span><span style="color: #9CDCFE">gridData</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">counts</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">column</span><span style="color: #D4D4D4"> </span><span style="color: #6A9955">// end of grid col </span></span>
<span class="line"><span style="color: #D4D4D4">       }]</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4">};</span></span>
<span class="line"><span style="color: #9CDCFE">gridData</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">dispatchEvent</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">updateEventDetails</span><span style="color: #D4D4D4">);</span></span></code></pre></div>



<p>The above code will refresh all the grid cells; if we want to refresh only a particular grid cell, we can set relative rowOffset, columnOffset, rowCount or columnCount.</p>



<p></p>



<p>We can also give multiple ranges if the cells cannot be captured in a single range.</p>



<p></p>



<p>When we use the refresh event on the grid, the grid becomes white and renders again. In order to avoid that, we use the update event. The update event doesn&#8217;t remove the focus, and only the cells in range will get refreshed. </p>



<p></p>



<p>If you have a huge amount of data in the grid, use the update event very rarely. It has a huge impact on performance. If you want a large number of cells to be refreshed, use the refresh event instead of the update event.</p>



<p></p>



<p>References:</p>



<p>Data Grid Cookbook: <a href="https://www.oracle.com/webfolder/technetwork/jet/jetCookbook.html?component=dataGrid&amp;demo=overView">https://www.oracle.com/webfolder/technetwork/jet/jetCookbook.html?component=dataGrid&amp;demo=overView</a></p>



<p>ojDataGrid JS doc: <a href="https://www.oracle.com/webfolder/technetwork/jet/jsdocs/oj.ojDataGrid.html">https://www.oracle.com/webfolder/technetwork/jet/jsdocs/oj.ojDataGrid.html</a></p>



<p>DataGridProviderUpdateEvent: <a href="https://www.oracle.com/webfolder/technetwork/jet/jsdocs/DataGridProviderUpdateEvent.html">https://www.oracle.com/webfolder/technetwork/jet/jsdocs/DataGridProviderUpdateEvent.html</a></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">209</post-id>	</item>
		<item>
		<title>Calling Rest API using JavaScript function in vbcs</title>
		<link>https://khalil232.com/vbcs-tutorials/183/calling-rest-api-using-javascript-function-in-vbcs/</link>
		
		<dc:creator><![CDATA[khalil]]></dc:creator>
		<pubDate>Tue, 10 Oct 2023 17:56:43 +0000</pubDate>
				<category><![CDATA[VBCS-Tutorials]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[OJET]]></category>
		<category><![CDATA[VBCS]]></category>
		<guid isPermaLink="false">https://khalil232.com/?p=183</guid>

					<description><![CDATA[We can call rest API configured in service connection using RestHelper The function getLineItems() can be called using action chain. We can call the rest API configured in the service connection using Rest Helper in APP UI as well We have to additional pass extensionId &#8211; site_MyExtension. ( id of the APP UI extension. You [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>We can call rest API configured in service connection using RestHelper</p>



<p>The function <strong>getLineItems()</strong> can be called using action chain.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="define([&quot;vb/helpers/rest&quot;], (Rest) =&gt; {
  &quot;use strict&quot;;

  class PageModule {
    getLineItems() {
      let endpointurl = &quot;buinessObjects/getalls_Country&quot;;
      let queryString = &quot;id is not null&quot;;

      return new Promise(function (resolve, reject) {
        var ep = Rest.get(endpointurl);
        ep.parameters({
          q: queryString,
          onlyData: true,
          limit: 50,
          orderBy: &quot;id:asc&quot;,
        });
        ep.fetch().then(function (result) {
          if (result.response.ok) {
            resolve(result.body.items);
          } else {
            resolve([]);
          }
        });
      });
    }
  }

  return PageModule;
});" style="color:#babed8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki material-theme-ocean" style="background-color: #0F111A" tabindex="0"><code><span class="line"><span style="color: #82AAFF">define</span><span style="color: #BABED8">([</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">vb/helpers/rest</span><span style="color: #89DDFF">&quot;</span><span style="color: #BABED8">]</span><span style="color: #89DDFF">,</span><span style="color: #BABED8"> </span><span style="color: #89DDFF">(</span><span style="color: #BABED8; font-style: italic">Rest</span><span style="color: #89DDFF">)</span><span style="color: #BABED8"> </span><span style="color: #C792EA">=&gt;</span><span style="color: #BABED8"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">use strict</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #C792EA">class</span><span style="color: #F07178"> </span><span style="color: #FFCB6B">PageModule</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">    getLineItems</span><span style="color: #89DDFF">()</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #C792EA">let</span><span style="color: #F07178"> </span><span style="color: #BABED8">endpointurl</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">buinessObjects/getalls_Country</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #C792EA">let</span><span style="color: #F07178"> </span><span style="color: #BABED8">queryString</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">id is not null</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #89DDFF; font-style: italic">return</span><span style="color: #F07178"> </span><span style="color: #89DDFF">new</span><span style="color: #F07178"> </span><span style="color: #FFCB6B">Promise</span><span style="color: #F07178">(</span><span style="color: #C792EA">function</span><span style="color: #F07178"> </span><span style="color: #89DDFF">(</span><span style="color: #BABED8; font-style: italic">resolve</span><span style="color: #89DDFF">,</span><span style="color: #F07178"> </span><span style="color: #BABED8; font-style: italic">reject</span><span style="color: #89DDFF">)</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">        </span><span style="color: #C792EA">var</span><span style="color: #F07178"> </span><span style="color: #BABED8">ep</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #BABED8">Rest</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">get</span><span style="color: #F07178">(</span><span style="color: #BABED8">endpointurl</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">        </span><span style="color: #BABED8">ep</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">parameters</span><span style="color: #F07178">(</span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">          q</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #BABED8">queryString</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">          onlyData</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #FF9CAC">true</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">          limit</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #F78C6C">50</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">          orderBy</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">id:asc</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">        </span><span style="color: #89DDFF">}</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">        </span><span style="color: #BABED8">ep</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">fetch</span><span style="color: #F07178">()</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">then</span><span style="color: #F07178">(</span><span style="color: #C792EA">function</span><span style="color: #F07178"> </span><span style="color: #89DDFF">(</span><span style="color: #BABED8; font-style: italic">result</span><span style="color: #89DDFF">)</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">          </span><span style="color: #89DDFF; font-style: italic">if</span><span style="color: #F07178"> (</span><span style="color: #BABED8">result</span><span style="color: #89DDFF">.</span><span style="color: #BABED8">response</span><span style="color: #89DDFF">.</span><span style="color: #BABED8">ok</span><span style="color: #F07178">) </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">            </span><span style="color: #82AAFF">resolve</span><span style="color: #F07178">(</span><span style="color: #BABED8">result</span><span style="color: #89DDFF">.</span><span style="color: #BABED8">body</span><span style="color: #89DDFF">.</span><span style="color: #BABED8">items</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">          </span><span style="color: #89DDFF">}</span><span style="color: #F07178"> </span><span style="color: #89DDFF; font-style: italic">else</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">            </span><span style="color: #82AAFF">resolve</span><span style="color: #F07178">([])</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">          </span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #F07178">        </span><span style="color: #89DDFF">}</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #89DDFF">}</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">    </span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #89DDFF">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #89DDFF; font-style: italic">return</span><span style="color: #F07178"> </span><span style="color: #BABED8">PageModule</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #89DDFF">}</span><span style="color: #BABED8">)</span><span style="color: #89DDFF">;</span></span></code></pre></div>



<p></p>



<p></p>



<p>We can call the rest API configured in the service connection using Rest Helper in APP UI as well</p>



<p>We have to additional pass extensionId &#8211; site_MyExtension. ( id of the APP UI extension.</p>



<p>You can find the extension id from -&gt; </p>



<ul class="wp-block-list">
<li>Open workspace, click on extension name in left hand side </li>



<li>Go to settings and you will find extension id.</li>
</ul>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="define([&quot;vb/helpers/rest&quot;], (Rest) =&gt; {
  &quot;use strict&quot;;

  class PageModule {
    getLineItems() {
      let extensionId = &quot;site_MyExtension&quot;
    
      let endpointurl = &quot;site_MyExtension:saasRestApi/getalls_Country&quot;;
      let queryString = &quot;id is not null&quot;;
 
      return new Promise(function (resolve, reject) {
        var ep = Rest.get(endpointurl, { extensionId: &quot;site_MyExtension&quot; } );
        ep.parameters({
          q: queryString,
          onlyData: true,
          limit: 50,
          orderBy: &quot;id:asc&quot;,
        });
        ep.fetch().then(function (result) {
          if (result.response.ok) {
            resolve(result.body.items);
          } else {
            resolve([]);
          }
        });
      });
    }
  }

  return PageModule;
});" style="color:#babed8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki material-theme-ocean" style="background-color: #0F111A" tabindex="0"><code><span class="line"><span style="color: #82AAFF">define</span><span style="color: #BABED8">([</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">vb/helpers/rest</span><span style="color: #89DDFF">&quot;</span><span style="color: #BABED8">]</span><span style="color: #89DDFF">,</span><span style="color: #BABED8"> </span><span style="color: #89DDFF">(</span><span style="color: #BABED8; font-style: italic">Rest</span><span style="color: #89DDFF">)</span><span style="color: #BABED8"> </span><span style="color: #C792EA">=&gt;</span><span style="color: #BABED8"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">use strict</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #C792EA">class</span><span style="color: #F07178"> </span><span style="color: #FFCB6B">PageModule</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">    getLineItems</span><span style="color: #89DDFF">()</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #C792EA">let</span><span style="color: #F07178"> </span><span style="color: #BABED8">extensionId</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">site_MyExtension</span><span style="color: #89DDFF">&quot;</span></span>
<span class="line"><span style="color: #F07178">    </span></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #C792EA">let</span><span style="color: #F07178"> </span><span style="color: #BABED8">endpointurl</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">site_MyExtension:saasRestApi/getalls_Country</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #C792EA">let</span><span style="color: #F07178"> </span><span style="color: #BABED8">queryString</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">id is not null</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178"> </span></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #89DDFF; font-style: italic">return</span><span style="color: #F07178"> </span><span style="color: #89DDFF">new</span><span style="color: #F07178"> </span><span style="color: #FFCB6B">Promise</span><span style="color: #F07178">(</span><span style="color: #C792EA">function</span><span style="color: #F07178"> </span><span style="color: #89DDFF">(</span><span style="color: #BABED8; font-style: italic">resolve</span><span style="color: #89DDFF">,</span><span style="color: #F07178"> </span><span style="color: #BABED8; font-style: italic">reject</span><span style="color: #89DDFF">)</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">        </span><span style="color: #C792EA">var</span><span style="color: #F07178"> </span><span style="color: #BABED8">ep</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #BABED8">Rest</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">get</span><span style="color: #F07178">(</span><span style="color: #BABED8">endpointurl</span><span style="color: #89DDFF">,</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span><span style="color: #F07178"> extensionId</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">site_MyExtension</span><span style="color: #89DDFF">&quot;</span><span style="color: #F07178"> </span><span style="color: #89DDFF">}</span><span style="color: #F07178"> )</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">        </span><span style="color: #BABED8">ep</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">parameters</span><span style="color: #F07178">(</span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">          q</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #BABED8">queryString</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">          onlyData</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #FF9CAC">true</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">          limit</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #F78C6C">50</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">          orderBy</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">id:asc</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">        </span><span style="color: #89DDFF">}</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">        </span><span style="color: #BABED8">ep</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">fetch</span><span style="color: #F07178">()</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">then</span><span style="color: #F07178">(</span><span style="color: #C792EA">function</span><span style="color: #F07178"> </span><span style="color: #89DDFF">(</span><span style="color: #BABED8; font-style: italic">result</span><span style="color: #89DDFF">)</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">          </span><span style="color: #89DDFF; font-style: italic">if</span><span style="color: #F07178"> (</span><span style="color: #BABED8">result</span><span style="color: #89DDFF">.</span><span style="color: #BABED8">response</span><span style="color: #89DDFF">.</span><span style="color: #BABED8">ok</span><span style="color: #F07178">) </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">            </span><span style="color: #82AAFF">resolve</span><span style="color: #F07178">(</span><span style="color: #BABED8">result</span><span style="color: #89DDFF">.</span><span style="color: #BABED8">body</span><span style="color: #89DDFF">.</span><span style="color: #BABED8">items</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">          </span><span style="color: #89DDFF">}</span><span style="color: #F07178"> </span><span style="color: #89DDFF; font-style: italic">else</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">            </span><span style="color: #82AAFF">resolve</span><span style="color: #F07178">([])</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">          </span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #F07178">        </span><span style="color: #89DDFF">}</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #89DDFF">}</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">    </span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #89DDFF">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #89DDFF; font-style: italic">return</span><span style="color: #F07178"> </span><span style="color: #BABED8">PageModule</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #89DDFF">}</span><span style="color: #BABED8">)</span><span style="color: #89DDFF">;</span></span></code></pre></div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">183</post-id>	</item>
		<item>
		<title>How to handle large text in table or grid</title>
		<link>https://khalil232.com/vbcs-tutorials/174/how-to-handle-large-text-in-table-or-grid/</link>
		
		<dc:creator><![CDATA[khalil]]></dc:creator>
		<pubDate>Tue, 10 Oct 2023 17:40:30 +0000</pubDate>
				<category><![CDATA[VBCS-Tutorials]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[OJET]]></category>
		<category><![CDATA[VBCS]]></category>
		<guid isPermaLink="false">https://khalil232.com/?p=174</guid>

					<description><![CDATA[By default long text in table or data-grid will expand, showing all text in single line, that may not be very useful. Columns will get expanded and few columns which we want to show will be hidden. We can set for the column, so that it doesn&#8217;t expand. e.g.: In this for Address we can [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>By default long text in table or data-grid will expand, showing all text in single line, that may not be very useful. </p>



<p>Columns will get expanded and few columns which we want to show will be hidden.</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1024" height="343" src="https://i0.wp.com/khalil232.com/wp-content/uploads/2023/10/image-1.png?resize=1024%2C343&#038;ssl=1" alt="" class="wp-image-175" srcset="https://i0.wp.com/khalil232.com/wp-content/uploads/2023/10/image-1.png?resize=1024%2C343&amp;ssl=1 1024w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/10/image-1.png?resize=300%2C101&amp;ssl=1 300w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/10/image-1.png?resize=768%2C258&amp;ssl=1 768w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/10/image-1.png?w=1264&amp;ssl=1 1264w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="&lt;oj-table class=&quot;custom-table&quot; 
  id=&quot;employeetable&quot;
  scroll-policy=&quot;loadMoreOnScroll&quot; 
  class=&quot;oj-flex-item oj-sm-12 oj-md-12&quot;
  data=&quot;[[ employeeListADP ]]&quot; 
  columns='[
            {&quot;headerText&quot;:&quot;Id&quot;,&quot;field&quot;:&quot;id&quot;},
            {&quot;headerText&quot;:&quot;Employee Number&quot;,&quot;field&quot;:&quot;empNumber&quot;},
            {&quot;headerText&quot;:&quot;Employee Name&quot;,&quot;field&quot;:&quot;empName&quot;},
            {&quot;headerText&quot;:&quot;Department Name&quot;,&quot;field&quot;:&quot;departmentNumber&quot;},
            {&quot;headerText&quot;:&quot;Address&quot;,&quot;field&quot;:&quot;address&quot;},
            {&quot;headerText&quot;:&quot;Address line&quot;,&quot;field&quot;:&quot;addressLine2&quot;}
        ]'&gt;
  &lt;/oj-table&gt;" style="color:#babed8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki material-theme-ocean" style="background-color: #0F111A" tabindex="0"><code><span class="line"><span style="color: #89DDFF">&lt;</span><span style="color: #F07178">oj-table</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">class</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">custom-table</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF"> </span></span>
<span class="line"><span style="color: #89DDFF">  </span><span style="color: #C792EA">id</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">employeetable</span><span style="color: #89DDFF">&quot;</span></span>
<span class="line"><span style="color: #89DDFF">  </span><span style="color: #C792EA">scroll-policy</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">loadMoreOnScroll</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF"> </span></span>
<span class="line"><span style="color: #89DDFF">  </span><span style="color: #C792EA">class</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">oj-flex-item oj-sm-12 oj-md-12</span><span style="color: #89DDFF">&quot;</span></span>
<span class="line"><span style="color: #89DDFF">  </span><span style="color: #C792EA">data</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">[[ employeeListADP ]]</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF"> </span></span>
<span class="line"><span style="color: #89DDFF">  </span><span style="color: #C792EA">columns</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">[</span></span>
<span class="line"><span style="color: #C3E88D">            {&quot;headerText&quot;:&quot;Id&quot;,&quot;field&quot;:&quot;id&quot;},</span></span>
<span class="line"><span style="color: #C3E88D">            {&quot;headerText&quot;:&quot;Employee Number&quot;,&quot;field&quot;:&quot;empNumber&quot;},</span></span>
<span class="line"><span style="color: #C3E88D">            {&quot;headerText&quot;:&quot;Employee Name&quot;,&quot;field&quot;:&quot;empName&quot;},</span></span>
<span class="line"><span style="color: #C3E88D">            {&quot;headerText&quot;:&quot;Department Name&quot;,&quot;field&quot;:&quot;departmentNumber&quot;},</span></span>
<span class="line"><span style="color: #C3E88D">            {&quot;headerText&quot;:&quot;Address&quot;,&quot;field&quot;:&quot;address&quot;},</span></span>
<span class="line"><span style="color: #C3E88D">            {&quot;headerText&quot;:&quot;Address line&quot;,&quot;field&quot;:&quot;addressLine2&quot;}</span></span>
<span class="line"><span style="color: #C3E88D">        ]</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #BABED8">  </span><span style="color: #89DDFF">&lt;/</span><span style="color: #F07178">oj-table</span><span style="color: #89DDFF">&gt;</span></span></code></pre></div>



<p>We can set for the column, so that it doesn&#8217;t expand.</p>



<p>e.g.: In this for Address we can give max-width as 200px </p>



<p>This will show the text up to 200px and later it is show as &#8230; This is similar to <strong>text-overflow: ellipsis;</strong> css code </p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1024" height="332" src="https://i0.wp.com/khalil232.com/wp-content/uploads/2023/10/image-2.png?resize=1024%2C332&#038;ssl=1" alt="" class="wp-image-176" srcset="https://i0.wp.com/khalil232.com/wp-content/uploads/2023/10/image-2.png?resize=1024%2C332&amp;ssl=1 1024w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/10/image-2.png?resize=300%2C97&amp;ssl=1 300w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/10/image-2.png?resize=768%2C249&amp;ssl=1 768w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/10/image-2.png?w=1263&amp;ssl=1 1263w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="&lt;oj-table class=&quot;custom-table&quot; 
    id=&quot;employeetable&quot;
    scroll-policy=&quot;loadMoreOnScroll&quot;
    class=&quot;oj-flex-item oj-sm-12 oj-md-12&quot;
    data=&quot;[[ employeeListADP ]]&quot; 
    columns='[
      {&quot;headerText&quot;:&quot;Id&quot;,&quot;field&quot;:&quot;id&quot;},
      {&quot;headerText&quot;:&quot;Employee Number&quot;,&quot;field&quot;:&quot;empNumber&quot;},
      {&quot;headerText&quot;:&quot;Employee Name&quot;,&quot;field&quot;:&quot;empName&quot;},
      {&quot;headerText&quot;:&quot;Department Name&quot;,&quot;field&quot;:&quot;departmentNumber&quot;},
      {&quot;headerText&quot;:&quot;Address&quot;,&quot;field&quot;:&quot;address&quot;,&quot;style&quot;: &quot;max-width:200px&quot;},
      {&quot;headerText&quot;:&quot;Address line&quot;,&quot;field&quot;:&quot;addressLine2&quot;}
    ]'&gt;
&lt;/oj-table&gt;" style="color:#babed8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki material-theme-ocean" style="background-color: #0F111A" tabindex="0"><code><span class="line"><span style="color: #89DDFF">&lt;</span><span style="color: #F07178">oj-table</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">class</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">custom-table</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF"> </span></span>
<span class="line"><span style="color: #89DDFF">    </span><span style="color: #C792EA">id</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">employeetable</span><span style="color: #89DDFF">&quot;</span></span>
<span class="line"><span style="color: #89DDFF">    </span><span style="color: #C792EA">scroll-policy</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">loadMoreOnScroll</span><span style="color: #89DDFF">&quot;</span></span>
<span class="line"><span style="color: #89DDFF">    </span><span style="color: #C792EA">class</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">oj-flex-item oj-sm-12 oj-md-12</span><span style="color: #89DDFF">&quot;</span></span>
<span class="line"><span style="color: #89DDFF">    </span><span style="color: #C792EA">data</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">[[ employeeListADP ]]</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF"> </span></span>
<span class="line"><span style="color: #89DDFF">    </span><span style="color: #C792EA">columns</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">[</span></span>
<span class="line"><span style="color: #C3E88D">      {&quot;headerText&quot;:&quot;Id&quot;,&quot;field&quot;:&quot;id&quot;},</span></span>
<span class="line"><span style="color: #C3E88D">      {&quot;headerText&quot;:&quot;Employee Number&quot;,&quot;field&quot;:&quot;empNumber&quot;},</span></span>
<span class="line"><span style="color: #C3E88D">      {&quot;headerText&quot;:&quot;Employee Name&quot;,&quot;field&quot;:&quot;empName&quot;},</span></span>
<span class="line"><span style="color: #C3E88D">      {&quot;headerText&quot;:&quot;Department Name&quot;,&quot;field&quot;:&quot;departmentNumber&quot;},</span></span>
<span class="line"><span style="color: #C3E88D">      {&quot;headerText&quot;:&quot;Address&quot;,&quot;field&quot;:&quot;address&quot;,&quot;style&quot;: &quot;max-width:200px&quot;},</span></span>
<span class="line"><span style="color: #C3E88D">      {&quot;headerText&quot;:&quot;Address line&quot;,&quot;field&quot;:&quot;addressLine2&quot;}</span></span>
<span class="line"><span style="color: #C3E88D">    ]</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #89DDFF">&lt;/</span><span style="color: #F07178">oj-table</span><span style="color: #89DDFF">&gt;</span></span></code></pre></div>



<p></p>



<p>We can try to wrap the text using <strong>oj-helper-overflow-wrap-anywhere oj-helper-white-space-normal</strong> classes</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1024" height="333" src="https://i0.wp.com/khalil232.com/wp-content/uploads/2023/10/image-3.png?resize=1024%2C333&#038;ssl=1" alt="" class="wp-image-177" srcset="https://i0.wp.com/khalil232.com/wp-content/uploads/2023/10/image-3.png?resize=1024%2C333&amp;ssl=1 1024w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/10/image-3.png?resize=300%2C98&amp;ssl=1 300w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/10/image-3.png?resize=768%2C250&amp;ssl=1 768w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/10/image-3.png?w=1255&amp;ssl=1 1255w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="" style="font-size:clamp(14px, .875rem, 21px);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="&lt;h5&gt;Table with added width to Address column&lt;/h5&gt;
&lt;oj-table class=&quot;custom-table&quot;  
    id=&quot;employeetable&quot;  
    scroll-policy=&quot;loadMoreOnScroll&quot; 
    class=&quot;oj-flex-item oj-sm-12 oj-md-12&quot;
    data=&quot;[[ employeeListADP ]]&quot; 
    columns='[
        {&quot;headerText&quot;:&quot;Id&quot;,&quot;field&quot;:&quot;id&quot;},
        {&quot;headerText&quot;:&quot;Employee Number&quot;,&quot;field&quot;:&quot;empNumber&quot;},
        {&quot;headerText&quot;:&quot;Employee Name&quot;,&quot;field&quot;:&quot;empName&quot;},
        {&quot;headerText&quot;:&quot;Department Name&quot;,&quot;field&quot;:&quot;departmentNumber&quot;},
        {  
            &quot;headerText&quot;:&quot;Address&quot;,
            &quot;field&quot;:&quot;address&quot;,
            &quot;className&quot;: &quot;oj-helper-overflow-wrap-anywhere oj-helper-white-space-normal&quot;
        },
        {&quot;headerText&quot;:&quot;Address line&quot;,&quot;field&quot;:&quot;addressLine2&quot;}
    ]'&gt;
&lt;/oj-table&gt;
" style="color:#babed8;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki material-theme-ocean" style="background-color: #0F111A" tabindex="0"><code><span class="line"><span style="color: #89DDFF">&lt;</span><span style="color: #F07178">h5</span><span style="color: #89DDFF">&gt;</span><span style="color: #BABED8">Table with added width to Address column</span><span style="color: #89DDFF">&lt;/</span><span style="color: #F07178">h5</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #89DDFF">&lt;</span><span style="color: #F07178">oj-table</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">class</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">custom-table</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF">  </span></span>
<span class="line"><span style="color: #89DDFF">    </span><span style="color: #C792EA">id</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">employeetable</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF">  </span></span>
<span class="line"><span style="color: #89DDFF">    </span><span style="color: #C792EA">scroll-policy</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">loadMoreOnScroll</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF"> </span></span>
<span class="line"><span style="color: #89DDFF">    </span><span style="color: #C792EA">class</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">oj-flex-item oj-sm-12 oj-md-12</span><span style="color: #89DDFF">&quot;</span></span>
<span class="line"><span style="color: #89DDFF">    </span><span style="color: #C792EA">data</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">[[ employeeListADP ]]</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF"> </span></span>
<span class="line"><span style="color: #89DDFF">    </span><span style="color: #C792EA">columns</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">[</span></span>
<span class="line"><span style="color: #C3E88D">        {&quot;headerText&quot;:&quot;Id&quot;,&quot;field&quot;:&quot;id&quot;},</span></span>
<span class="line"><span style="color: #C3E88D">        {&quot;headerText&quot;:&quot;Employee Number&quot;,&quot;field&quot;:&quot;empNumber&quot;},</span></span>
<span class="line"><span style="color: #C3E88D">        {&quot;headerText&quot;:&quot;Employee Name&quot;,&quot;field&quot;:&quot;empName&quot;},</span></span>
<span class="line"><span style="color: #C3E88D">        {&quot;headerText&quot;:&quot;Department Name&quot;,&quot;field&quot;:&quot;departmentNumber&quot;},</span></span>
<span class="line"><span style="color: #C3E88D">        {  </span></span>
<span class="line"><span style="color: #C3E88D">            &quot;headerText&quot;:&quot;Address&quot;,</span></span>
<span class="line"><span style="color: #C3E88D">            &quot;field&quot;:&quot;address&quot;,</span></span>
<span class="line"><span style="color: #C3E88D">            &quot;className&quot;: &quot;oj-helper-overflow-wrap-anywhere oj-helper-white-space-normal&quot;</span></span>
<span class="line"><span style="color: #C3E88D">        },</span></span>
<span class="line"><span style="color: #C3E88D">        {&quot;headerText&quot;:&quot;Address line&quot;,&quot;field&quot;:&quot;addressLine2&quot;}</span></span>
<span class="line"><span style="color: #C3E88D">    ]</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #89DDFF">&lt;/</span><span style="color: #F07178">oj-table</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"></span></code></pre></div>



<p>Link to live application &#8211; <a href="https://khalil232.com/apps/ojet-apps/?ojr=table-long-text">https://khalil232.com/apps/ojet-apps/?ojr=table-long-text</a></p>



<p>Link for <strong>text-overflow: ellipsis</strong> &#8211; <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/text-overflow">https://developer.mozilla.org/en-US/docs/Web/CSS/text-overflow</a></p>



<p>Link for oradocs for content wrap &#8211; <a href="https://www.oracle.com/webfolder/technetwork/jet/jetCookbook.html?component=table&amp;demo=columnContentWrapping">https://www.oracle.com/webfolder/technetwork/jet/jetCookbook.html?component=table&amp;demo=columnContentWrapping</a></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">174</post-id>	</item>
		<item>
		<title>When to use grid or table or for each in VBCS</title>
		<link>https://khalil232.com/vbcs-tutorials/171/when-to-use-grid-or-table-or-for-each-in-vbcs/</link>
					<comments>https://khalil232.com/vbcs-tutorials/171/when-to-use-grid-or-table-or-for-each-in-vbcs/#comments</comments>
		
		<dc:creator><![CDATA[khalil]]></dc:creator>
		<pubDate>Sat, 07 Oct 2023 00:56:32 +0000</pubDate>
				<category><![CDATA[VBCS-Tutorials]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[OJET]]></category>
		<category><![CDATA[VBCS]]></category>
		<guid isPermaLink="false">https://khalil232.com/?p=171</guid>

					<description><![CDATA[While showing collections, we can use oj-table or oj-data-grid or we can use oj-for-each to display multiple values When we show some data which comes in API, and we don&#8217;t have to much grouping and all we can show as table If the data has few actions like approve or to update few columns like [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>While showing collections, we can use oj-table or oj-data-grid or we can use oj-for-each to display multiple values</p>



<p></p>



<p>When we show some data which comes in API, and we don&#8217;t have to much grouping and all we can show as table</p>



<p></p>



<p>If the data has few actions like approve or to update few columns like Quantity or Price or has some links to open in a page to view some more data or link to download some data we can use table </p>



<p></p>



<p>When we want to have a screen with large amount of data, where user will add multiple rows, edit like a excel instead of table we can use data grid. Data grid has better edit support than editable table. It is easy to handle edit events on data grid.</p>



<p></p>



<p>If we want to show summary based on some columns, like we are showing crick players information like number of sixes or total number of runs scored or total wickets taken per team, we can have player records and team records to show total. This will be better achieved with grid.</p>



<p></p>



<p>If we want to show People like data with images or some products like shirts, cars or something else where having a different look and feel, than table helps.</p>



<p></p>



<p>We can also provide option to change the view from table to grid to for-each</p>



<p></p>



<p></p>



<p>e.g.: </p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1024" height="577" src="https://i0.wp.com/khalil232.com/wp-content/uploads/2023/10/image.png?resize=1024%2C577&#038;ssl=1" alt="" class="wp-image-172" srcset="https://i0.wp.com/khalil232.com/wp-content/uploads/2023/10/image.png?resize=1024%2C577&amp;ssl=1 1024w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/10/image.png?resize=300%2C169&amp;ssl=1 300w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/10/image.png?resize=768%2C433&amp;ssl=1 768w, https://i0.wp.com/khalil232.com/wp-content/uploads/2023/10/image.png?w=1275&amp;ssl=1 1275w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<p>live link &#8211; <a href="https://khalil232.com/apps/ojet-apps/?ojr=collections-view-option">https://khalil232.com/apps/ojet-apps/?ojr=collections-view-option</a></p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://khalil232.com/vbcs-tutorials/171/when-to-use-grid-or-table-or-for-each-in-vbcs/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">171</post-id>	</item>
	</channel>
</rss>
