Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Show last modified date for each file in the explorer #124115

Closed
Total-Reality opened this issue May 18, 2021 · 16 comments
Closed

Show last modified date for each file in the explorer #124115

Total-Reality opened this issue May 18, 2021 · 16 comments
Assignees
Labels
feature-request Request for new features or functionality file-explorer Explorer widget issues *out-of-scope Posted issue is not in scope of VS Code
Milestone

Comments

@Total-Reality
Copy link

Please add the file date in the explorer window by default or by a new option in the settings.
It could be solved like here:
https://stackoverflow.com/questions/63381524/show-last-date-modified-in-vs-code

Alternative (luxury) variant: Adding a new option in the explorer to choose the attribute(s) which I like to see there, e.g.
date, file size, file type. It could look like Windows 10 a little bit:

windows-file

@isidorn isidorn added feature-request Request for new features or functionality file-explorer Explorer widget issues labels May 18, 2021
@isidorn
Copy link
Contributor

isidorn commented May 18, 2021

This is a fair feature request, however we do not have it on our immediate plan. Thus assigning to backlog for now. Thanks

@isidorn isidorn added this to the Backlog milestone May 18, 2021
@Total-Reality
Copy link
Author

This is a fair feature request, however we do not have it on our immediate plan. Thus assigning to backlog for now. Thanks

Thanks for your quick reply.
Can you solve this in the near future please? I can't work with vscode until this feature is realized.
I still need to work with PSPad because of this things :(
I have zero orientation in the file browser of vscode without any information about the files... I can't believe it is complicated to show the modified date and the file type e.g.

@isidorn isidorn added the *out-of-scope Posted issue is not in scope of VS Code label Aug 6, 2021
@Total-Reality
Copy link
Author

?????????

@mattdig
Copy link

mattdig commented Jul 7, 2022

Can this be un-closed? It's a fantastic feature idea. Being able to view & sort my files by size, type, and particularly date-modified in a large code base is very helpful.

@tannerbroberts
Copy link

I especially want it because I want to be able to tell what parts of the code base are being actively developed, and what have either died, or require maintenance.

@rjalexa
Copy link

rjalexa commented Jan 7, 2023

Upvote

@dogfella
Copy link

dogfella commented Mar 10, 2023

It's simply amazing that there is resistance to adding this feature. It's arguably THE most basic feature needed by ANY computer user. Not just a programmer. A granny 90 years old who uses the computer twice a year will use a file explorer to search for her family photos by date, or finding a letter she wrote last year addressing her Medicaid plans to stay alive.

So, It goes without saying that a programmer who manages hundreds of thousands of files or more with libraries and a complicated code base requires it at the top of their requirements. It's the only way a full stack coder can keep their sanity and not want to throw the computer through a window. With VS code, I find myself having to work on two screens with the weak Windows file explorer system open in another pane just to find what I need. Working on a single screen on a laptop, forget about it. You will spend half your day opening and closing windows if you are the manager and managing a large code base with a lot of files.

It's a total joke for VS Code to be so wonderful, but leave out something so basic and fundamental. It's like not having an on/off switch on a computer just to make a point. Or, an automotive manufacturer leaving out the ability to lock a car or forget installing an ignition switch.

The navigation system for any application is THE most important item in the application. Phone, web app, native application, you name it. It is number one on the list and the most often ignored item on the to do list.

Are you worried about indexing the folders and bogging the system? What gives?

@trendco
Copy link

trendco commented Jul 10, 2023

I also don't understand why this is not implemented yet. This is a standard function in all other editors i know. Without this function i can't use VSC either. I mostly work directly on an ftp server in directories with hundreds of files. Without sorting by date of last edit or sometimes by file size it is impossible there to work.
Very sad...

@lindamegner
Copy link

I fully agree, please please fix it! Is is sad (and extremely odd!) that this is missing from an otherwise stellar programming environment!

@jackmcarthur
Copy link

Would further like to pile on and point out that this is a necessity for large codebases under continued maintenance :)

@Total-Reality
Copy link
Author

Thank you for your answers :)
They will realize it in the future: #164033

@pari2017-max
Copy link

<title>YouTube Video Downloader and Player</title> <style> body { font-family: Arial, sans-serif; display: flex; flex-direction: column; align-items: center; height: 100vh; margin: 0; background-color: #333; color: #fff; } .container { width: 80%; max-width: 800px; text-align: center; } #player { width: 100%; max-width: 640px; margin: 20px 0; } input[type="text"] { width: 70%; padding: 10px; margin: 10px 0; } button { padding: 10px 20px; margin: 5px; background-color: #555; color: #fff; border: none; cursor: pointer; } button:hover { background-color: #777; } ul { list-style-type: none; padding: 0; } li { margin: 5px 0; } </style>

YouTube Video Downloader and Player

    <input type="text" id="videoUrl" placeholder="Enter YouTube URL">
    <button id="addToPlaylist">Add to Playlist</button>
    <button id="playVideo">Play Video</button>
    <button id="stopVideo">Stop Video</button>
    <button id="nextVideo">Next Video</button>

    <div id="player"></div>

    <ul id="playlist"></ul>

    <button id="downloadMP4">Download MP4</button>
    <button id="downloadMP3">Download MP3</button>
</div>

<!-- YouTube IFrame API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
    var player;
    var playlist = [];
    var currentVideoIndex = 0;

    // Load the IFrame Player API code asynchronously
    function onYouTubeIframeAPIReady() {
        player = new YT.Player('player', {
            height: '390',
            width: '640',
            playerVars: {
                'autoplay': 0,
                'controls': 1
            },
            events: {
                'onReady': onPlayerReady,
                'onStateChange': onPlayerStateChange
            }
        });
    }

    function onPlayerReady(event) {
        // Player is ready
    }

    function onPlayerStateChange(event) {
        // Handle player state changes
        if (event.data === YT.PlayerState.ENDED) {
            playNextVideo();
        }
    }

    document.getElementById('addToPlaylist').addEventListener('click', function() {
        var url = document.getElementById('videoUrl').value;
        var videoId = getYouTubeVideoId(url);
        if (videoId) {
            playlist.push(videoId);
            updatePlaylistDisplay();
        }
    });

    document.getElementById('playVideo').addEventListener('click', function() {
        if (playlist.length > 0) {
            playVideo(playlist[currentVideoIndex]);
        }
    });

    document.getElementById('stopVideo').addEventListener('click', function() {
        if (player) {
            player.stopVideo();
        }
    });

    document.getElementById('nextVideo').addEventListener('click', function() {
        playNextVideo();
    });

    document.getElementById('downloadMP4').addEventListener('click', function() {
        // Implement MP4 download functionality
    });

    document.getElementById('downloadMP3').addEventListener('click', function() {
        // Implement MP3 download functionality
    });

    function getYouTubeVideoId(url) {
        var videoId = url.split('v=')[1];
        if (videoId) {
            var ampersandPosition = videoId.indexOf('&');
            if (ampersandPosition != -1) {
                videoId = videoId.substring(0, ampersandPosition);
            }
            return videoId;
        }
        return null;
    }

    function playVideo(videoId) {
        if (player) {
            player.loadVideoById(videoId);
            player.playVideo();
        }
    }

    function playNextVideo() {
        if (playlist.length > 0) {
            currentVideoIndex = (currentVideoIndex + 1) % playlist.length;
            playVideo(playlist[currentVideoIndex]);
        }
    }

    function updatePlaylistDisplay() {
        var playlistElement = document.getElementById('playlist');
        playlistElement.innerHTML = '';
        playlist.forEach(function(videoId, index) {
            var listItem = document.createElement('li');
            listItem.textContent = 'Video ID: ' + videoId;
            playlistElement.appendChild(listItem);
        });
    }
</script>

@pari2017-max
Copy link

<input type="text" id="videoUrl" placeholder="Enter YouTube URL">
<button id="addToPlaylist">Add to Playlist</button>
<button id="playVideo">Play Video</button>
<button id="stopVideo">Stop Video</button>
<button id="nextVideo">Next Video</button>

<div id="player"></div>

<ul id="playlist"></ul>

<button id="downloadMP4">Download MP4</button>
<button id="downloadMP3">Download MP3</button>
<script src="https://www.youtube.com/iframe_api"></script> <script> var player; var playlist = []; var currentVideoIndex = 0; // Load the IFrame Player API code asynchronously function onYouTubeIframeAPIReady() { player = new YT.Player('player', { height: '390', width: '640', playerVars: { 'autoplay': 0, 'controls': 1 }, events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange } }); } function onPlayerReady(event) { // Player is ready } function onPlayerStateChange(event) { // Handle player state changes if (event.data === YT.PlayerState.ENDED) { playNextVideo(); } } document.getElementById('addToPlaylist').addEventListener('click', function() { var url = document.getElementById('videoUrl').value; var videoId = getYouTubeVideoId(url); if (videoId) { playlist.push(videoId); updatePlaylistDisplay(); } }); document.getElementById('playVideo').addEventListener('click', function() { if (playlist.length > 0) { playVideo(playlist[currentVideoIndex]); } }); document.getElementById('stopVideo').addEventListener('click', function() { if (player) { player.stopVideo(); } }); document.getElementById('nextVideo').addEventListener('click', function() { playNextVideo(); }); document.getElementById('downloadMP4').addEventListener('click', function() { // Implement MP4 download functionality }); document.getElementById('downloadMP3').addEventListener('click', function() { // Implement MP3 download functionality }); function getYouTubeVideoId(url) { var videoId = url.split('v=')[1]; if (videoId) { var ampersandPosition = videoId.indexOf('&'); if (ampersandPosition != -1) { videoId = videoId.substring(0, ampersandPosition); } return videoId; } return null; } function playVideo(videoId) { if (player) { player.loadVideoById(videoId); player.playVideo(); } } function playNextVideo() { if (playlist.length > 0) { currentVideoIndex = (currentVideoIndex + 1) % playlist.length; playVideo(playlist[currentVideoIndex]); } } function updatePlaylistDisplay() { var playlistElement = document.getElementById('playlist'); playlistElement.innerHTML = ''; playlist.forEach(function(videoId, index) { var listItem = document.createElement('li'); listItem.textContent = 'Video ID: ' + videoId; playlistElement.appendChild(listItem); }); } </script>

styles.css CODE

@pari2017-max
Copy link

<input type="text" id="videoUrl" placeholder="Enter YouTube URL">
<button id="addToPlaylist">Add to Playlist</button>
<button id="playVideo">Play Video</button>
<button id="stopVideo">Stop Video</button>
<button id="nextVideo">Next Video</button>

<div id="player"></div>

<ul id="playlist"></ul>

<button id="downloadMP4">Download MP4</button>
<button id="downloadMP3">Download MP3</button>
<script src="https://www.youtube.com/iframe_api"></script> <script> var player; var playlist = []; var currentVideoIndex = 0; // Load the IFrame Player API code asynchronously function onYouTubeIframeAPIReady() { player = new YT.Player('player', { height: '390', width: '640', playerVars: { 'autoplay': 0, 'controls': 1 }, events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange } }); } function onPlayerReady(event) { // Player is ready } function onPlayerStateChange(event) { // Handle player state changes if (event.data === YT.PlayerState.ENDED) { playNextVideo(); } } document.getElementById('addToPlaylist').addEventListener('click', function() { var url = document.getElementById('videoUrl').value; var videoId = getYouTubeVideoId(url); if (videoId) { playlist.push(videoId); updatePlaylistDisplay(); } }); document.getElementById('playVideo').addEventListener('click', function() { if (playlist.length > 0) { playVideo(playlist[currentVideoIndex]); } }); document.getElementById('stopVideo').addEventListener('click', function() { if (player) { player.stopVideo(); } }); document.getElementById('nextVideo').addEventListener('click', function() { playNextVideo(); }); document.getElementById('downloadMP4').addEventListener('click', function() { // Implement MP4 download functionality }); document.getElementById('downloadMP3').addEventListener('click', function() { // Implement MP3 download functionality }); function getYouTubeVideoId(url) { var videoId = url.split('v=')[1]; if (videoId) { var ampersandPosition = videoId.indexOf('&'); if (ampersandPosition != -1) { videoId = videoId.substring(0, ampersandPosition); } return videoId; } return null; } function playVideo(videoId) { if (player) { player.loadVideoById(videoId); player.playVideo(); } } function playNextVideo() { if (playlist.length > 0) { currentVideoIndex = (currentVideoIndex + 1) % playlist.length; playVideo(playlist[currentVideoIndex]); } } function updatePlaylistDisplay() { var playlistElement = document.getElementById('playlist'); playlistElement.innerHTML = ''; playlist.forEach(function(videoId, index) { var listItem = document.createElement('li'); listItem.textContent = 'Video ID: ' + videoId; playlistElement.appendChild(listItem); }); } </script>

script.js CODE

@pari2017-max
Copy link

 <input type="text" id="videoUrl" placeholder="Enter YouTube URL">
<button id="addToPlaylist">Add to Playlist</button>
<button id="playVideo">Play Video</button>
<button id="stopVideo">Stop Video</button>
<button id="nextVideo">Next Video</button>

<div id="player"></div>

<ul id="playlist"></ul>

<button id="downloadMP4">Download MP4</button>
<button id="downloadMP3">Download MP3</button>
<script src="https://www.youtube.com/iframe_api"></script> <script> var player; var playlist = []; var currentVideoIndex = 0; // Load the IFrame Player API code asynchronously function onYouTubeIframeAPIReady() { player = new YT.Player('player', { height: '390', width: '640', playerVars: { 'autoplay': 0, 'controls': 1 }, events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange } }); } function onPlayerReady(event) { // Player is ready } function onPlayerStateChange(event) { // Handle player state changes if (event.data === YT.PlayerState.ENDED) { playNextVideo(); } } document.getElementById('addToPlaylist').addEventListener('click', function() { var url = document.getElementById('videoUrl').value; var videoId = getYouTubeVideoId(url); if (videoId) { playlist.push(videoId); updatePlaylistDisplay(); } }); document.getElementById('playVideo').addEventListener('click', function() { if (playlist.length > 0) { playVideo(playlist[currentVideoIndex]); } }); document.getElementById('stopVideo').addEventListener('click', function() { if (player) { player.stopVideo(); } }); document.getElementById('nextVideo').addEventListener('click', function() { playNextVideo(); }); document.getElementById('downloadMP4').addEventListener('click', function() { // Implement MP4 download functionality }); document.getElementById('downloadMP3').addEventListener('click', function() { // Implement MP3 download functionality }); function getYouTubeVideoId(url) { var videoId = url.split('v=')[1]; if (videoId) { var ampersandPosition = videoId.indexOf('&'); if (ampersandPosition != -1) { videoId = videoId.substring(0, ampersandPosition); } return videoId; } return null; } function playVideo(videoId) { if (player) { player.loadVideoById(videoId); player.playVideo(); } } function playNextVideo() { if (playlist.length > 0) { currentVideoIndex = (currentVideoIndex + 1) % playlist.length; playVideo(playlist[currentVideoIndex]); } } function updatePlaylistDisplay() { var playlistElement = document.getElementById('playlist'); playlistElement.innerHTML = ''; playlist.forEach(function(videoId, index) { var listItem = document.createElement('li'); listItem.textContent = 'Video ID: ' + videoId; playlistElement.appendChild(listItem); }); } </script>

convert.php

@pari2017-max
Copy link

<input type="text" id="videoUrl" placeholder="Enter YouTube URL">
<button id="addToPlaylist">Add to Playlist</button>
<button id="playVideo">Play Video</button>
<button id="stopVideo">Stop Video</button>
<button id="nextVideo">Next Video</button>

<div id="player"></div>

<ul id="playlist"></ul>

<button id="downloadMP4">Download MP4</button>
<button id="downloadMP3">Download MP3</button>
<script src="https://www.youtube.com/iframe_api"></script> <script> var player; var playlist = []; var currentVideoIndex = 0; // Load the IFrame Player API code asynchronously function onYouTubeIframeAPIReady() { player = new YT.Player('player', { height: '390', width: '640', playerVars: { 'autoplay': 0, 'controls': 1 }, events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange } }); } function onPlayerReady(event) { // Player is ready } function onPlayerStateChange(event) { // Handle player state changes if (event.data === YT.PlayerState.ENDED) { playNextVideo(); } } document.getElementById('addToPlaylist').addEventListener('click', function() { var url = document.getElementById('videoUrl').value; var videoId = getYouTubeVideoId(url); if (videoId) { playlist.push(videoId); updatePlaylistDisplay(); } }); document.getElementById('playVideo').addEventListener('click', function() { if (playlist.length > 0) { playVideo(playlist[currentVideoIndex]); } }); document.getElementById('stopVideo').addEventListener('click', function() { if (player) { player.stopVideo(); } }); document.getElementById('nextVideo').addEventListener('click', function() { playNextVideo(); }); document.getElementById('downloadMP4').addEventListener('click', function() { // Implement MP4 download functionality }); document.getElementById('downloadMP3').addEventListener('click', function() { // Implement MP3 download functionality }); function getYouTubeVideoId(url) { var videoId = url.split('v=')[1]; if (videoId) { var ampersandPosition = videoId.indexOf('&'); if (ampersandPosition != -1) { videoId = videoId.substring(0, ampersandPosition); } return videoId; } return null; } function playVideo(videoId) { if (player) { player.loadVideoById(videoId); player.playVideo(); } } function playNextVideo() { if (playlist.length > 0) { currentVideoIndex = (currentVideoIndex + 1) % playlist.length; playVideo(playlist[currentVideoIndex]); } } function updatePlaylistDisplay() { var playlistElement = document.getElementById('playlist'); playlistElement.innerHTML = ''; playlist.forEach(function(videoId, index) { var listItem = document.createElement('li'); listItem.textContent = 'Video ID: ' + videoId; playlistElement.appendChild(listItem); }); } </script>download.php

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature-request Request for new features or functionality file-explorer Explorer widget issues *out-of-scope Posted issue is not in scope of VS Code
Projects
None yet
Development

No branches or pull requests

11 participants